Author: wiget                        Date: Sat Dec  3 23:11:56 2011 GMT
Module: packages                      Tag: HEAD
---- Log message:
- up to 2.88
- removed patches applied or fixed upstream:
    sysvinit-blowfish.patch sysvinit-chroot.patch 
    sysvinit-console-open.patch sysvinit-godot.patch 
    sysvinit-haltname.patch sysvinit-ipv6.patch 
    sysvinit-maxproclen.patch sysvinit-md5-bigendian.patch 
    sysvinit-no-abort.patch sysvinit-selinux.patch 
    sysvinit-timeval.patch 

---- Files affected:
packages/SysVinit:
   SysVinit.spec (1.160 -> 1.161) , sysvinit-alt-fixes.patch (1.3 -> 1.4) , 
sysvinit-killall5.patch (1.2 -> 1.3) , sysvinit-lastlog.patch (1.1 -> 1.2) , 
sysvinit-man.patch (1.7 -> 1.8) , sysvinit-paths.patch (1.11 -> 1.12) , 
sysvinit-pidof.patch (1.2 -> 1.3) , sysvinit-wtmp.patch (1.1 -> 1.2) , 
sysvinit-blowfish.patch (1.1 -> NONE)  (REMOVED), sysvinit-chroot.patch (1.1 -> 
NONE)  (REMOVED), sysvinit-console-open.patch (1.1 -> NONE)  (REMOVED), 
sysvinit-godot.patch (1.1 -> NONE)  (REMOVED), sysvinit-haltname.patch (1.1 -> 
NONE)  (REMOVED), sysvinit-ipv6.patch (1.1 -> NONE)  (REMOVED), 
sysvinit-maxproclen.patch (1.1 -> NONE)  (REMOVED), 
sysvinit-md5-bigendian.patch (1.1 -> NONE)  (REMOVED), sysvinit-no-abort.patch 
(1.1 -> NONE)  (REMOVED), sysvinit-selinux.patch (1.11 -> NONE)  (REMOVED), 
sysvinit-timeval.patch (1.1 -> NONE)  (REMOVED)

---- Diffs:

================================================================
Index: packages/SysVinit/SysVinit.spec
diff -u packages/SysVinit/SysVinit.spec:1.160 
packages/SysVinit/SysVinit.spec:1.161
--- packages/SysVinit/SysVinit.spec:1.160       Tue Nov 29 00:49:58 2011
+++ packages/SysVinit/SysVinit.spec     Sun Dec  4 00:11:50 2011
@@ -14,38 +14,27 @@
 Summary(tr.UTF-8):     System V başlatma programı
 Summary(uk.UTF-8):     Програми, що керують базовими системними процесами
 Name:          SysVinit
-Version:       2.86
-Release:       29
+Version:       2.88
+Release:       0.1
 License:       GPL
 Group:         Base
-Source0:       
ftp://ftp.cistron.nl/pub/people/miquels/software/sysvinit-%{version}.tar.gz
-# Source0-md5: 7d5d61c026122ab791ac04c8a84db967
+Source0:       
http://download.savannah.gnu.org/releases/sysvinit/sysvinit-%{version}dsf.tar.bz2
+# Source0-md5: 6eda8a97b86e0a6f59dabbf25202aa6f
 Source1:       sysvinit.logrotate
 Source2:       
http://www.mif.pg.gda.pl/homepages/ankry/man-PLD/sysvinit-non-english-man-pages.tar.bz2
 # Source2-md5: 9ae8a63a4685368fae19707f95475cca
 Patch0:                sysvinit-paths.patch
 Patch1:                sysvinit-bequiet.patch
-Patch2:                sysvinit-md5-bigendian.patch
 Patch3:                sysvinit-wtmp.patch
 Patch4:                sysvinit-man.patch
 Patch5:                sysvinit-halt.patch
-Patch6:                sysvinit-blowfish.patch
 Patch7:                sysvinit-autofsck.patch
 Patch8:                sysvinit-pidof.patch
 Patch9:                sysvinit-killall5.patch
-Patch10:       sysvinit-selinux.patch
 Patch11:       sysvinit-nopowerstates-single.patch
 Patch12:       sysvinit-lastlog.patch
 Patch13:       sysvinit-alt-fixes.patch
