be careful with measure file pointer, multiple quits can cause problems
authorJim Bloom <bloom@ucbvax.Berkeley.EDU>
Fri, 6 Jun 1986 05:56:42 +0000 (21:56 -0800)
committerJim Bloom <bloom@ucbvax.Berkeley.EDU>
Fri, 6 Jun 1986 05:56:42 +0000 (21:56 -0800)
SCCS-vsn: usr.sbin/timed/timed/master.c 2.14
SCCS-vsn: usr.sbin/timed/timed/slave.c 2.16

usr/src/usr.sbin/timed/timed/master.c
usr/src/usr.sbin/timed/timed/slave.c

index 338e9cd..3b58835 100644 (file)
@@ -5,7 +5,7 @@
  */
 
 #ifndef lint
  */
 
 #ifndef lint
-static char sccsid[] = "@(#)master.c   2.13 (Berkeley) %G%";
+static char sccsid[] = "@(#)master.c   2.14 (Berkeley) %G%";
 #endif not lint
 
 #include "globals.h"
 #endif not lint
 
 #include "globals.h"
@@ -22,8 +22,7 @@ extern u_short sequence;
 
 #ifdef MEASURE
 int header;
 
 #ifdef MEASURE
 int header;
-char *fi;
-FILE *fp;
+FILE *fp = NULL;
 #endif
 
 /*
 #endif
 
 /*
@@ -55,9 +54,10 @@ master()
        register struct netinfo *ntp;
 
 #ifdef MEASURE
        register struct netinfo *ntp;
 
 #ifdef MEASURE
-       fi = "/usr/adm/timed.masterlog";
-       fp = fopen(fi, "w");
-       setlinebuf(fp);
+       if (fp == NULL) {
+               fp = fopen("/usr/adm/timed.masterlog", "w");
+               setlinebuf(fp);
+       }
 #endif
 
        syslog(LOG_INFO, "This machine is master");
 #endif
 
        syslog(LOG_INFO, "This machine is master");
@@ -233,7 +233,10 @@ loop:
                case TSP_QUIT:
                        /* become slave */
 #ifdef MEASURE
                case TSP_QUIT:
                        /* become slave */
 #ifdef MEASURE
-                       (void)fclose(fp);
+                       if (fp != NULL) {
+                               (void)fclose(fp);
+                               fp = NULL;
+                       }
 #endif
                        longjmp(jmpenv, 2);
                        break;
 #endif
                        longjmp(jmpenv, 2);
                        break;
index b22e07a..603fbf7 100644 (file)
@@ -5,7 +5,7 @@
  */
 
 #ifndef lint
  */
 
 #ifndef lint
-static char sccsid[] = "@(#)slave.c    2.15 (Berkeley) %G%";
+static char sccsid[] = "@(#)slave.c    2.16 (Berkeley) %G%";
 #endif not lint
 
 #include "globals.h"
 #endif not lint
 
 #include "globals.h"
@@ -40,7 +40,6 @@ slave()
        extern int Mflag;
        extern int justquit;
 #ifdef MEASURE
        extern int Mflag;
        extern int justquit;
 #ifdef MEASURE
-       int tempstat;
        extern FILE *fp;
 #endif
        if (slavenet) {
        extern FILE *fp;
 #endif
        if (slavenet) {
@@ -57,8 +56,10 @@ slave()
 
        if (status & MASTER) {
 #ifdef MEASURE
 
        if (status & MASTER) {
 #ifdef MEASURE
-               fp = fopen("/usr/adm/timed.masterlog", "w");
-               setlinebuf(fp);
+               if (fp == NULL) {
+                       fp = fopen("/usr/adm/timed.masterlog", "w");
+                       setlinebuf(fp);
+               }
 #endif
                syslog(LOG_INFO, "THIS MACHINE IS A SUBMASTER");
                if (trace) {
 #endif
                syslog(LOG_INFO, "THIS MACHINE IS A SUBMASTER");
                if (trace) {
@@ -111,15 +112,13 @@ loop:
                                                ntp->status = IGNORE;
                                }
                        }
                                                ntp->status = IGNORE;
                                }
                        }
-#ifdef MEASURE
-                       tempstat = status;
-#endif
                        setstatus();
 #ifdef MEASURE
                        /*
                         * Check to see if we just became master
                        setstatus();
 #ifdef MEASURE
                        /*
                         * Check to see if we just became master
+                        * (file not open)
                         */
                         */
-                       if ((status & MASTER) && !(tempstat & MASTER)) {
+                       if (fp == NULL) {
                                fp = fopen("/usr/adm/timed.masterlog", "w");
                                setlinebuf(fp);
                        }
                                fp = fopen("/usr/adm/timed.masterlog", "w");
                                setlinebuf(fp);
                        }
@@ -435,7 +434,10 @@ loop:
                case TSP_QUIT:
                        /* become slave */
 #ifdef MEASURE
                case TSP_QUIT:
                        /* become slave */
 #ifdef MEASURE
-                       (void)fclose(fp);
+                       if (fp != NULL) {
+                               (void)fclose(fp);
+                               fp = NULL;
+                       }
 #endif
                        longjmp(jmpenv, 2);
                        break;
 #endif
                        longjmp(jmpenv, 2);
                        break;