]> git.pld-linux.org Git - packages/SysVinit.git/commitdiff
- real fix for wtmpx problems
authorJan Rękorajski <baggins@pld-linux.org>
Sat, 2 Sep 2000 01:43:45 +0000 (01:43 +0000)
committercvs2git <feedback@pld-linux.org>
Sun, 24 Jun 2012 12:13:13 +0000 (12:13 +0000)
Changed files:
    sysvinit-wtmp.patch -> 1.1

sysvinit-wtmp.patch [new file with mode: 0644]

diff --git a/sysvinit-wtmp.patch b/sysvinit-wtmp.patch
new file mode 100644 (file)
index 0000000..c39380f
--- /dev/null
@@ -0,0 +1,103 @@
+diff -ur sysvinit-2.78.orig/src/last.c sysvinit-2.78/src/last.c
+--- sysvinit-2.78.orig/src/last.c      Wed Nov 24 13:24:53 1999
++++ sysvinit-2.78/src/last.c   Sat Sep  2 01:53:06 2000
+@@ -36,6 +36,25 @@
+ #include <arpa/inet.h>
+ #include "oldutmp.h"
++/*
++ *    Try to be smart about the location of the BTMP file
++ */
++#ifndef _PATH_BTMP
++#define _PATH_BTMP "/var/log/btmp"
++#define BTMP_FILE _PATH_BTMP
++#endif
++
++#define TRANSFORM_UTMP_FILE_NAME(file_name) \
++       ((strcmp (file_name, _PATH_WTMP) == 0 \
++         && access ( _PATH_WTMP "x", F_OK) == 0) ? (_PATH_WTMP "x") : \
++        ((strcmp (file_name, _PATH_BTMP) == 0 \
++          && access ( _PATH_BTMP "x", F_OK) == 0) ? (_PATH_BTMP "x") : \
++          ((strcmp (file_name, _PATH_WTMP "x") == 0 \
++            && access (_PATH_WTMP "x", F_OK) != 0) ? _PATH_WTMP : \
++           ((strcmp (file_name, _PATH_BTMP "x") == 0 \
++             && access (_PATH_BTMP "x", F_OK) != 0) ? _PATH_BTMP : \
++            file_name))))
++
+ #ifndef SHUTDOWN_TIME
+ #  define SHUTDOWN_TIME 254
+ #endif
+@@ -233,27 +251,6 @@
+ #endif
+ /*
+- *    Try to be smart about the location of the BTMP file
+- */
+-#ifndef BTMP_FILE
+-#define BTMP_FILE getbtmp()
+-char *getbtmp()
+-{
+-      static char btmp[128];
+-      char *p;
+-
+-      strcpy(btmp, WTMP_FILE);
+-      if ((p = strrchr(btmp, '/')) == NULL)
+-              p = btmp;
+-      else
+-              p++;
+-      *p = 0;
+-      strcat(btmp, "btmp");
+-      return btmp;
+-}
+-#endif
+-
+-/*
+  *    Print a short date.
+  */
+ char *showdate()
+@@ -344,6 +341,8 @@
+       utline[UT_LINESIZE - 1] = 0;
+       if (strncmp(utline, "ftp", 3) == 0 && isdigit(utline[3]))
+               utline[3] = 0;
++      if (strncmp(utline, "ftpd", 4) == 0 && isdigit(utline[4]))
++              utline[4] = 0;
+       if (strncmp(utline, "uucp", 4) == 0 && isdigit(utline[4]))
+               utline[4] = 0;
+@@ -531,10 +530,10 @@
+    *  Which file do we want to read?
+    */
+   if (strcmp(progname, "lastb") == 0) {
+-      ufile = BTMP_FILE;
++      ufile = TRANSFORM_UTMP_FILE_NAME(BTMP_FILE);
+       lastb = 1;
+   } else
+-      ufile = WTMP_FILE;
++      ufile = TRANSFORM_UTMP_FILE_NAME(WTMP_FILE);
+   if (altufile)
+       ufile = altufile;
+   time(&lastdown);
+diff -ur sysvinit-2.78.orig/src/utmp.c sysvinit-2.78/src/utmp.c
+--- sysvinit-2.78.orig/src/utmp.c      Wed Jun  9 13:11:33 1999
++++ sysvinit-2.78/src/utmp.c   Sat Sep  2 01:30:44 2000
+@@ -53,7 +53,9 @@
+        *      this if we have updwtmp() so we can see if the
+        *      wtmp file is accessible.
+        */
++#if !HAVE_UPDWTMP
+       if ((fd = open(WTMP_FILE, O_WRONLY|O_APPEND)) < 0) return;
++#endif
+ #ifdef INIT_MAIN
+       /*
+@@ -117,8 +119,10 @@
+       /*
+        *      Can't do much if UTMP_FILE is not present.
+        */
++#if !HAVE_UPDWTMP
+       if (access(UTMP_FILE, F_OK) < 0)
+               return;
++#endif
+ #ifdef INIT_MAIN
+       /*
This page took 0.097601 seconds and 4 git commands to generate.