]> git.ozlabs.org Git - ppp.git/blobdiff - pppd/utils.c
Added Solaris-specific variables
[ppp.git] / pppd / utils.c
index bec5f89158c8bb6f265e5208b444d8e661cfc612..307fb56affd7f0da90045fae7b05681f3d466904 100644 (file)
@@ -16,9 +16,8 @@
  * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
  * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  */
-#ifndef lint
-static char rcsid[] = "$Id: utils.c,v 1.1 1999/04/12 06:24:53 paulus Exp $";
-#endif
+
+#define RCSID  "$Id: utils.c,v 1.9 1999/09/08 01:13:46 masputra Exp $"
 
 #include <stdio.h>
 #include <ctype.h>
@@ -40,9 +39,18 @@ static char rcsid[] = "$Id: utils.c,v 1.1 1999/04/12 06:24:53 paulus Exp $";
 #include <sys/stat.h>
 #include <sys/socket.h>
 #include <netinet/in.h>
+#ifdef SVR4
+#include <sys/mkdev.h>
+#endif
 
 #include "pppd.h"
 
+static const char rcsid[] = RCSID;
+
+#if defined(SUNOS4)
+extern char *strerror();
+#endif
+
 static void pr_log __P((void *, char *, ...));
 static void logit __P((int, char *, va_list));
 static void vslp_printer __P((void *, char *, ...));
@@ -107,7 +115,7 @@ slprintf __V((char *buf, int buflen, char *fmt, ...))
     va_list args;
     int n;
 
-#if __STDC__
+#if defined(__STDC__)
     va_start(args, fmt);
 #else
     char *buf;
@@ -164,7 +172,8 @@ vslprintf(buf, buflen, fmt, args)
        if (*fmt == 0)
            break;
        c = *++fmt;
-       width = prec = 0;
+       width = 0;
+       prec = -1;
        fillch = ' ';
        if (c == '0') {
            fillch = '0';
@@ -185,6 +194,7 @@ vslprintf(buf, buflen, fmt, args)
                prec = va_arg(args, int);
                c = *++fmt;
            } else {
+               prec = 0;
                while (isdigit(c)) {
                    prec = prec * 10 + c - '0';
                    c = *++fmt;
@@ -258,11 +268,11 @@ vslprintf(buf, buflen, fmt, args)
        case 'q':               /* quoted string */
            quoted = c == 'q';
            p = va_arg(args, unsigned char *);
-           if (fillch == '0' && prec > 0) {
+           if (fillch == '0' && prec >= 0) {
                n = prec;
            } else {
                n = strlen((char *)p);
-               if (prec > 0 && prec < n)
+               if (prec >= 0 && n > prec)
                    n = prec;
            }
            while (n > 0 && buflen > 0) {
@@ -347,7 +357,7 @@ vslprintf(buf, buflen, fmt, args)
            len = num + sizeof(num) - 1 - str;
        } else {
            len = strlen(str);
-           if (prec > 0 && len > prec)
+           if (prec >= 0 && len > prec)
                len = prec;
        }
        if (width > 0) {
@@ -379,7 +389,7 @@ vslp_printer __V((void *arg, char *fmt, ...))
     va_list pvar;
     struct buffer_info *bi;
 
-#if __STDC__
+#if defined(__STDC__)
     va_start(pvar, fmt);
 #else
     void *arg;
@@ -475,7 +485,7 @@ pr_log __V((void *arg, char *fmt, ...))
     va_list pvar;
     char buf[256];
 
-#if __STDC__
+#if defined(__STDC__)
     va_start(pvar, fmt);
 #else
     void *arg;
@@ -565,7 +575,7 @@ fatal __V((char *fmt, ...))
 {
     va_list pvar;
 
-#if __STDC__
+#if defined(__STDC__)
     va_start(pvar, fmt);
 #else
     char *fmt;
@@ -587,7 +597,7 @@ error __V((char *fmt, ...))
 {
     va_list pvar;
 
-#if __STDC__
+#if defined(__STDC__)
     va_start(pvar, fmt);
 #else
     char *fmt;
@@ -607,7 +617,7 @@ warn __V((char *fmt, ...))
 {
     va_list pvar;
 
-#if __STDC__
+#if defined(__STDC__)
     va_start(pvar, fmt);
 #else
     char *fmt;
@@ -627,7 +637,7 @@ notice __V((char *fmt, ...))
 {
     va_list pvar;
 
-#if __STDC__
+#if defined(__STDC__)
     va_start(pvar, fmt);
 #else
     char *fmt;
@@ -647,7 +657,7 @@ info __V((char *fmt, ...))
 {
     va_list pvar;
 
-#if __STDC__
+#if defined(__STDC__)
     va_start(pvar, fmt);
 #else
     char *fmt;
@@ -667,7 +677,7 @@ dbglog __V((char *fmt, ...))
 {
     va_list pvar;
 
-#if __STDC__
+#if defined(__STDC__)
     va_start(pvar, fmt);
 #else
     char *fmt;
@@ -698,7 +708,8 @@ static char lock_file[MAXPATHLEN];
  * lock - create a lock file for the named device
  */
 int
-lock(char *dev)
+lock(dev)
+    char *dev;
 {
 #ifdef LOCKLIB
     int result;
@@ -773,7 +784,9 @@ lock(char *dev)
        lock_buffer[n] = 0;
        pid = atoi(lock_buffer);
 #endif /* LOCK_BINARY */
-       if (pid == 0 || pid == getpid()
+       if (pid == getpid())
+           return 1;           /* somebody else locked it for us */
+       if (pid == 0
            || (kill(pid, 0) == -1 && errno == ESRCH)) {
            if (unlink (lock_file) == 0) {
                notice("Removed stale lock on %s (pid %d)", dev, pid);
@@ -813,7 +826,8 @@ lock(char *dev)
  * between when the parent died and the child rewrote the lockfile).
  */
 int
-relock(int pid)
+relock(pid)
+    int pid;
 {
 #ifdef LOCKLIB
     /* XXX is there a way to do this? */