update from main archive 960807
authordrepper <drepper>
Thu, 8 Aug 1996 00:32:02 +0000 (00:32 +0000)
committerdrepper <drepper>
Thu, 8 Aug 1996 00:32:02 +0000 (00:32 +0000)
misc/Makefile
misc/sys/select.h
misc/sys/ustat.h
misc/syslog.c
nss/nsswitch.c

index 01e2238..1631b21 100644 (file)
@@ -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
index dcb2012..729ce7a 100644 (file)
@@ -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
 
index 57086c9..fd51c59 100644 (file)
@@ -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
 
index bcac6c7..3a39c43 100644 (file)
@@ -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
index 3490594..1349e0c 100644 (file)
@@ -42,10 +42,6 @@ static service_library *nss_new_service (name_database *database,
 __libc_lock_define_initialized (static, lock)
 
 
-/* Global variable.  */
-struct __res_state _res;
-
-
 /* Nonzero if the sevices are already initialized.  */
 static int nss_initialized;