diff options
author | julian <julian@FreeBSD.org> | 1996-10-23 20:17:57 +0000 |
---|---|---|
committer | julian <julian@FreeBSD.org> | 1996-10-23 20:17:57 +0000 |
commit | b9fc5c00e59d52cfef8c165e6a7db0fb77338e50 (patch) | |
tree | f7816c581db6e00bc12246c3dac05c8d0b627c85 /usr.sbin/syslogd/syslogd.c | |
parent | 4efe54c82944db41f906033ed7dd3f733cd641db (diff) | |
download | FreeBSD-src-b9fc5c00e59d52cfef8c165e6a7db0fb77338e50.zip FreeBSD-src-b9fc5c00e59d52cfef8c165e6a7db0fb77338e50.tar.gz |
Reviewed by: various (mailing list feedback)
Submitted by: whistle communications
move the socket from /dev to /var/run by default
TRANSITIONALLY make syslog add a symlink..
I PROMISE I'll remove that as soon as I have the makefiles etc fixed as well.
Diffstat (limited to 'usr.sbin/syslogd/syslogd.c')
-rw-r--r-- | usr.sbin/syslogd/syslogd.c | 47 |
1 files changed, 45 insertions, 2 deletions
diff --git a/usr.sbin/syslogd/syslogd.c b/usr.sbin/syslogd/syslogd.c index 8bff619..5dbfa06 100644 --- a/usr.sbin/syslogd/syslogd.c +++ b/usr.sbin/syslogd/syslogd.c @@ -39,7 +39,7 @@ static const char copyright[] = static char sccsid[] = "@(#)syslogd.c 8.3 (Berkeley) 4/4/94"; */ static const char rcsid[] = - "$Id: syslogd.c,v 1.9 1996/07/22 16:35:50 pst Exp $"; + "$Id: syslogd.c,v 1.10 1996/10/05 15:20:51 peter Exp $"; #endif /* not lint */ /* @@ -104,11 +104,14 @@ static const char rcsid[] = #define SYSLOG_NAMES #include <sys/syslog.h> - const char *LogName = _PATH_LOG; const char *ConfFile = _PATH_LOGCONF; const char *PidFile = _PATH_LOGPID; const char ctty[] = _PATH_CONSOLE; +#if defined _OLD_PATH_LOG +int alt_fifo; +const char *OldLogName = _OLD_PATH_LOG; +#endif #define FDMASK(fd) (1 << (fd)) @@ -240,6 +243,9 @@ main(argc, argv) break; case 'p': /* path */ LogName = optarg; +#if defined _OLD_PATH_LOG + alt_fifo = 1; +#endif break; case 'I': /* backwards compatible w/FreeBSD */ case 's': /* no network mode */ @@ -292,6 +298,43 @@ main(argc, argv) } else created_lsock = 1; +#if defined(_OLD_PATH_LOG) +#define LNKSZ 128 + /* + * don't make a link for the old fifo name if we are just testing + * (presumably the real syslogd might be using it) + */ + if (! alt_fifo ) { + struct stat statb; + char linkbuf[LNKSZ+1]; + + linkbuf[LNKSZ + 1] = '\0'; + if(stat(OldLogName,&statb) == 0) { + switch(statb.st_mode & S_IFMT) { + case S_IFLNK: + /* + * if it's already corrct leave it + * (great for ro filesystems) + */ + if((readlink(OldLogName, linkbuf, LNKSZ) > 0) + && (! strcmp(OldLogName,linkbuf))) + goto linkok; + case S_IFIFO: + /* if the unlink fails the symlink will too */ + unlink(OldLogName); + } + } + if(symlink(LogName,OldLogName)) { + (void) sprintf(line, + "cannot create symlink %s, continuing.", + OldLogName); + logerror(line); + dprintf("warning: cannot create symlink %s (%d)\n", + OldLogName, errno); + } + } +linkok: +#endif if (!SecureMode) finet = socket(AF_INET, SOCK_DGRAM, 0); else |