master xplshn/aruu / cmd / posix / rmdir.c
 1/* See LICENSE file for copyright and license details. */
 2
 3
 4#include <libgen.h>
 5#include <string.h>
 6#include <unistd.h>
 7
 8#include "util.h"
 9
10static void
11usage(void)
12{
13	eprintf("usage: %s [-p] dir ...\n", argv0);
14}
15
16// ?man rmdir: remove empty directories
17// ?man arguments: dir ...
18// ?man remove empty directories from the filesystem
19int
20main(int argc, char *argv[])
21{
22	int pflag = 0, ret = 0;
23	char *d;
24
25	ARGBEGIN {
26	// ?man -p: remove parent directories if they are also empty
27	case 'p':
28		pflag = 1;
29		break;
30	default:
31		usage();
32	} ARGEND
33
34	if (!argc)
35		usage();
36
37	for (; *argv; argc--, argv++) {
38		if (rmdir(*argv) < 0) {
39			weprintf("rmdir %s:", *argv);
40			ret = 1;
41		} else if (pflag) {
42			d = dirname(*argv);
43			for (; strcmp(d, "/") && strcmp(d, ".") ;) {
44				if (rmdir(d) < 0) {
45					weprintf("rmdir %s:", d);
46					ret = 1;
47					break;
48				}
49				d = dirname(d);
50			}
51		}
52	}
53
54	return ret;
55}