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 + -
显示快捷键?