svn commit: samba r10821 - in trunk/source: . utils

jerry at samba.org jerry at samba.org
Fri Oct 7 12:41:43 GMT 2005


Author: jerry
Date: 2005-10-07 12:41:43 +0000 (Fri, 07 Oct 2005)
New Revision: 10821

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=10821

Log:
adding some updates to teh evelog record writer tool from Brian
Modified:
   trunk/source/Makefile.in
   trunk/source/utils/wr_eventlog.c


Changeset:
Modified: trunk/source/Makefile.in
===================================================================
--- trunk/source/Makefile.in	2005-10-07 12:30:46 UTC (rev 10820)
+++ trunk/source/Makefile.in	2005-10-07 12:41:43 UTC (rev 10821)
@@ -617,8 +617,7 @@
 		$(PASSDB_OBJ) $(SMBLDAP_OBJ) $(GROUPDB_OBJ)
 
 WR_EVENTLOG_OBJ	= utils/wr_eventlog.o rpc_server/srv_eventlog_lib.o \
-		$(PARAM_OBJ) \
-		$(LIB_NONSMBD_OBJ) \
+		$(PARAM_OBJ) $(LIB_NONSMBD_OBJ) 
 
 TALLOCTORT_OBJ = lib/talloctort.o $(PARAM_OBJ) $(LIB_NONSMBD_OBJ) libsmb/nterr.o
 

Modified: trunk/source/utils/wr_eventlog.c
===================================================================
--- trunk/source/utils/wr_eventlog.c	2005-10-07 12:30:46 UTC (rev 10820)
+++ trunk/source/utils/wr_eventlog.c	2005-10-07 12:41:43 UTC (rev 10821)
@@ -1,4 +1,25 @@
+/*
+ * Samba Unix/Linux SMB client utility 
+ * Write Eventlog records to a tdb
+ *
+ * Copyright (C) Brian Moran                2005.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
 
+
 #include "includes.h"
 
 #undef  DBGC_CLASS
@@ -6,52 +27,93 @@
 
 Eventlog_entry ee;
 
-int main( int argc, char **argv )
+extern int optind;
+extern char *optarg;
+
+int opt_debug = 0;
+
+static void usage( char *s )
 {
+	printf( "\nUsage: %s [-d] [-h] <Eventlog Name>\n", s );
+	printf( "\t-d\tturn debug on\n" );
+	printf( "\t-h\tdisplay help\n\n" );
+}
+
+static void display_eventlog_names( void )
+{
+	const char **elogs;
+	int i;
+
+	elogs = lp_eventlog_list(  );
+	printf( "Active eventlog names (from smb.conf):\n" );
+	printf( "--------------------------------------\n" );
+	for ( i = 0; elogs[i]; i++ ) {
+		printf( "\t%s\n", elogs[i] );
+	}
+}
+
+int main( int argc, char *argv[] )
+{
 	FILE *f1;
-	char linein[1024];
 
 	/* fixed constants are bad bad bad  */
+	char linein[1024];
 	char fname[1024];
-
 	BOOL is_eor;
-	int pret, i;
+	int pret, opt;
 	int rcnum;
-	int debug;
-	const char **elogs;
+	char *argfname, *exename;
 
+
 	TDB_CONTEXT *the_tdb;
 
-	debug = 1;		/* todo set this from getopts */
+	opt_debug = 0;		/* todo set this from getopts */
 
+
 	lp_load( dyn_CONFIGFILE, True, False, False );
 
-	if ( argc < 2 ) {
-		printf( "Usage %s <Eventlog Name>\n", argv[0] );
-		return -1;
+	exename = argv[0];
+
+	while ( ( opt = getopt( argc, argv, "dh" ) ) != -1 ) {
+		switch ( opt ) {
+		case 'h':
+			usage( argv[0] );
+			display_eventlog_names(  );
+			exit( 0 );
+			break;
+
+		case 'd':
+			opt_debug = 1;
+			break;
+		}
 	}
 
-	/* f1 = fopen("foo.txt","r"); */
+	argc -= optind;
+	argv += optind;
+
+	if ( argc < 1 ) {
+		usage( exename );
+		exit( 1 );
+	}
+
+
+
 	f1 = stdin;
+
 	if ( !f1 ) {
 		printf( "Can't open STDIN\n" );
 		return -1;
 	}
 
-	elogs = lp_eventlog_list(  );
 
-	if ( debug ) {
-		printf( "%s starting for [%s] ... valid eventlogs:\n",
-			argv[0], argv[1] );
-		for ( i = 0; elogs[i]; i++ ) {
-			printf( "%s\n", elogs[i] );
-		}
+	if ( opt_debug ) {
+		printf( "Starting %s for eventlog [%s]\n", exename, argv[0] );
+		display_eventlog_names(  );
 	}
 
-	/* todo - check for the eventlog name being passed as being something that smb.conf
-	   knows about -- and defer the open in case we have an chicken and egg issue */
+	argfname = argv[0];
 
-	if ( mk_tdbfilename( ( char * ) &fname, argv[1], sizeof( fname ) ) ) {
+	if ( mk_tdbfilename( ( char * ) &fname, argfname, sizeof( fname ) ) ) {
 		the_tdb = open_eventlog_tdb( lock_path( ( char * ) &fname ) );
 	} else {
 		printf( "can't open filename [%s]\n", fname );
@@ -62,11 +124,11 @@
 		printf( "can't open the eventlog TDB\n" );
 		return -1;
 	}
-	memset( &ee, 0, sizeof( Eventlog_entry ) );	/* MUST initialize between records */
+	ZERO_STRUCT( ee );	/* MUST initialize between records */
 	while ( !feof( f1 ) ) {
 		fgets( linein, sizeof( linein ) - 1, f1 );
 		linein[strlen( linein ) - 1] = 0;	/* whack the line delimiter */
-		if ( debug )
+		if ( opt_debug )
 			printf( "Read line [%s]\n", linein );
 
 		is_eor = False;
@@ -75,7 +137,7 @@
 		if ( is_eor ) {
 			fixup_eventlog_entry( &ee );
 
-			if ( debug )
+			if ( opt_debug )
 				printf( "record number [%d], tg [%d] , tw [%d]\n", ee.record.record_number, ee.record.time_generated, ee.record.time_written );
 
 			if ( ee.record.time_generated != 0 ) {
@@ -86,15 +148,15 @@
 							   &ee ) ) ) {
 					printf( "Can't write to the event log\n" );
 				} else {
-					if ( debug )
+					if ( opt_debug )
 						printf( "Wrote record %d\n",
 							rcnum );
 				}
 			} else {
-				if ( debug )
+				if ( opt_debug )
 					printf( "<null record>\n" );
 			}
-			memset( &ee, 0, sizeof( Eventlog_entry ) );	/* MUST initialize between records */
+			ZERO_STRUCT( ee );	/* MUST initialize between records */
 		}
 	}
 



More information about the samba-cvs mailing list