PERFORCE change 125132 for review
dongmei
dongmei at FreeBSD.org
Tue Aug 14 01:50:11 PDT 2007
http://perforce.freebsd.org/chv.cgi?CH=125132
Change 125132 by dongmei at dongmei2007 on 2007/08/14 08:49:24
padding the before submit
Affected files ...
.. //depot/projects/soc2007/dongmei-auditanalyzer/file_access.c#2 edit
.. //depot/projects/soc2007/dongmei-auditanalyzer/gtk/list_view.c#5 edit
.. //depot/projects/soc2007/dongmei-auditanalyzer/tsess.h#2 edit
Differences ...
==== //depot/projects/soc2007/dongmei-auditanalyzer/file_access.c#2 (text+ko) ====
@@ -101,4 +101,89 @@
buffer_init(ts->record_buffer, 1500);
return ts;
}
+/* Opens auditpipe and prepares a tsess struct.
+ */
+tsess* tsess_open_online(int *err, char **err_info,gboolean do_random)
+{
+ struct stat statb;
+ tsess *ts;
+ unsigned int i;
+ gboolean use_stdin = FALSE;
+ if (eth_stat(DEFAULT_AUDIT_TRAIL, &statb) < 0) {
+ *err = errno;
+ return NULL;
+ }
+ if (S_ISFIFO(statb.st_mode)) {
+ /*
+ * Opens of FIFOs are allowed only when not opening
+ * for random access.
+ *
+ * XXX - currently, we do seeking when trying to find
+ * out the file type, so we don't actually support
+ * opening FIFOs. However, we may eventually
+ * do buffering that allows us to do at least some
+ * file type determination even on pipes, so we
+ * allow FIFO opens and let things fail later when
+ * we try to seek.
+ */
+ if (do_random) {
+ *err = TSESS_ERR_RANDOM_OPEN_PIPE;
+ return NULL;
+ }
+ } else if (S_ISDIR(statb.st_mode)) {
+ /*
+ * Return different errors for "this is a directory"
+ * and "this is some random special file type", so
+ * the user can get a potentially more helpful error.
+ */
+ *err = EISDIR;
+ return NULL;
+ }
+
+ /*
+ * We need two independent descriptors for random access, so
+ * they have different file positions. If we're opening the
+ * standard input, we can only dup it to get additional
+ * descriptors, so we can't have two independent descriptors,
+ * and thus can't do random access.
+ */
+ errno = ENOMEM;
+ ts = g_malloc(sizeof(ts));
+ if (ts == NULL) {
+ *err = errno;
+ return NULL;
+ }
+
+ /* Open the file */
+ errno =TSESS_ERR_CANT_OPEN;
+ ts->fd = eth_open(DEFAULT_AUDIT_TRAIL, O_RDONLY|O_BINARY, 0000 /* no creation so don't matter */);
+ if (ts->fd < 0) {
+ *err = errno;
+ g_free(ts);
+ return NULL;
+ }
+ if (!(ts->fh = filed_open(ts->fd, "rb"))) {
+ *err = errno;
+ eth_close(ts->fd);
+ g_free(ts);
+ return NULL;
+ }
+
+ if (do_random) {
+ if (!(ts->random_fh = file_open(DEFAULT_AUDIT_TRAIL, "rb"))) {
+ *err = errno;
+ file_close(ts->fh);
+ g_free(ts);
+ return NULL;
+ }
+ } else
+ ts->random_fh = NULL;
+
+ /* initialization */
+ ts->data_offset = 0;
+
+ ts->record_buffer = g_malloc(sizeof(struct Buffer));
+ buffer_init(ts->record_buffer, 1500);
+ return ts;
+}
==== //depot/projects/soc2007/dongmei-auditanalyzer/gtk/list_view.c#5 (text+ko) ====
@@ -169,6 +169,23 @@
timestr[24] = '\0'; /* No new line */
return 0;
}
+void
+record_list_append_test(gint32 number)
+{
+ GtkTreeIter iter;
+ /* add data to the list store */
+
+ gtk_list_store_append (record_list, &iter);
+
+ gtk_list_store_set (record_list, &iter,
+ COLUMN_NUMBER, number,
+ COLUMN_CREATE_TIME,"",
+ COLUMN_MS,"",
+ COLUMN_EVENT,"",
+ COLUMN_VERSION,"",
+ COLUMN_RECORD_LEN,0,
+ -1);
+}
void
record_list_append(tokenstr_t *data,gint number)
==== //depot/projects/soc2007/dongmei-auditanalyzer/tsess.h#2 (text+ko) ====
@@ -4,6 +4,7 @@
#include <glib.h>
#define FILE_T FILE *
+#define DEFAULT_AUDIT_TRAIL "/dev/auditpipe"
typedef struct tsess {
FILE_T fh;
@@ -17,6 +18,7 @@
tsess* tsess_open_offline(const char *filename, int *err, char **err_info,gboolean do_random);
gint64 tsess_file_size(tsess *ts, int *err);
+tsess* tsess_open_online(int *err, char **err_info,gboolean do_random);
/*
* tsess error codes.
More information about the p4-projects
mailing list