diff options
author | Ulrich Drepper <drepper@redhat.com> | 1996-08-09 02:46:09 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 1996-08-09 02:46:09 +0000 |
commit | a5113b141cd85a98b4711607c430e6e01775bd9a (patch) | |
tree | 5e345c0560b177c68320fa8a467215352996bb35 /misc | |
parent | 233963756b2ef272f8876afec2a2bb629b425e0c (diff) | |
download | glibc-a5113b141cd85a98b4711607c430e6e01775bd9a.tar glibc-a5113b141cd85a98b4711607c430e6e01775bd9a.tar.gz glibc-a5113b141cd85a98b4711607c430e6e01775bd9a.tar.bz2 glibc-a5113b141cd85a98b4711607c430e6e01775bd9a.zip |
Thu Aug 8 16:17:38 1996 Ulrich Drepper <drepper@cygnus.com>
* pwd/getpwent.c: Define BUFLEN from NSS_BUFLEN_PASSWD.
* pwd/getpwent_r.c: Likewise.
* pwd/getpwnam.c: Likewise.
* pwd/getpwnam_r.c: Likewise.
* pwd/getpwuid.c: Likewise.
* pwd/getpwuid_r.c: Likewise.
* grp/getgrent.c: Define BUFLEN from NSS_BUFLEN_GROUP.
* grp/getgrent_r.c: Likewise.
* grp/getgrgid.c: Likewise.
* grp/getgrgid_r.c: Likewise.
* grp/getgrnam.c: Likewise.
* pwd/fgetpwent_r.c: New file. Reentrant version of fgetpwent.
* pwd/fgetpwent.c: Rewrite to use fgetpwent_r.
* pwd/Makefile (routines): Add fgetpwent_r.
* pwd/pwd.h: Add prototypes for __fgetpwent_r and fgetpwent_r.
* grp/fgetgrent_r.c: New file. Reentrant version of fgetgrent.
* grp/fgetgrent.c: Rewrite to use fgetgrent_r.
* grp/Makefile (routines): Add fgetgrent_r.
* grp/grp.h: Add prototypes for __fgetgrent_r and fgetgrent_r.
Implement shadow password lookup functions. This is no complete
shadow password suite.
* shadow/Makefile: New file.
* shadow/fgetspent.c: New file.
* shadow/fgetspent_r.c: New file.
* shadow/getspent.c: New file.
* shadow/getspent_r.c: New file.
* shadow/getspnam.c: New file.
* shadow/getspnam_r.c: New file.
* shadow/putspent.c: New file.
* shadow/sgetspent.c: New file.
* shadow/sgetspent_r.c: New file.
* shadow/shadow.h: New file.
* shadow/spwd-lookup.c: New file.
* shadow/nss_files/files-spwd.c: New file.
Thu Aug 8 13:33:45 1996 Ulrich Drepper <drepper@cygnus.com>
* sysdeps/unix/sysv/linux/ftime.c: New file. Available system
call is only a stub.
Reported by Matthias Urlichs.
* Makeconfig [!default_cflags]: Change default value from `-g'
to `-g -O'.
* configure.in: Recognize i686.
* sysdeps/i386/i686/Implies: Default on i586 optimized code.
Thu Aug 8 12:40:20 1996 Matthias Urlichs <smurf@smurf.noris.de>
* Makeconfig [$(build-omitfp) == yes]: Add to CFLAGS-.so
value of CFLAGS-.o, not CFLAGS-o.
* sysdeps/unix/sysv/linux/init-first.c (init): Add volatile
pointer to ourself. Otherwise `gcc -O3' optimized init away.
sure that all tables in binary file are word-aligned.
Diffstat (limited to 'misc')
-rw-r--r-- | misc/Makefile | 4 | ||||
-rw-r--r-- | misc/sys/select.h | 2 | ||||
-rw-r--r-- | misc/sys/ustat.h | 8 | ||||
-rw-r--r-- | misc/syslog.c | 51 |
4 files changed, 45 insertions, 20 deletions
diff --git a/misc/Makefile b/misc/Makefile index 01e223836f..1631b2121d 100644 --- a/misc/Makefile +++ b/misc/Makefile @@ -28,7 +28,7 @@ headers := sys/uio.h iovec.h sys/ioctl.h ioctls.h ioctl-types.h \ ttyent.h syslog.h sys/syslog.h paths.h sys/reboot.h \ sys/mman.h sys/param.h fstab.h mntent.h search.h err.h error.h\ sys/queue.h sysexits.h syscall.h sys/syscall.h sys/swap.h \ - sys/select.h + sys/select.h ustat.h sys/ustat.h ustatbits.h routines := brk sbrk sstk ioctl \ readv writev \ @@ -54,7 +54,7 @@ routines := brk sbrk sstk ioctl \ mmap munmap mprotect msync madvise \ efgcvt efgcvt_r qefgcvt qefgcvt_r \ hsearch hsearch_r tsearch lsearch \ - err error + err error ustat aux := init-misc distribute := bsd-compat.c extra-objs := bsd-compat.o diff --git a/misc/sys/select.h b/misc/sys/select.h index dcb2012cff..729ce7a988 100644 --- a/misc/sys/select.h +++ b/misc/sys/select.h @@ -39,6 +39,8 @@ __BEGIN_DECLS of `struct timeval'. */ struct timeval; +typedef __fd_mask fd_mask; + /* Representation of a set of file descriptors. */ #define fd_set __fd_set diff --git a/misc/sys/ustat.h b/misc/sys/ustat.h index 57086c96da..fd51c5904e 100644 --- a/misc/sys/ustat.h +++ b/misc/sys/ustat.h @@ -20,15 +20,17 @@ Cambridge, MA 02139, USA. */ /* This interface is obsolete. Use <sys/statfs.h> instead. */ #ifndef _SYS_USTAT_H -#define _SYS_USTAT_H 1 + +#define _SYS_USTAT_H 1 +#include <features.h> #include <sys/types.h> #include <ustatbits.h> __BEGIN_DECLS -extern int __ustat __P ((dev_t, struct ustat *)); -extern int ustat __P ((dev_t, struct ustat *)); +extern int __ustat __P ((__dev_t __dev, struct ustat *__ubuf)); +extern int ustat __P ((__dev_t __dev, struct ustat *__ubuf)); __END_DECLS diff --git a/misc/syslog.c b/misc/syslog.c index bcac6c74cb..3a39c4317a 100644 --- a/misc/syslog.c +++ b/misc/syslog.c @@ -56,6 +56,7 @@ static char sccsid[] = "@(#)syslog.c 8.4 (Berkeley) 3/18/94"; #include <varargs.h> #endif +static int LogType = SOCK_DGRAM; /* type of socket connection */ static int LogFile = -1; /* fd for log */ static int connected; /* have done connect */ static int LogStat = 0; /* status bits, set by openlog() */ @@ -163,8 +164,15 @@ vsyslog(pri, fmt, ap) /* Get connected, output the message to the local logger. */ if (!connected) openlog(LogTag, LogStat | LOG_NDELAY, 0); + + /* If we have a SOCK_STREAM connection, also send ASCII NUL as + a record terminator. */ + if (LogType == SOCK_STREAM) + ++bufsize; + if (__send(LogFile, buf, bufsize, 0) < 0) { + closelog (); /* attempt re-open next time */ /* * Output the message to the console; don't worry about blocking, * if console blocks everything will. Make sure the error reported @@ -194,23 +202,36 @@ openlog(ident, logstat, logfac) if (logfac != 0 && (logfac &~ LOG_FACMASK) == 0) LogFacility = logfac; - if (LogFile == -1) { - SyslogAddr.sa_family = AF_UNIX; - (void)strncpy(SyslogAddr.sa_data, _PATH_LOG, - sizeof(SyslogAddr.sa_data)); - if (LogStat & LOG_NDELAY) { - if ((LogFile = socket(AF_UNIX, SOCK_DGRAM, 0)) == -1) - return; - (void)fcntl(LogFile, F_SETFD, 1); + while (1) { + if (LogFile == -1) { + SyslogAddr.sa_family = AF_UNIX; + (void)strncpy(SyslogAddr.sa_data, _PATH_LOG, + sizeof(SyslogAddr.sa_data)); + if (LogStat & LOG_NDELAY) { + if ((LogFile = socket(AF_UNIX, LogType, 0)) + == -1) + return; + (void)fcntl(LogFile, F_SETFD, 1); + } } + if (LogFile != -1 && !connected) + if (__connect(LogFile, &SyslogAddr, sizeof(SyslogAddr)) + == -1) + { + int saved_errno = errno; + (void)close(LogFile); + LogFile = -1; + if (LogType == SOCK_DGRAM + && saved_errno == EPROTOTYPE) + { + /* retry with next SOCK_STREAM: */ + LogType = SOCK_STREAM; + continue; + } + } else + connected = 1; + break; } - if (LogFile != -1 && !connected) - if (__connect(LogFile, &SyslogAddr, sizeof(SyslogAddr)) == -1) - { - (void)close(LogFile); - LogFile = -1; - } else - connected = 1; } void |