aboutsummaryrefslogtreecommitdiff
path: root/core/rm.c
blob: a9ea996464e676ff70711618e3e5d24666c54d87 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include "../lib/sys/rmdir.h"
#include "../lib/sys/unlink.h"
#include "../lib/sys/stat.h"
#include "../lib/sys/errno.h"
#include "../lib/io/io.h"

int main(int argc, char **argv)
{
	stat_t st;
	int err;
	for (int i = 1; i < argc; ++i) {
		if ((err = stat(argv[i], &st)) < 0) {
			wff(STDERR_FD, "rm: %s %s\n", argv[i], errstr[-err]);
			continue;
		}

		if (st.mode & S_IFREG) {
			unlink(argv[i]);
		} else if (st.mode & S_IFDIR) {
			rmdir(argv[i]);
		} else {
			wff(STDERR_FD, "rm %s not of type 'regular file' or 'directory'\n", argv[i]);
		}
	}
}