From bf5151c8fc90a9910d62e58a4bbd1dcd8967e1a9 Mon Sep 17 00:00:00 2001 From: steve Date: Sat, 14 Dec 1996 06:13:51 +0000 Subject: -Wall cleaning and implement -p commandline option. -p mod obtained from: NetBSD --- bin/rmdir/rmdir.c | 52 +++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 45 insertions(+), 7 deletions(-) (limited to 'bin/rmdir/rmdir.c') diff --git a/bin/rmdir/rmdir.c b/bin/rmdir/rmdir.c index e47cbb2..b9151dd 100644 --- a/bin/rmdir/rmdir.c +++ b/bin/rmdir/rmdir.c @@ -30,17 +30,17 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id$ + * $Id: rmdir.c,v 1.2 1994/09/24 02:57:13 davidg Exp $ */ #ifndef lint -static char copyright[] = +static char const copyright[] = "@(#) Copyright (c) 1992, 1993, 1994\n\ The Regents of the University of California. All rights reserved.\n"; #endif /* not lint */ #ifndef lint -static char sccsid[] = "@(#)rmdir.c 8.3 (Berkeley) 4/2/94"; +static char const sccsid[] = "@(#)rmdir.c 8.3 (Berkeley) 4/2/94"; #endif /* not lint */ #include @@ -50,6 +50,7 @@ static char sccsid[] = "@(#)rmdir.c 8.3 (Berkeley) 4/2/94"; #include #include +int rm_path __P((char *)); void usage __P((void)); int @@ -58,9 +59,14 @@ main(argc, argv) char *argv[]; { int ch, errors; + int pflag; - while ((ch = getopt(argc, argv, "")) != EOF) + pflag = 0; + while ((ch = getopt(argc, argv, "p")) != EOF) switch(ch) { + case 'p': + pflag = 1; + break; case '?': default: usage(); @@ -71,18 +77,50 @@ main(argc, argv) if (argc == 0) usage(); - for (errors = 0; *argv; ++argv) + for (errors = 0; *argv; argv++) { + char *p; + + /* Delete trailing slashes, per POSIX. */ + p = *argv + strlen(*argv); + while (--p > *argv && *p == '/') + ; + *++p = '\0'; + if (rmdir(*argv) < 0) { warn("%s", *argv); errors = 1; - } + } else if (pflag) + errors |= rm_path(*argv); + } + exit(errors); } +int +rm_path(path) + char *path; +{ + char *p; + + while ((p = strrchr(path, '/')) != NULL) { + /* Delete trailing slashes. */ + while (--p > path && *p == '/') + ; + *++p = '\0'; + + if (rmdir(path) < 0) { + warn("%s", path); + return (1); + } + } + + return (0); +} + void usage() { - (void)fprintf(stderr, "usage: rmdir directory ...\n"); + (void)fprintf(stderr, "usage: rmdir [-p] directory ...\n"); exit(1); } -- cgit v1.1