1/* 2 * Copyright (c) 2017 Denys Vlasenko <vda.linux@googlemail.com> 3 * 4 * Licensed under GPLv2, see file LICENSE in this source tree. 5 */ 6//config:config NUKE 7//config: bool "nuke (2.9 kb)" 8//config: default n # off by default: too "accidentally destructive" 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: "Remove DIRs" 20 21#include "libbb.h" 22 23/* This is a NOEXEC applet. Be very careful! */ 24 25int nuke_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; 26int 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} 47