-Patch14:       sysvinit-chroot.patch
-Patch15:       sysvinit-console-open.patch
-Patch16:       sysvinit-godot.patch
-Patch17:       sysvinit-haltname.patch
-Patch18:       sysvinit-ipv6.patch
-Patch19:       sysvinit-maxproclen.patch
 Patch20:       sysvinit-quiet.patch
-Patch21:       sysvinit-timeval.patch
-Patch22:       sysvinit-no-abort.patch
 Patch23:       sysvinit-rebootconfirmation.patch
 %if %{with selinux}
 BuildRequires: libselinux-devel >= 1.28
@@ -131,37 +120,27 @@
 management.
 
 %prep
-%setup -q -n sysvinit-%{version}
+%setup -q -n sysvinit-%{version}dsf
 %patch0 -p1
 %patch1 -p1
-%patch2 -p1
 %patch3 -p1
 %patch4 -p1
 %patch5 -p1
-%patch6 -p1
 %patch7 -p1
 %patch8 -p1
 %patch9 -p1
-%{?with_selinux:%patch10 -p1}
 %patch11 -p1
 %patch12 -p1
 %patch13 -p1
-%patch14 -p1
-%patch15 -p1
-%patch16 -p1
-%patch17 -p1
-%patch18 -p1
-%patch19 -p1
 %patch20 -p1
-%patch21 -p1
-%patch22 -p1
 %patch23 -p0
 
 %build
 %{__make} -C src \
+       %{?with_selinux:WITH_SELINUX=yes} \
        CC="%{__cc}" \
        LCRYPT="-lcrypt" \
-       OPTIMIZE="%{rpmcflags}" \
+       CFLAGS="%{rpmcflags}" \
        LDFLAGS="%{rpmldflags}"
 
 %install
@@ -178,6 +157,7 @@
 
 ln -s ../var/run/initrunlvl $RPM_BUILD_ROOT%{_sysconfdir}
 ln -s killall5 $RPM_BUILD_ROOT%{_sbindir}/pidof
+ln -s utmpdump $RPM_BUILD_ROOT%{_bindir}/utmpx-dump
 
 > $RPM_BUILD_ROOT%{_sysconfdir}/ioctl.save
 > $RPM_BUILD_ROOT/var/log/btmpx
@@ -187,6 +167,7 @@
 > $RPM_BUILD_ROOT/var/run/initrunlvl
 
 echo .so last.1 > $RPM_BUILD_ROOT%{_mandir}/man1/lastb.1
+echo .so utmpdump.1 > $RPM_BUILD_ROOT%{_mandir}/man1/utmpx-dump.1
 echo .so halt.8 > $RPM_BUILD_ROOT%{_mandir}/man8/poweroff.8
 echo .so halt.8 > $RPM_BUILD_ROOT%{_mandir}/man8/reboot.8
 echo .so init.8 > $RPM_BUILD_ROOT%{_mandir}/man8/telinit.8
@@ -321,6 +302,7 @@
 %files tools
 %defattr(644,root,root,755)
 %attr(755,root,root) /bin/pidof
+%attr(755,root,root) %{_sbindir}/fstab-decode
 %attr(755,root,root) %{_sbindir}/killall5
 %attr(755,root,root) %{_sbindir}/lastlog
 %attr(755,root,root) %{_sbindir}/pidof
@@ -328,6 +310,7 @@
 %attr(755,root,root) %{_bindir}/last
 %attr(755,root,root) %{_bindir}/lastb
 %attr(755,root,root) %{_bindir}/mesg
+%attr(755,root,root) %{_bindir}/utmpdump
 %attr(755,root,root) %{_bindir}/utmpx-dump
 %attr(755,root,root) %{_bindir}/wall
 %attr(640,root,root) %ghost /var/log/faillog
@@ -336,9 +319,12 @@
 %{_mandir}/man1/lastb.1*
 %{_mandir}/man1/mesg.1*
 %{_mandir}/man1/wall.1*
+%{_mandir}/man1/utmpdump.1*
+%{_mandir}/man1/utmpx-dump.1*
 %{_mandir}/man8/killall5.8*
 %{_mandir}/man8/pidof.8*
 %{_mandir}/man8/sulogin.8*
+%{_mandir}/man8/fstab-decode.8*
 %lang(cs) %{_mandir}/cs/man8/lastlog.8*
 %lang(es) %{_mandir}/es/man1/last.1*
 %lang(es) %{_mandir}/es/man1/lastb.1
@@ -399,6 +385,16 @@
 All persons listed below can be reached at <cvs_login>@pld-linux.org
 
 $Log$
+Revision 1.161  2011/12/03 23:11:50  wiget
+- up to 2.88
+- removed patches applied or fixed upstream:
+    sysvinit-blowfish.patch sysvinit-chroot.patch
+    sysvinit-console-open.patch sysvinit-godot.patch
+    sysvinit-haltname.patch sysvinit-ipv6.patch
+    sysvinit-maxproclen.patch sysvinit-md5-bigendian.patch
+    sysvinit-no-abort.patch sysvinit-selinux.patch
+    sysvinit-timeval.patch
+
 Revision 1.160  2011/11/28 23:49:58  gotar
 - moved /var/log/{fail,last}log to tools too, other cosmetics, rel. 29
 

================================================================
Index: packages/SysVinit/sysvinit-alt-fixes.patch
diff -u packages/SysVinit/sysvinit-alt-fixes.patch:1.3 
packages/SysVinit/sysvinit-alt-fixes.patch:1.4
--- packages/SysVinit/sysvinit-alt-fixes.patch:1.3      Tue Nov 13 11:07:26 2007
+++ packages/SysVinit/sysvinit-alt-fixes.patch  Sun Dec  4 00:11:50 2011
@@ -1,29 +1,15 @@
-diff -upk.orig sysvinit-2.86.orig/src/bootlogd.c sysvinit-2.86/src/bootlogd.c
---- sysvinit-2.86.orig/src/bootlogd.c  2007-01-06 14:37:36 +0000
-+++ sysvinit-2.86/src/bootlogd.c       2007-01-06 14:38:09 +0000
-@@ -232,6 +232,9 @@ int consolename(char *res, int rlen)
- #ifdef TIOCGDEV
-       if (ioctl(0, TIOCGDEV, &kdev) == 0)
-               return findtty(res, rlen, (dev_t)kdev);
-+#ifndef ENOIOCTLCMD
-+#define ENOIOCTLCMD 515
-+#endif
-       if (errno != ENOIOCTLCMD) return -1;
- #endif
- 
-diff -upk.orig sysvinit-2.86.orig/src/init.c sysvinit-2.86/src/init.c
---- sysvinit-2.86.orig/src/init.c      2007-01-06 14:37:36 +0000
-+++ sysvinit-2.86/src/init.c   2007-01-06 14:38:09 +0000
-@@ -785,7 +785,7 @@ char **init_buildenv(int child)
-       for (n = 0; environ[n]; n++)
-               ;
-       n += NR_EXTRA_ENV + 8;
+--- sysvinit-2.88dsf/src/init.c.wiget  2011-12-03 23:39:16.988206898 +0100
++++ sysvinit-2.88dsf/src/init.c        2011-12-03 23:47:53.761427001 +0100
+@@ -880,7 +880,7 @@ char **init_buildenv(int child)
+       n += NR_EXTRA_ENV;
+       if (child)
+               n += 8;
 -      e = calloc(n, sizeof(char *));
 +      e = imalloc(n * sizeof(char *));
  
        for (n = 0; environ[n]; n++)
                e[n] = istrdup(environ[n]);
-@@ -814,6 +814,9 @@ void init_freeenv(char **e)
+@@ -911,6 +911,9 @@ void init_freeenv(char **e)
  {
        int             n;
  
@@ -33,7 +19,7 @@
        for (n = 0; e[n]; n++)
                free(e[n]);
        free(e);
-@@ -1834,7 +1837,7 @@ void re_exec(void)
+@@ -1976,7 +1979,7 @@ void re_exec(void)
        CHILD           *ch;
        sigset_t        mask, oldset;
        pid_t           pid;
@@ -42,15 +28,12 @@
        int             fd;
  
        if (strchr("S0123456",runlevel) == NULL)
-@@ -1885,11 +1885,13 @@
-               exit(0);
-       }
- 
--      /*
--       *      The existing init process execs a new init binary.
--       */
+@@ -2027,8 +2030,13 @@ void re_exec(void)
+       /*
+        *      The existing init process execs a new init binary.
+        */
 -      env = init_buildenv(0);
--      execl(myname, myname, "--init", NULL, env);
+-      execle(myname, myname, "--init", NULL, env);
 +      if (pid > 0) {
 +              /*
 +               *      The existing init process execs a new init binary.
@@ -61,7 +44,7 @@
  
        /*
         *      We shouldn't be here, something failed. 
-@@ -2557,7 +2562,7 @@ int telinit(const char *progname, int ar
+@@ -2729,7 +2737,7 @@ int telinit(char *progname, int argc, ch
                if (!strchr("0123456789SsQqAaBbCcUu", argv[optind][0]))
                        usage(progname);
                request.cmd = INIT_CMD_RUNLVL;

================================================================
Index: packages/SysVinit/sysvinit-killall5.patch
diff -u packages/SysVinit/sysvinit-killall5.patch:1.2 
packages/SysVinit/sysvinit-killall5.patch:1.3
--- packages/SysVinit/sysvinit-killall5.patch:1.2       Mon Dec 27 00:21:51 2004
+++ packages/SysVinit/sysvinit-killall5.patch   Sun Dec  4 00:11:50 2011
@@ -1,36 +1,40 @@
---- sysvinit-2.86/src/killall5.c.orig  2004-12-26 23:07:15.505343096 +0100
-+++ sysvinit-2.86/src/killall5.c       2004-12-26 23:20:43.017582576 +0100
-@@ -193,6 +193,7 @@
-               if (p->argv0) free(p->argv0);
+diff -u sysvinit-2.88dsf/src/killall5.c sysvinit-2.88dsf/src/killall5.c
+--- sysvinit-2.88dsf/src/killall5.c    2011-12-03 23:12:52.373139250 +0100
++++ sysvinit-2.88dsf/src/killall5.c    2011-12-03 23:19:21.498025134 +0100
+@@ -479,6 +479,7 @@
                if (p->argv1) free(p->argv1);
+               if (p->statname) free(p->statname);
                if (p->pathname) free(p->pathname);
 +              if (p->statname) free(p->statname);
                free(p);
        }
        plist = NULL;
-@@ -210,7 +211,7 @@
+@@ -496,7 +497,7 @@
                /* Open the status file. */
-               snprintf(path, sizeof(path), "/proc/%s/stat", d->d_name);
+               snprintf(path, sizeof(path), "%s/stat", d->d_name);
  
 -              /* Read SID & statname from it. */
 +              /* Read statname from it. */
-               if ((fp = fopen(path, "r")) != NULL) {
+               if ((fp = fopen(path, "r")) != NULL) {
                        buf[0] = 0;
                        fgets(buf, sizeof(buf), fp);
-@@ -223,11 +224,11 @@
+@@ -509,7 +510,6 @@
                                /* Read program name. */
                                q = strrchr(buf, ')');
                                if (q == NULL) {
 -                                      p->sid = 0;
                                        nsyslog(LOG_ERR,
-                                       "can't get program name from %s\n",
+                                       "can't get program name from 
/proc/%s\n",
                                                path);
+@@ -517,6 +517,7 @@
+                                       if (p->argv1) free(p->argv1);
+                                       if (p->statname) free(p->statname);
                                        free(p);
 +                                      fclose(fp);
                                        continue;
                                }
                                s++;
-@@ -242,20 +243,23 @@
+@@ -531,23 +532,26 @@
  
                        /* Get session, startcode, endcode. */
                        startcode = endcode = 0;
@@ -52,6 +56,9 @@
 -                                      path);
 +                              nsyslog(LOG_ERR, "can't read sid for pid %d\n", 
pid);
 +                              free(p->statname);
+                               if (p->argv0) free(p->argv0);
+                               if (p->argv1) free(p->argv1);
+                               if (p->statname) free(p->statname);
                                free(p);
                                continue;
                        }
@@ -60,4 +67,4 @@
 -                      fclose(fp);
                } else {
                        /* Process disappeared.. */
-                       free(p);
+                       if (p->argv0) free(p->argv0);

================================================================
Index: packages/SysVinit/sysvinit-lastlog.patch
diff -u packages/SysVinit/sysvinit-lastlog.patch:1.1 
packages/SysVinit/sysvinit-lastlog.patch:1.2
--- packages/SysVinit/sysvinit-lastlog.patch:1.1        Wed Aug 22 17:06:53 2007
+++ packages/SysVinit/sysvinit-lastlog.patch    Sun Dec  4 00:11:50 2011
@@ -1,120 +1,320 @@
-diff -urN sysvinit-2.86/man/intl/cs/man8/lastlog.8 
sysvinit-2.86-lastlog/man/intl/cs/man8/lastlog.8
---- sysvinit-2.86/man/intl/cs/man8/lastlog.8   1970-01-01 01:00:00.000000000 
+0100
-+++ sysvinit-2.86-lastlog/man/intl/cs/man8/lastlog.8   2006-08-03 
12:00:56.000000000 +0200
-@@ -0,0 +1,40 @@
-+.\"   @(#)lastlog.8   3.3     08:24:58        29 Sep 1993 (National Guard 
Release)
-+.\"   $Id$
-+.\"
-+.TH LASTLOG 8
-+.SH JMÉNO
-+lastlog \- prozkoumá soubor lastlog
-+.SH SYNTAXE
-+.B lastlog
-+.RB [ \-u
-+.IR přihlašovací\-jméno ]
-+.RB [ \-t
-+.IR dny ]
-+.SH POPIS
-+\fBlastlog\fR setřídí a zobrazí obsah souboru
-+\fI/var/log/lastlog\fR,
-+který obsahuje záznamy o přihlašování a odhlašování uživatelů v systému.
-+Zobrazí se \fBpřihlašovací jméno\fR, \fBjméno terminálu\fR a \fBčas posledního
-+přihlašení\fR.
-+Standardně (tj. bez dalších voleb) lastlog zobrazí záznamy setříděné
-+podle čísla UID.
-+Použití přepínače \fB\-u \fIpřihlašovací\-jméno\fR
-+způsobí, že bude vytištěn pouze poslední záznam o přihlášení příslušného 
uživatele.
-+Zadáním \fB\-t \fIdny\fR se zobrazí pouze
-+ta přihlášení, které jsou dřívější než zadané \fIdny\fR.
-+Parametr \fB\-t\fR překryje případný parametr \fB\-u\fR.
-+.PP
-+Pokud se uživatel ještě nikdy nepřihlásil, zobrazí se zpráva \fB"**Never 
logged in**"\fR (Nikdy nepřihlášen)
-+místo jména terminálu a času.
-+.SH SOUBORY
-+/var/log/lastlog \- soubor se záznamy o přihlášení a odhlášení
-+.SH NÁMITKY
-+Velké rozdíly v UID číslech jsou způsobeny tím, že lastlog program běžel 
dlouho bez
-+výstupu na obrazovku (např. mmdf=800 a poslední uid=170, program se bude
-+jevit jako s uid 171\-799).
-+.SH AUTOŘI
-+Julianne Frances Haugh ([email protected])
-+.br
-+Phillip Street
-+.SH PŘELOŽIL
-+Ondřej Pavlíček ([email protected]).
-diff -urN sysvinit-2.86/man/intl/fr/man8/lastlog.8 
sysvinit-2.86-lastlog/man/intl/fr/man8/lastlog.8
---- sysvinit-2.86/man/intl/fr/man8/lastlog.8   1970-01-01 01:00:00.000000000 
+0100
-+++ sysvinit-2.86-lastlog/man/intl/fr/man8/lastlog.8   2006-08-03 
12:00:56.000000000 +0200
-@@ -0,0 +1,66 @@
+--- sysvinit-2.88dsf/src/Makefile.wiget        2010-04-11 11:30:27.000000000 
+0200
++++ sysvinit-2.88dsf/src/Makefile      2011-12-03 23:38:27.970109228 +0100
+@@ -15,13 +15,13 @@ STATIC     =
+ 
+ # For some known distributions we do not build all programs, otherwise we do.
+ BIN   =
+-SBIN  = init halt shutdown runlevel killall5 fstab-decode
++SBIN  = init halt shutdown runlevel killall5 fstab-decode lastlog
+ USRBIN        = last mesg
+ 
+ MAN1  = last.1 lastb.1 mesg.1
+ MAN5  = initscript.5 inittab.5
+ MAN8  = halt.8 init.8 killall5.8 pidof.8 poweroff.8 reboot.8 runlevel.8
+-MAN8  += shutdown.8 telinit.8 fstab-decode.8
++MAN8  += shutdown.8 telinit.8 fstab-decode.8 lastlog.8
+ 
+ ifeq ($(DISTRO),)
+ BIN   += mountpoint
+@@ -96,6 +96,9 @@ halt:                halt.o ifdown.o hddown.o utmp.o r
+ 
+ last:         last.o oldutmp.h
+ 
++lastlog:      lastlog.o
++              $(CC) $(LDFLAGS) -o $@ lastlog.o
++
+ mesg:         mesg.o
+ 
+ mountpoint:   mountpoint.o
+--- sysvinit-2.88dsf/src/lastlog.c.wiget       2011-12-03 23:31:01.697380950 
+0100
++++ sysvinit-2.88dsf/src/lastlog.c     2011-12-03 23:31:01.697380950 +0100
+@@ -0,0 +1,217 @@
++/*
++ * Copyright 1989 - 1994, Julianne Frances Haugh
++ * All rights reserved.
++ *
++ * Redistribution and use in source and binary forms, with or without
++ * modification, are permitted provided that the following conditions
++ * are met:
++ * 1. Redistributions of source code must retain the above copyright
++ *    notice, this list of conditions and the following disclaimer.
++ * 2. Redistributions in binary form must reproduce the above copyright
++ *    notice, this list of conditions and the following disclaimer in the
++ *    documentation and/or other materials provided with the distribution.
++ * 3. Neither the name of Julianne F. Haugh nor the names of its contributors
++ *    may be used to endorse or promote products derived from this software
++ *    without specific prior written permission.
++ *
++ * THIS SOFTWARE IS PROVIDED BY JULIE HAUGH AND CONTRIBUTORS ``AS IS'' AND
++ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
++ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
++ * ARE DISCLAIMED. IN NO EVENT SHALL JULIE HAUGH OR CONTRIBUTORS BE LIABLE
++ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
++ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
++ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
++ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
++ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
++ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
++ * SUCH DAMAGE.
++ */
++
++#ident "$Id$"
++
++#include <getopt.h>
++#include <lastlog.h>
++#include <pwd.h>
++#include <stdio.h>
++#include <sys/stat.h>
++#include <sys/types.h>
++#include <time.h>
++#include <stdlib.h>
++/*
++ * Needed for MkLinux DR1/2/2.1 - J.
++ */
++#ifndef LASTLOG_FILE
++#define LASTLOG_FILE "/var/log/lastlog"
++#endif
++/*
++ * Global variables
++ */
++static FILE *lastlogfile;     /* lastlog file stream */
++static off_t user;            /* one single user, specified on command line */
++static int days;              /* number of days to consider for print command 
*/
++static time_t seconds;                /* that number of days in seconds */
++static int inverse_days;      /* number of days to consider for print command 
*/
++static time_t inverse_seconds;        /* that number of days in seconds */
++
++
++static int uflg = 0;          /* set if user is a valid user id */
++static int tflg = 0;          /* print is restricted to most recent days */
++static int bflg = 0;          /* print excludes most recent days */
++static struct lastlog lastlog;        /* scratch structure to play with ... */
++static struct stat statbuf;   /* fstat buffer for file size */
++static struct passwd *pwent;
++
++#define       NOW     (time ((time_t *) 0))
++
++static void usage (void)
++{
++      fprintf (stdout, "Usage: lastlog [options]\n"
++                         "\n"
++                         "Options:\n"
++                         "  -b, --before DAYS print only lastlog records 
older than DAYS\n"
++                         "  -h, --help                display this help 
message and exit\n"
++                         "  -t, --time DAYS   print only lastlog records more 
recent than DAYS\n"
++                         "  -u, --user LOGIN  print lastlog record for user 
with specified LOGIN\n"
++                         "\n");
++      exit(1);
++}
++
++static void print_one (const struct passwd *pw)
++{
++      static int once;
++      char *cp;
++      struct tm *tm;
++      time_t ll_time;
++
++#ifdef HAVE_STRFTIME
++      char ptime[80];
++#endif
++
++      if (!pw)
++              return;
++
++      if (!once) {
++#ifdef HAVE_LL_HOST
++              printf ("Username         Port     From             Latest\n");
++#else
++              printf ("Username                Port     Latest\n");
++#endif
++              once++;
++      }
++      ll_time = lastlog.ll_time;
++      tm = localtime (&ll_time);
++#ifdef HAVE_STRFTIME
++      strftime (ptime, sizeof (ptime), "%a %b %e %H:%M:%S %z %Y", tm);
++      cp = ptime;
++#else
++      cp = asctime (tm);
++      cp[24] = '\0';
++#endif
++
++      if (lastlog.ll_time == (time_t) 0)
++              cp = "**Never logged in**\0";
++
++#ifdef HAVE_LL_HOST
++      printf ("%-16s %-8.8s %-16.16s %s\n", pw->pw_name,
++              lastlog.ll_line, lastlog.ll_host, cp);
++#else
++      printf ("%-16s\t%-8.8s %s\n", pw->pw_name, lastlog.ll_line, cp);
++#endif
++}
++
++static void print (void)
++{
++      off_t offset;
++
++      if (uflg) {
++              offset = user * sizeof lastlog;
++
++              if (fstat (fileno (lastlogfile), &statbuf)) {
++                      perror (LASTLOG_FILE);
++                      return;
++              }
++              if (offset >= statbuf.st_size)
++                      return;
++
++              fseeko (lastlogfile, offset, SEEK_SET);
++              if (fread ((char *) &lastlog, sizeof lastlog, 1,
++                         lastlogfile) == 1)
++                      print_one (pwent);
++              else
++                      perror (LASTLOG_FILE);
++      } else {
++              setpwent ();
++              while ((pwent = getpwent ())) {
++                      user = pwent->pw_uid;
++                      offset = user * sizeof lastlog;
++
++                      fseeko (lastlogfile, offset, SEEK_SET);
++                      if (fread ((char *) &lastlog, sizeof lastlog, 1,
++                                 lastlogfile) != 1)
++                              continue;
++
++                      if (tflg && NOW - lastlog.ll_time > seconds)
++                              continue;
++
++                      if (bflg && NOW - lastlog.ll_time < inverse_seconds)
++                              continue;
++
++                      print_one (pwent);
++              }
++      }
++}
++
++int main (int argc, char **argv)
++{
++      int c;
++      static struct option const longopts[] = {
++              {"help", no_argument, NULL, 'h'},
++              {"time", required_argument, NULL, 't'},
++              {"before", required_argument, NULL, 'b'},
++              {"user", required_argument, NULL, 'u'},
++              {NULL, 0, NULL, '\0'}
++      };
++
++      while ((c = getopt_long (argc, argv, "ht:b:u:", longopts, NULL)) != -1) 
{
++              switch (c) {
++              case 'h':
++                      usage ();
++                      break;
++              case 't':
++                      days = atoi (optarg);
++                      seconds = days * (24L*3600L);
++                      tflg++;
++                      break;
++              case 'b':
++                      inverse_days = atoi (optarg);
++                      inverse_seconds = inverse_days * (24L*3600L);
++                      bflg++;
++                      break;
++              case 'u':
++                      pwent = getpwnam (optarg);
++                      if (!pwent) {
++                              fprintf (stderr, "Unknown User: %s\n", optarg);
++                              exit (1);
++                      }
++                      uflg++;
++                      user = pwent->pw_uid;
++                      break;
++              default:
++                      usage ();
++                      break;
++              }
++      }
++      if (argc > optind) {
++              fprintf (stderr, "lastlog: unexpected argument: %s\n", 
argv[optind]);
++              usage();
++      }
++
<<Diff was trimmed, longer than 597 lines>>

---- CVS-web:
    
http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/SysVinit/SysVinit.spec?r1=1.160&r2=1.161&f=u
    
http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/SysVinit/sysvinit-alt-fixes.patch?r1=1.3&r2=1.4&f=u
    
http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/SysVinit/sysvinit-killall5.patch?r1=1.2&r2=1.3&f=u
    
http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/SysVinit/sysvinit-lastlog.patch?r1=1.1&r2=1.2&f=u
    
http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/SysVinit/sysvinit-man.patch?r1=1.7&r2=1.8&f=u
    
http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/SysVinit/sysvinit-paths.patch?r1=1.11&r2=1.12&f=u
    
http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/SysVinit/sysvinit-pidof.patch?r1=1.2&r2=1.3&f=u
    
http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/SysVinit/sysvinit-wtmp.patch?r1=1.1&r2=1.2&f=u

_______________________________________________
pld-cvs-commit mailing list
[email protected]
http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit

Reply via email to