* 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.8 1999/08/13 06:46:22 paulus Exp $"
#include <stdio.h>
#include <ctype.h>
#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 *, ...));
if (*fmt == 0)
break;
c = *++fmt;
- width = prec = 0;
+ width = 0;
+ prec = -1;
fillch = ' ';
if (c == '0') {
fillch = '0';
prec = va_arg(args, int);
c = *++fmt;
} else {
+ prec = 0;
while (isdigit(c)) {
prec = prec * 10 + c - '0';
c = *++fmt;
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) {
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) {
* lock - create a lock file for the named device
*/
int
-lock(char *dev)
+lock(dev)
+ char *dev;
{
#ifdef LOCKLIB
int result;
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);
* 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? */