[prev in list] [next in list] [prev in thread] [next in thread] 

List:       sysklogd
Subject:    patch syslogd to get rid of unnecessary #ifdefs
From:       "John Hughes" <john () calva ! com>
Date:       2001-10-25 14:11:53
[Download RAW message or body]

C'est un message de format MIME en plusieurs parties.


By re-instating the original linked list of filed structures
we can simplify the code and make it more like other versions
of syslogd.  Death to #ifdef!




["syslogd-patch.txt" (text/plain)]

--- syslogd.c.old	Thu Oct 25 15:53:18 2001
+++ syslogd.c	Thu Oct 25 16:01:12 2001
@@ -556,7 +556,6 @@
 
 int inetm = 0;
 static int debugging_on = 0;
-static int nlogs = -1;
 static int restart = 0;
 
 #define MAXFUNIX	20
@@ -616,9 +615,7 @@
  */
 
 struct filed {
-#ifndef SYSV
 	struct	filed *f_next;		/* next in linked list */
-#endif
 	short	f_type;			/* entry type, see below */
 	short	f_file;			/* file descriptor */
 	time_t	f_time;			/* time this was last written */
@@ -777,7 +774,6 @@
 #define dprintf mydprintf
 #endif /* __GLIBC__ */
 static void dprintf(char *, ...);
-static void allocate_log(void);
 void sighup_handler();
 
 #ifdef SYSLOG_UNIXAF
@@ -1549,7 +1545,7 @@
 	int flags;
 {
 	register struct filed *f;
-	int fac, prilev, lognum;
+	int fac, prilev;
 	int msglen;
 	char *timestamp;
 
@@ -1599,12 +1595,7 @@
 #endif
 		return;
 	}
-#ifdef SYSV
-	for (lognum = 0; lognum <= nlogs; lognum++) {
-		f = &Files[lognum];
-#else
 	for (f = Files; f; f = f->f_next) {
-#endif
 
 		/* skip messages that are incorrect priority */
 		if ( (f->f_pmask[fac] == TABLE_NOPRI) || \
@@ -2078,9 +2069,6 @@
 void domark()
 {
 	register struct filed *f;
-#ifdef SYSV
-	int lognum;
-#endif
 
 	if (MarkInterval > 0) {
 	now = time(0);
@@ -2090,12 +2078,7 @@
 		MarkSeq = 0;
 	}
 
-#ifdef SYSV
-	for (lognum = 0; lognum <= nlogs; lognum++) {
-		f = &Files[lognum];
-#else
 	for (f = Files; f; f = f->f_next) {
-#endif
 		if (f->f_prevcount && now >= REPEATTIME(f)) {
 			dprintf("flush %s: repeated %d times, %d sec.\n",
 			    TypeNames[f->f_type], f->f_prevcount,
@@ -2144,15 +2127,13 @@
 {
 	register struct filed *f;
 	char buf[100];
-	int lognum;
 	int i;
 	int was_initialized = Initialized;
 
 	Initialized = 0;	/* Don't log SIGCHLDs in case we
 				   receive one during exiting */
 
-	for (lognum = 0; lognum <= nlogs; lognum++) {
-		f = &Files[lognum];
+	for (f = Files; f; f = f->f_next) {
 		/* flush any pending output */
 		if (f->f_prevcount)
 			fprintlog(f, LocalHostName, 0, (char *)NULL);
@@ -2200,14 +2181,11 @@
 
 void init()
 {
-	register int i, lognum;
+	register int i;
 	register FILE *cf;
 	register struct filed *f;
-#ifndef TESTING
-#ifndef SYSV
-	register struct filed **nextp = (struct filed **) 0;
-#endif
-#endif
+	register struct filed **nextp = &Files;
+	register struct filed *next;
 	register char *p;
 	register unsigned int Forwarding = 0;
 #ifdef CONT_LINE
@@ -2232,60 +2210,44 @@
 	 */
 	dprintf("Called init.\n");
 	Initialized = 0;
-	if ( nlogs > -1 )
-	{
-		dprintf("Initializing log structures.\n");
 
-		for (lognum = 0; lognum <= nlogs; lognum++ ) {
-			f = &Files[lognum];
+	dprintf("Initializing log structures.\n");
+	for (f = Files; f; f = next) {
 
-			/* flush any pending output */
-			if (f->f_prevcount)
-				fprintlog(f, LocalHostName, 0, (char *)NULL);
+		/* flush any pending output */
+		if (f->f_prevcount)
+			fprintlog(f, LocalHostName, 0, (char *)NULL);
 
-			switch (f->f_type) {
-				case F_FILE:
-				case F_PIPE:
-				case F_TTY:
-				case F_CONSOLE:
-					(void) close(f->f_file);
-				break;
-			}
+		switch (f->f_type) {
+			case F_FILE:
+			case F_PIPE:
+			case F_TTY:
+			case F_CONSOLE:
+				(void) close(f->f_file);
+			break;
 		}
 
-		/*
-		 * This is needed especially when HUPing syslogd as the
-		 * structure would grow infinitively.  -Joey
-		 */
-		nlogs = -1;
-		free((void *) Files);
-		Files = (struct filed *) 0;
+		next = f->f_next;
+		free (f);
 	}
-	
 
-#ifdef SYSV
-	lognum = 0;
-#else
-	f = NULL;
-#endif
+	Files = NULL;
 
 	/* open the configuration file */
 	if ((cf = fopen(ConfFile, "r")) == NULL) {
 		dprintf("cannot open %s.\n", ConfFile);
-#ifdef SYSV
-		allocate_log();
-		f = &Files[lognum++];
-#ifndef TESTING
-		cfline("*.err\t" _PATH_CONSOLE, f);
-#else
+		f = (struct filed *)calloc(1, sizeof(*f));
+		*nextp = f;
+		nextp = &f->f_next;
+#ifdef TESTING
 		snprintf(cbuf,sizeof(cbuf), "*.*\t%s", ttyname(0));
 		cfline(cbuf, f);
-#endif
 #else
-		*nextp = (struct filed *)calloc(1, sizeof(*f));
-		cfline("*.ERR\t" _PATH_CONSOLE, *nextp);
-		(*nextp)->f_next = (struct filed *)calloc(1, sizeof(*f))	/* ASP */
-		cfline("*.PANIC\t*", (*nextp)->f_next);
+		cfline("*.err\t" _PATH_CONSOLE, f);
+		f = (struct filed *)calloc(1, sizeof(*f)); /* ASP */
+		*nextp = f;
+		nextp = &f->f_next;
+		cfline("*.PANIC\t*", f);
 #endif
 		Initialized = 1;
 		return;
@@ -2325,13 +2287,9 @@
 			cline = cbuf;
 #endif
 		*++p = '\0';
-#ifndef SYSV
 		f = (struct filed *)calloc(1, sizeof(*f));
 		*nextp = f;
 		nextp = &f->f_next;
-#endif
-		allocate_log();
-		f = &Files[lognum++];
 #if CONT_LINE
 		cfline(cbuf, f);
 #else
@@ -2379,15 +2337,11 @@
 	Initialized = 1;
 
 	if ( Debug ) {
-#ifdef SYSV
-		for (lognum = 0; lognum <= nlogs; lognum++) {
-			f = &Files[lognum];
+		int lognum = 0;
+
+		for (f = Files; f; f = f->f_next, ++lognum) {
 			if (f->f_type != F_UNUSED) {
 				printf ("%2d: ", lognum);
-#else
-		for (f = Files; f; f = f->f_next) {
-			if (f->f_type != F_UNUSED) {
-#endif
 				for (i = 0; i <= LOG_NFACILITIES; i++)
 					if (f->f_pmask[i] == TABLE_NOPRI)
 						printf(" X ");
@@ -2744,53 +2698,6 @@
 	fflush(stdout);
 	return;
 }
-
-
-/*
- * The following function is responsible for allocating/reallocating the
- * array which holds the structures which define the logging outputs.
- */
-static void allocate_log()
-
-{
-	dprintf("Called allocate_log, nlogs = %d.\n", nlogs);
-	
-	/*
-	 * Decide whether the array needs to be initialized or needs to
-	 * grow.
-	 */
-	if ( nlogs == -1 )
-	{
-		Files = (struct filed *) malloc(sizeof(struct filed));
-		if ( Files == (void *) 0 )
-		{
-			dprintf("Cannot initialize log structure.");
-			logerror("Cannot initialize log structure.");
-			return;
-		}
-	}
-	else
-	{
-		/* Re-allocate the array. */
-		Files = (struct filed *) realloc(Files, (nlogs+2) * \
-						  sizeof(struct filed));
-		if ( Files == (struct filed *) 0 )
-		{
-			dprintf("Cannot grow log structure.");
-			logerror("Cannot grow log structure.");
-			return;
-		}
-	}
-	
-	/*
-	 * Initialize the array element, bump the number of elements in the
-	 * the array and return.
-	 */
-	++nlogs;
-	memset(&Files[nlogs], '\0', sizeof(struct filed));
-	return;
-}
-
 
 /*
  * The following function is resposible for handling a SIGHUP signal.  Since

-- 
To UNSUBSCRIBE, send an email to sysklogd-request@lists.infodrom.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.infodrom.org


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic