[Pkg-shadow-commits] r1497 - in upstream/trunk: . man src
nekral-guest at alioth.debian.org
nekral-guest at alioth.debian.org
Wed Dec 26 21:54:04 UTC 2007
Author: nekral-guest
Date: 2007-12-26 21:54:04 +0000 (Wed, 26 Dec 2007)
New Revision: 1497
Modified:
upstream/trunk/ChangeLog
upstream/trunk/NEWS
upstream/trunk/TODO
upstream/trunk/man/lastlog.8.xml
upstream/trunk/src/lastlog.c
Log:
Merge Debian's patch 412_lastlog_-u_numerical_range
* NEWS, src/lastlog.c, man/lastlog.8.xml: Accept numerical user, or
ranges with the -u option.
* TODO: The same change should be done on faillog.
Modified: upstream/trunk/ChangeLog
===================================================================
--- upstream/trunk/ChangeLog 2007-12-26 16:50:38 UTC (rev 1496)
+++ upstream/trunk/ChangeLog 2007-12-26 21:54:04 UTC (rev 1497)
@@ -1,5 +1,11 @@
2007-12-26 Nicolas François <nicolas.francois at centraliens.net>
+ Merge Debian's patch 412_lastlog_-u_numerical_range
+ * NEWS, src/lastlog.c, man/lastlog.8.xml: Accept numerical user, or
+ ranges with the -u option.
+
+2007-12-26 Nicolas François <nicolas.francois at centraliens.net>
+
Merge Debian's patch 466_fflush-prompt
* libmisc/Makefile.am, lib/prototypes.h, libmisc/yesno.c, src/grpck.c,
src/pwck.c: move yes_or_no() from grpck/pwck to a separate
Modified: upstream/trunk/NEWS
===================================================================
--- upstream/trunk/NEWS 2007-12-26 16:50:38 UTC (rev 1496)
+++ upstream/trunk/NEWS 2007-12-26 21:54:04 UTC (rev 1497)
@@ -13,6 +13,9 @@
- su
* su's arguments are now reordered. If needed, use -- to separate su's
options from the shell's options.
+- lastlog
+ * Accept users specified as a numerical UID, or ranges of users (-user,
+ user-, user1-user2).
shadow-4.0.18.2 -> shadow-4.1.0 09-12-2008
Modified: upstream/trunk/TODO
===================================================================
--- upstream/trunk/TODO 2007-12-26 16:50:38 UTC (rev 1496)
+++ upstream/trunk/TODO 2007-12-26 21:54:04 UTC (rev 1497)
@@ -1,3 +1,6 @@
+faillog
+ - accept numerical user and range of users
+
Document when/where option appeared, document whether an option is standard
or not.
Modified: upstream/trunk/man/lastlog.8.xml
===================================================================
--- upstream/trunk/man/lastlog.8.xml 2007-12-26 16:50:38 UTC (rev 1496)
+++ upstream/trunk/man/lastlog.8.xml 2007-12-26 21:54:04 UTC (rev 1497)
@@ -71,25 +71,23 @@
<varlistentry>
<term>
<option>-u</option>, <option>--user</option>
- <replaceable>LOGIN</replaceable>
+ <replaceable>LOGIN</replaceable>|<replaceable>RANGE</replaceable>
</term>
<listitem>
- <para>Print the lastlog record for user with specified
- <emphasis remap='I'>LOGIN</emphasis> only.
+ <para>
+ Print the lastlog record of the specified user(s).
</para>
+ <para>
+ The users can be specified by a login name, a numerical user ID,
+ or a <replaceable>RANGE</replaceable> of users. This
+ <replaceable>RANGE</replaceable> of users can be specified with a
+ min and max values (<replaceable>UID_MIN-UID_MAX</replaceable>), a
+ max value (<replaceable>-UID_MAX</replaceable>), or a min value
+ (<replaceable>UID_MIN-</replaceable>).
+ </para>
</listitem>
</varlistentry>
</variablelist>
- <variablelist remap='TP'>
- <varlistentry>
- <term>
- The <option>-t</option> flag overrides the use of <option>-u</option>.
- </term>
- <listitem>
- <para></para>
- </listitem>
- </varlistentry>
- </variablelist>
<para>
If the user has never logged in the message <emphasis>** Never logged
Modified: upstream/trunk/src/lastlog.c
===================================================================
--- upstream/trunk/src/lastlog.c 2007-12-26 16:50:38 UTC (rev 1496)
+++ upstream/trunk/src/lastlog.c 2007-12-26 21:54:04 UTC (rev 1497)
@@ -50,14 +50,15 @@
* Global variables
*/
static FILE *lastlogfile; /* lastlog file stream */
-static off_t user; /* one single user, specified on command line */
+static long umin; /* if uflg, only display users with uid >= umin */
+static long umax; /* if uflg, only display users with uid <= umax */
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 uflg = 0; /* print only an user of range of users */
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 ... */
@@ -127,26 +128,14 @@
{
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;
+ if (uflg &&
+ ((umin != -1 && user < umin) ||
+ (umax != -1 && user > umax)))
+ continue;
offset = user * sizeof lastlog;
fseeko (lastlogfile, offset, SEEK_SET);
@@ -199,15 +188,46 @@
bflg++;
break;
case 'u':
+ /*
+ * The user can be:
+ * - a login name
+ * - numerical
+ * - a numerical login ID
+ * - a range (-x, x-, x-y)
+ */
+ uflg++;
pwent = xgetpwnam (optarg);
- if (!pwent) {
- fprintf (stderr,
- _("Unknown User: %s\n"),
- optarg);
- exit (1);
+ if (NULL != pwent) {
+ umin = pwent->pw_uid;
+ umax = umin;
+ } else {
+ char *endptr = NULL;
+ user = strtol(optarg, &endptr, 10);
+ if (*optarg != '\0' && *endptr == '\0') {
+ if (user < 0) {
+ /* -<userid> */
+ umin = -1;
+ umax = -user;
+ } else {
+ /* <userid> */
+ umin = user;
+ umax = user;
+ }
+ } else if (endptr[0] == '-' && endptr[1] == '\0') {
+ /* <userid>- */
+ umin = user;
+ umax = -1;
+ } else if (*endptr == '-') {
+ /* <userid>-<userid> */
+ umin = user;
+ umax = atol(endptr+1);
+ } else {
+ fprintf (stderr,
+ _("Unknown user or range: %s\n"),
+ optarg);
+ exit (1);
+ }
}
- uflg++;
- user = pwent->pw_uid;
break;
default:
usage ();
More information about the Pkg-shadow-commits
mailing list