Annotation of 43BSD/usr.bin/uucp/logent.c, revision 1.1

1.1     ! root        1: #ifndef lint
        !             2: static char sccsid[] = "@(#)logent.c   5.6 (Berkeley) 10/9/85";
        !             3: #endif
        !             4: 
        !             5: #include "uucp.h"
        !             6: #ifdef BSD4_2
        !             7: #include <sys/time.h>
        !             8: #else
        !             9: #include <time.h>
        !            10: #endif
        !            11: #if defined(USG) || defined(BSD4_2)
        !            12: #include <fcntl.h>
        !            13: #endif
        !            14: 
        !            15: static FILE *Lp = NULL;
        !            16: static FILE *Sp = NULL;
        !            17: static Ltried = 0;
        !            18: static Stried = 0;
        !            19: 
        !            20: /*LINTLIBRARY*/
        !            21: 
        !            22: /*
        !            23:  *     make log entry
        !            24:  */
        !            25: logent(text, status)
        !            26: char *text, *status;
        !            27: {
        !            28: #ifdef LOGBYSITE
        !            29:        char lfile[MAXFULLNAME];
        !            30:        static char LogRmtname[64];
        !            31: #endif LOGBYSITE
        !            32:        if (Rmtname[0] == '\0')
        !            33:                strcpy(Rmtname, Myname);
        !            34:        /* Open the log file if necessary */
        !            35: #ifdef LOGBYSITE
        !            36:        if (strcmp(Rmtname, LogRmtname)) {
        !            37:                if (Lp != NULL)
        !            38:                        fclose(Lp);
        !            39:                Lp = NULL;
        !            40:                Ltried = 0;
        !            41:        }
        !            42: #endif LOGBYSITE
        !            43:        if (Lp == NULL) {
        !            44:                if (!Ltried) {
        !            45:                        int savemask;
        !            46: #ifdef F_SETFL
        !            47:                        int flags;
        !            48: #endif
        !            49:                        savemask = umask(LOGMASK);
        !            50: #ifdef LOGBYSITE
        !            51:                        (void) sprintf(lfile, "%s/%s/%s", LOGBYSITE, Progname, Rmtname);
        !            52:                        strcpy(LogRmtname, Rmtname);
        !            53:                        Lp = fopen (lfile, "a");
        !            54: #else !LOGBYSITE
        !            55:                        Lp = fopen (LOGFILE, "a");
        !            56: #endif LOGBYSITE
        !            57:                        umask(savemask);
        !            58: #ifdef F_SETFL
        !            59:                        flags = fcntl(fileno(Lp), F_GETFL, 0);
        !            60:                        fcntl(fileno(Lp), F_SETFL, flags|O_APPEND);
        !            61: #endif
        !            62:                }
        !            63:                Ltried = 1;
        !            64:                if (Lp == NULL)
        !            65:                        return;
        !            66:                fioclex(fileno(Lp));
        !            67:        }
        !            68: 
        !            69:        /*  make entry in existing temp log file  */
        !            70:        mlogent(Lp, status, text);
        !            71: }
        !            72: 
        !            73: /*
        !            74:  *     make a log entry
        !            75:  */
        !            76: 
        !            77: mlogent(fp, status, text)
        !            78: char *text, *status;
        !            79: register FILE *fp;
        !            80: {
        !            81:        static pid = 0;
        !            82:        register struct tm *tp;
        !            83:        extern struct tm *localtime();
        !            84: 
        !            85:        if (text == NULL)
        !            86:                text = "";
        !            87:        if (status == NULL)
        !            88:                status = "";
        !            89:        if (!pid)
        !            90:                pid = getpid();
        !            91: #ifdef USG
        !            92:        time(&Now.time);
        !            93:        Now.millitm = 0;
        !            94: #else !USG
        !            95:        ftime(&Now);
        !            96: #endif !USG
        !            97:        tp = localtime(&Now.time);
        !            98: #ifdef USG
        !            99:        fprintf(fp, "%s %s (%d/%d-%2.2d:%2.2d-%d) ",
        !           100: #else !USG
        !           101:        fprintf(fp, "%s %s (%d/%d-%02d:%02d-%d) ",
        !           102: #endif !USG
        !           103:                User, Rmtname, tp->tm_mon + 1, tp->tm_mday,
        !           104:                tp->tm_hour, tp->tm_min, pid);
        !           105:        fprintf(fp, "%s (%s)\n", status, text);
        !           106: 
        !           107:        /* Since it's buffered */
        !           108: #ifndef F_SETFL
        !           109:        lseek (fileno(fp), (long)0, 2);
        !           110: #endif !F_SETFL
        !           111:        fflush (fp);
        !           112:        if (Debug) {
        !           113:                fprintf(stderr, "%s %s ", User, Rmtname);
        !           114: #ifdef USG
        !           115:                fprintf(stderr, "(%d/%d-%2.2d:%2.2d-%d) ", tp->tm_mon + 1,
        !           116:                        tp->tm_mday, tp->tm_hour, tp->tm_min, pid);
        !           117: #else !USG
        !           118:                fprintf(stderr, "(%d/%d-%02d:%02d-%d) ", tp->tm_mon + 1,
        !           119:                        tp->tm_mday, tp->tm_hour, tp->tm_min, pid);
        !           120: #endif !USG
        !           121:                fprintf(stderr, "%s (%s)\n", status, text);
        !           122:        }
        !           123: }
        !           124: 
        !           125: /*
        !           126:  *     close log file
        !           127:  */
        !           128: logcls()
        !           129: {
        !           130:        if (Lp != NULL)
        !           131:                fclose(Lp);
        !           132:        Lp = NULL;
        !           133:        Ltried = 0;
        !           134: 
        !           135:        if (Sp != NULL)
        !           136:                fclose (Sp);
        !           137:        Sp = NULL;
        !           138:        Stried = 0;
        !           139: }
        !           140: 
        !           141: 
        !           142: /*
        !           143:  *     make system log entry
        !           144:  */
        !           145: syslog(text)
        !           146: char *text;
        !           147: {
        !           148:        register struct tm *tp;
        !           149:        extern struct tm *localtime();
        !           150: #ifdef LOGBYSITE
        !           151:        char lfile[MAXFULLNAME];
        !           152:        static char SLogRmtname[64];
        !           153: 
        !           154:        if (strcmp(Rmtname, SLogRmtname)) {
        !           155:                if (Sp != NULL)
        !           156:                        fclose(Sp);
        !           157:                Sp = NULL;
        !           158:                Stried = 0;
        !           159:        }
        !           160: #endif LOGBYSITE
        !           161:        if (Sp == NULL) {
        !           162:                if (!Stried) {
        !           163:                        int savemask;
        !           164: #ifdef F_SETFL
        !           165:                        int flags;
        !           166: #endif F_SETFL
        !           167:                        savemask = umask(LOGMASK);
        !           168: #ifdef LOGBYSITE
        !           169:                        (void) sprintf(lfile, "%s/xferstats/%s", LOGBYSITE, Rmtname);
        !           170:                        strcpy(SLogRmtname, Rmtname);
        !           171:                        Sp = fopen (lfile, "a");
        !           172: #else !LOGBYSITE
        !           173:                        Sp = fopen (SYSLOG, "a");
        !           174: #endif LOGBYSITE
        !           175:                        umask(savemask);
        !           176: #ifdef F_SETFL
        !           177:                        flags = fcntl(fileno(Sp), F_GETFL, 0);
        !           178:                        fcntl(fileno(Sp), F_SETFL, flags|O_APPEND);
        !           179: #endif F_SETFL
        !           180: 
        !           181:                }
        !           182:                Stried = 1;
        !           183:                if (Sp == NULL)
        !           184:                        return;
        !           185:                fioclex(fileno(Sp));
        !           186:        }
        !           187: 
        !           188: #ifdef USG
        !           189:        time(&Now.time);
        !           190:        Now.millitm = 0;
        !           191: #else !USG
        !           192:        ftime(&Now);
        !           193: #endif !USG
        !           194:        tp = localtime(&Now.time);
        !           195: 
        !           196:        fprintf(Sp, "%s %s ", User, Rmtname);
        !           197: #ifdef USG
        !           198:        fprintf(Sp, "(%d/%d-%2.2d:%2.2d) ", tp->tm_mon + 1,
        !           199:                tp->tm_mday, tp->tm_hour, tp->tm_min);
        !           200:        fprintf(Sp, "(%ld) %s\n", Now.time, text);
        !           201: #else !USG
        !           202:        fprintf(Sp, "(%d/%d-%02d:%02d) ", tp->tm_mon + 1,
        !           203:                tp->tm_mday, tp->tm_hour, tp->tm_min);
        !           204:        fprintf(Sp, "(%ld.%02u) %s\n", Now.time, Now.millitm/10, text);
        !           205: #endif !USG
        !           206: 
        !           207:        /* Position at end and flush */
        !           208: #ifndef F_SETFL
        !           209:        lseek (fileno(Sp), (long)0, 2);
        !           210: #endif F_SETFL
        !           211:        fflush (Sp);
        !           212: }
        !           213: 
        !           214: /*
        !           215:  * Arrange to close fd on exec(II).
        !           216:  * Otherwise unwanted file descriptors are inherited
        !           217:  * by other programs.  And that may be a security hole.
        !           218:  */
        !           219: #ifndef        USG
        !           220: #include <sgtty.h>
        !           221: #endif
        !           222: 
        !           223: fioclex(fd)
        !           224: int fd;
        !           225: {
        !           226:        register int ret;
        !           227: 
        !           228: #if defined(USG) || defined(BSD4_2)
        !           229:        ret = fcntl(fd, F_SETFD, 1);    /* Steve Bellovin says this does it */
        !           230: #else
        !           231:        ret = ioctl(fd, FIOCLEX, STBNULL);
        !           232: #endif
        !           233:        if (ret)
        !           234:                DEBUG(2, "CAN'T FIOCLEX %d\n", fd);
        !           235: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.