Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 16 Oct 1996 03:11:23 -0700 (PDT)
From:      John-Mark Gurney <jmg@nike.efn.org>
To:        FreeBSD-gnats-submit@freebsd.org
Subject:   bin/1824: 
Message-ID:  <199610161011.DAA21593@nike.efn.org>
Resent-Message-ID: <199610161020.DAA06547@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help

>Number:         1824
>Category:       bin
>Synopsis:       
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-bugs
>State:          open
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Wed Oct 16 03:20:02 PDT 1996
>Last-Modified:
>Originator:     John-Mark Gurney
>Organization:
Cu Networking
>Release:        FreeBSD 2.2-960801-SNAP i386
>Environment:

nothing special.. changes relative to -current
	

>Description:

got anoyed with not being able to get some depth out of du like two or three
directories with out getting those really long anoying 10 deep dirs also...
added a -d option to du to provide a limit on depth, very easy fix as fts
provides depth in the structure...
	

>How-To-Repeat:

run: du -d 2
and see that it is an invalid option :)
	

>Fix:
	
apply this patch (includes documentation patches) i have been running this 
patch for a while now, no wierd things have happened over here, both using -s
and -d...:

Index: du.1
===================================================================
RCS file: /usr/cvs/src/usr.bin/du/du.1,v
retrieving revision 1.5
diff -c -r1.5 du.1
*** du.1	1996/08/29 18:05:49	1.5
--- du.1	1996/09/15 05:50:11
***************
*** 41,47 ****
  .Sh SYNOPSIS
  .Nm du
  .Op Fl H | Fl L | Fl P
! .Op Fl a | Fl s
  .Op Fl x
  .Op Ar file ...
  .Sh DESCRIPTION
--- 41,47 ----
  .Sh SYNOPSIS
  .Nm du
  .Op Fl H | Fl L | Fl P
! .Op Fl a | s | d Ar depth
  .Op Fl x
  .Op Ar file ...
  .Sh DESCRIPTION
***************
*** 68,73 ****
--- 68,77 ----
  No symbolic links are followed.
  .It Fl a
  Display an entry for each file in the file hierarchy.
+ .It Fl d Ar depth
+ Displays all directories only
+ .Ar depth
+ directories deep.
  .It Fl k
  Report in 1024-byte (1-Kbyte) blocks rather than the default.  Note that
  this overrides the
Index: du.c
===================================================================
RCS file: /usr/cvs/src/usr.bin/du/du.c,v
retrieving revision 1.5
diff -c -r1.5 du.c
*** du.c	1995/05/30 06:29:49	1.5
--- du.c	1996/10/16 09:40:46
***************
*** 66,79 ****
  	FTS *fts;
  	FTSENT *p;
  	long blocksize;
! 	int ftsoptions, listdirs, listfiles;
! 	int Hflag, Lflag, Pflag, aflag, ch, notused, rval, sflag;
  	char **save;
  
  	save = argv;
! 	Hflag = Lflag = Pflag = aflag = sflag = 0;
  	ftsoptions = FTS_PHYSICAL;
! 	while ((ch = getopt(argc, argv, "HLPaksx")) != EOF)
  		switch (ch) {
  		case 'H':
  			Hflag = 1;
--- 66,80 ----
  	FTS *fts;
  	FTSENT *p;
  	long blocksize;
! 	int ftsoptions, listdirs, listfiles, depth;
! 	int Hflag, Lflag, Pflag, aflag, ch, notused, rval, sflag, dflag;
  	char **save;
  
  	save = argv;
! 	Hflag = Lflag = Pflag = aflag = sflag = dflag = 0;
! 	depth = INT_MAX;
  	ftsoptions = FTS_PHYSICAL;
! 	while ((ch = getopt(argc, argv, "HLPad:ksx")) != EOF)
  		switch (ch) {
  		case 'H':
  			Hflag = 1;
***************
*** 99,104 ****
--- 100,113 ----
  		case 'x':
  			ftsoptions |= FTS_XDEV;
  			break;
+ 		case 'd':
+ 			dflag = 1;
+ 			depth=atoi(optarg);
+ 			if(errno == ERANGE) {
+ 				(void)fprintf(stderr, "Invalid argument to option d: %s", optarg);
+ 				usage();
+ 			}
+ 			break;
  		case '?':
  		default:
  			usage();
***************
*** 126,137 ****
  	}
  
  	if (aflag) {
! 		if (sflag)
  			usage();
  		listdirs = listfiles = 1;
! 	} else if (sflag)
  		listdirs = listfiles = 0;
! 	else {
  		listfiles = 0;
  		listdirs = 1;
  	}
--- 135,151 ----
  	}
  
  	if (aflag) {
! 		if (sflag || dflag)
  			usage();
  		listdirs = listfiles = 1;
! 	} else if (sflag) {
! 		if (dflag)
! 			usage();
  		listdirs = listfiles = 0;
! 	} else if (dflag) {
! 		listfiles = 0;
! 		listdirs = 1;
! 	} else {
  		listfiles = 0;
  		listdirs = 1;
  	}
***************
*** 160,166 ****
  			 * or directories and this is post-order of the
  			 * root of a traversal, display the total.
  			 */
! 			if (listdirs || !listfiles && !p->fts_level)
  				(void)printf("%ld\t%s\n",
  				    howmany(p->fts_number, blocksize),
  				    p->fts_path);
--- 174,180 ----
  			 * or directories and this is post-order of the
  			 * root of a traversal, display the total.
  			 */
! 			if (p->fts_level <= depth && listdirs || !listfiles && !p->fts_level)
  				(void)printf("%ld\t%s\n",
  				    howmany(p->fts_number, blocksize),
  				    p->fts_path);
***************
*** 227,232 ****
  {
  
  	(void)fprintf(stderr,
! 		"usage: du [-H | -L | -P] [-a | -s] [-k] [-x] [file ...]\n");
  	exit(1);
  }
--- 241,246 ----
  {
  
  	(void)fprintf(stderr,
! 		"usage: du [-H | -L | -P] [-a | -s | -d depth] [-k] [-x] [file ...]\n");
  	exit(1);
  }
	

>Audit-Trail:
>Unformatted:
du doesn't have a depth limit factor



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199610161011.DAA21593>