adrm.c
来自「C实现的MUD,对大家基本入门网络游戏很有帮助!」· C语言 代码 · 共 115 行
C
115 行
// rm.c#include <ansi.h> inherit F_CLEAN_UP; int rm_dir(string dir);int help(object me);int main(object me, string arg){ string file; string dir; int rm_dir; int count; if (me != this_player(1)) return 0; seteuid(geteuid(me)); if (! arg) { help(me); return 1; } if (sscanf(arg, "-R %s", dir) == 1) { rm_dir = 1; } else { dir = arg; rm_dir = 0; } file = resolve_path(me->query("cwd"), dir); switch (file_size(file)) { case -1: write("没有这个文件。\n"); return 1; case -2: if (rm_dir) { write(HIR "删除目录中,请稍候..." NOR), count = rm_dir(file); if (count) write(HIY "总共有" + count + "个文件被成功删除。\n" NOR); return 1; } if (rmdir(file)) write("成功的删除了目录(" + file + ").\n"); else write("你没有删除该目录的权限或者试图删除一个" "非空的目录。\n"); return 1; default: if (rm(file)) write("成功的删除了文件(" + file + ").\n"); else write("你没有删除它的权限。\n"); return 1; }} int rm_dir(string dir){ mixed *file; int count; int i;/* if (! is_root(previous_object())) return 0;*/ count = 0; if (dir[strlen(dir) - 1] != '/') dir += "/"; file = get_dir(dir, -1); i = sizeof(file); while (i--) { reset_eval_cost(); if (file[i][1] != -2) if (rm(dir + file[i][0])) count++; } i = sizeof(file); while (i--) { reset_eval_cost(); if (file[i][1] == -2) count += rm_dir(dir + file[i][0]); } write (HIC "删除目录(" + dir + ")。\n" NOR); rmdir(dir); return count;}int help(object me){ write(@HELP指令格式 : rm [-R] 档案名 此指令可让你删除某个档案或目录。如果使用了-R参数,可以删除非空的目录,使用该参数务必要小心,以免删除错路径。HELP ); return 1;}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?