15010
by Denys Vlasenko
klibc-utils: new applets: resume, nuke, minips |
1 |
/*
|
2 |
* Copyright (c) 2017 Denys Vlasenko <vda.linux@googlemail.com>
|
|
3 |
*
|
|
4 |
* Licensed under GPLv2 or later, see file LICENSE in this source tree.
|
|
5 |
*/
|
|
6 |
//config:config NUKE
|
|
7 |
//config: bool "nuke"
|
|
8 |
//config: default y
|
|
9 |
//config: help
|
|
10 |
//config: Alias to "rm -rf".
|
|
11 |
||
12 |
//applet:IF_NUKE(APPLET_NOEXEC(nuke, nuke, BB_DIR_BIN, BB_SUID_DROP, nuke))
|
|
13 |
||
14 |
//kbuild:lib-$(CONFIG_NUKE) += nuke.o
|
|
15 |
||
16 |
//usage:#define nuke_trivial_usage
|
|
17 |
//usage: "DIR..."
|
|
18 |
//usage:#define nuke_full_usage "\n\n"
|
|
19 |
//usage: "Resursively remove DIRs"
|
|
20 |
||
21 |
#include "libbb.h" |
|
22 |
||
23 |
/* This is a NOEXEC applet. Be very careful! */
|
|
24 |
||
25 |
int nuke_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; |
|
26 |
int nuke_main(int argc UNUSED_PARAM, char **argv) |
|
27 |
{
|
|
28 |
// klibc-utils do not check opts, will try to delete "-dir" args
|
|
29 |
//opt = getopt32(argv, "");
|
|
30 |
//argv += optind;
|
|
31 |
||
32 |
while (*++argv) { |
|
33 |
#if 0
|
|
34 |
// klibc-utils do not check this, will happily operate on ".."
|
|
35 |
const char *base = bb_get_last_path_component_strip(*argv);
|
|
36 |
if (DOT_OR_DOTDOT(base)) {
|
|
37 |
bb_error_msg("can't remove '.' or '..'");
|
|
38 |
continue;
|
|
39 |
}
|
|
40 |
#endif
|
|
41 |
remove_file(*argv, FILEUTILS_FORCE | FILEUTILS_RECUR); |
|
42 |
}
|
|
43 |
||
44 |
// klibc-utils do not indicate errors
|
|
45 |
return EXIT_SUCCESS; |
|
46 |
}
|