bin/86710: Update bin/ls to have option to cancel -A with super user

Marcus Alves Grando mnag at FreeBSD.org
Thu Sep 29 08:00:23 PDT 2005


>Number:         86710
>Category:       bin
>Synopsis:       Update bin/ls to have option to cancel -A with super user
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          update
>Submitter-Id:   current-users
>Arrival-Date:   Thu Sep 29 15:00:21 GMT 2005
>Closed-Date:
>Last-Modified:
>Originator:     Marcus Alves Grando
>Release:        FreeBSD 6.0-BETA5 i386
>Organization:
>Environment:
System: FreeBSD marcus.grupos.com.br 6.0-BETA5 FreeBSD 6.0-BETA5 #14: Wed Sep 28 12:52:25 BRT 2005 root at marcus.grupos.com.br:/space/obj/usr/src/sys/MARCUS i386


	
>Description:

Update bin/ls to have option to cancel -A with super user

	
>How-To-Repeat:
	
>Fix:

	

--- ls.patch begins here ---
Index: ls.1
===================================================================
RCS file: /home/ncvs/src/bin/ls/ls.1,v
retrieving revision 1.91
diff -u -r1.91 ls.1
--- ls.1	6 Sep 2005 20:14:39 -0000	1.91
+++ ls.1	29 Sep 2005 04:21:49 -0000
@@ -40,7 +40,7 @@
 .Nd list directory contents
 .Sh SYNOPSIS
 .Nm
-.Op Fl ABCFGHLPRSTWZabcdfghiklmnopqrstuwx1
+.Op Fl ABCFGHILPRSTWZabcdfghiklmnopqrstuwx1
 .Op Ar
 .Sh DESCRIPTION
 For each operand that names a
@@ -73,6 +73,8 @@
 and
 .Pa .. .
 Always set for the super-user.
+.Fl I
+cancel this option.
 .It Fl B
 Force printing of non-printable characters (as defined by
 .Xr ctype 3
@@ -117,6 +119,12 @@
 or
 .Fl l
 options are specified.
+.It Fl I
+This option cancels the
+.Fl A
+option. Usually used by super user when
+.Fl A
+is not necessary.
 .It Fl L
 If argument is a symbolic link, list the file or directory the link references
 rather than the link itself.
Index: ls.c
===================================================================
RCS file: /home/ncvs/src/bin/ls/ls.c,v
retrieving revision 1.80
diff -u -r1.80 ls.c
--- ls.c	3 Jun 2005 11:05:58 -0000	1.80
+++ ls.c	29 Sep 2005 04:21:49 -0000
@@ -110,6 +110,8 @@
 static int f_kblocks;		/* print size in kilobytes */
 static int f_listdir;		/* list actual directory, not contents */
 static int f_listdot;		/* list files beginning with . */
+static int f_nolistdot;		/* don't list files beginning with . */
+static int f_forcelistdot;	/* force list files beginning with . */
        int f_longform;		/* long listing format */
        int f_nonprint;		/* show unprintables as ? */
 static int f_nosort;		/* don't sort output */
@@ -175,13 +177,9 @@
 			termwidth = atoi(p);
 	}
 
-	/* Root is -A automatically. */
-	if (!getuid())
-		f_listdot = 1;
-
 	fts_options = FTS_PHYSICAL;
  	while ((ch = getopt(argc, argv,
-	    "1ABCFGHLPRSTWZabcdfghiklmnopqrstuwx")) != -1) {
+	    "1ABCFGHILPRSTWZabcdfghiklmnopqrstuwx")) != -1) {
 		switch (ch) {
 		/*
 		 * The -1, -C, -x and -l options all override each other so
@@ -243,10 +241,14 @@
 			break;
 		case 'a':
 			fts_options |= FTS_SEEDOT;
-			/* FALLTHROUGH */
+			f_forcelistdot = 1;
+			break;
 		case 'A':
 			f_listdot = 1;
 			break;
+		case 'I':
+			f_nolistdot = 1;
+			break;
 		/* The -d option turns off the -R option. */
 		case 'd':
 			f_listdir = 1;
@@ -326,6 +328,10 @@
 	argc -= optind;
 	argv += optind;
 
+	/* Root is -A automatically. */
+	if (!getuid() && !f_nolistdot)
+		f_listdot = 1;
+
 	/* Enabling of colours is conditional on the environment. */
 	if (getenv("CLICOLOR") &&
 	    (isatty(STDOUT_FILENO) || getenv("CLICOLOR_FORCE")))
@@ -490,7 +496,8 @@
 			break;
 		case FTS_D:
 			if (p->fts_level != FTS_ROOTLEVEL &&
-			    p->fts_name[0] == '.' && !f_listdot)
+			    p->fts_name[0] == '.' && ((!f_listdot ||
+			    f_nolistdot) && !f_forcelistdot))
 				break;
 
 			/*
@@ -650,7 +657,8 @@
 			}
 		} else {
 			/* Only display dot file if -a/-A set. */
-			if (cur->fts_name[0] == '.' && !f_listdot) {
+			if (cur->fts_name[0] == '.' && ((!f_listdot ||
+			    f_nolistdot) && !f_forcelistdot)) {
 				cur->fts_number = NO_PRINT;
 				continue;
 			}
--- ls.patch ends here ---


>Release-Note:
>Audit-Trail:
>Unformatted:


More information about the freebsd-bugs mailing list