Date: Thu, 29 Jul 1999 01:14:10 -0500 (CDT) From: pckizer@nostrum.com To: FreeBSD-gnats-submit@freebsd.org Subject: bin/12866: [PATCH] RFE for /bin/ls to add a -n option for showing uid/gid numerically Message-ID: <199907290614.BAA05429@hermit.bcs.nostrum.com>
index | next in thread | raw e-mail
>Number: 12866
>Category: bin
>Synopsis: [PATCH] RFE for /bin/ls to add a -n option for showing uid/gid numerically
>Confidential: no
>Severity: non-critical
>Priority: low
>Responsible: freebsd-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: change-request
>Submitter-Id: current-users
>Arrival-Date: Wed Jul 28 23:20:00 PDT 1999
>Closed-Date:
>Last-Modified:
>Originator: Philip Kizer
>Release: FreeBSD 3.2-STABLE i386
>Organization:
Texas A&M University
>Environment:
FreeBSD hermit.bcs.nostrum.com 3.2-STABLE FreeBSD 3.2-STABLE #0: Wed Jul 28 15:40:30 CDT 1999 root@hermit.bcs.nostrum.com:/opt/src/system/src/sys/compile/Hermit i386
>Description:
I am familiar with having a '-n' option to /bin/ls on other platforms (i.e.
Solaris/Linux/IRIX/etc) to print uid/gid information numerically in long
(-l) listings rather than performing username/groupname lookups. I was
unable to find any similar option to /bin/ls or similar programs. (Unless
I just completely overlooked it).
>How-To-Repeat:
No similar option found on FreeBSD, other OSs output similar to:
% ls -ldn
drwxr-x--x 9 1179 100 4096 Jul 29 00:53 .
>Fix:
Determine if my patch is acceptable, as given, or in concept; and apply in
/usr/src/bin/ls:
--- ls.c-old Wed Jul 28 15:16:56 1999
+++ ls.c Wed Jul 28 16:11:55 1999
@@ -100,6 +100,7 @@
int f_timesort; /* sort by time vice name */
int f_type; /* add type character for non-regular files */
int f_whiteout; /* show whiteout entries */
+int f_numbers; /* show uid/gid numbers rather than names */
int rval;
@@ -137,7 +138,7 @@
f_listdot = 1;
fts_options = FTS_PHYSICAL;
- while ((ch = getopt(argc, argv, "1ABCFHLPRTWabcdfgikloqrstu")) != -1) {
+ while ((ch = getopt(argc, argv, "1ABCFHLPRTWabcdfgiklnoqrstu")) != -1) {
switch (ch) {
/*
* The -1, -C and -l options all override each other so shell
@@ -209,6 +210,9 @@
case 'k':
f_kblocks = 1;
break;
+ case 'n':
+ f_numbers = 1;
+ break;
case 'o':
f_flags = 1;
break;
@@ -401,6 +405,7 @@
char *initmax;
int entries, needstats;
char *user, *group, *flags, buf[20]; /* 32 bits == 10 digits */
+ char user_num[8], group_num[8];
/*
* If list is NULL there are two possibilities: that the parent
@@ -512,10 +517,19 @@
btotal += sp->st_blocks;
if (f_longform) {
- user = user_from_uid(sp->st_uid, 0);
+ if (f_numbers) {
+ snprintf(user_num, sizeof(user_num),
+ "%d", sp->st_uid);
+ user = user_num;
+ snprintf(group_num, sizeof(group_num),
+ "%d", sp->st_gid);
+ group = user_num;
+ } else {
+ user = user_from_uid(sp->st_uid, 0);
+ group = group_from_gid(sp->st_gid, 0);
+ }
if ((ulen = strlen(user)) > maxuser)
maxuser = ulen;
- group = group_from_gid(sp->st_gid, 0);
if ((glen = strlen(group)) > maxgroup)
maxgroup = glen;
if (f_flags) {
>Release-Note:
>Audit-Trail:
>Unformatted:
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message
help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199907290614.BAA05429>
