updatedir.c

来自「C实现的MUD,对大家基本入门网络游戏很有帮助!」· C语言 代码 · 共 102 行

C
102
字号
// upddir.c //这个命令可以用来更新某个目录下以及所有子目录下的文件 //命令创建者win@SXTX ,email:wen_yue@163.net #include "/doc/help.h" inherit F_CLEAN_UP; int updatefile(object me,string file); int main(object me, string arg) { int i, j; string dir; mixed *file;                  seteuid( geteuid(me) ); dir = resolve_path(me->query("cwd"), arg); if( file_size(dir)==-2 && dir[strlen(dir)-1] != '/' ) dir += "/"; file = get_dir(dir, -1); if( !sizeof(file) ) {if (file_size(dir) == -2) return notify_fail("目录是空的。\n"); else return notify_fail("没有这个目录。\n"); } i = sizeof(file); while(i--) { if (file[i][1]==-2) file[i][0] += "/"; } write("目录:" + dir + "\n"); if (sizeof(file)) for(i=0, j = sizeof(file); i<j; i++) {                   if (file[i][1]!=-2 && sscanf(file[i][0], "%*s.c")                       && file[i][0][strlen(file[i][0])-1]=="c"[0]                      && file[i][0][strlen(file[i][0])-2]=="."[0])                   updatefile(me,dir+file[i][0]);                    else if (file[i][1]==-2) call_other(__FILE__,"main", me,dir+file[i][0]);                 } else write("    没有任何档案。\n"); write("\n"); return 1; } int updatefile(object me,string file) {     object obj,*inv;     int i;     string err; me->set("cwf", file); if (obj = find_object(file)) { if( obj==environment(me) ) { if( file_name(obj)==VOID_OB ) return notify_fail("你不能在 VOID_OB 里重新编译 VOID_OB。\n"); inv = all_inventory(obj); i = sizeof(inv); while(i--) if( userp(inv[i]) ) inv[i]->move(VOID_OB, 1); else inv[i] = 0; } destruct(obj); } if (obj) return notify_fail("无法清除旧程式码。\n");     write("重新编译 " + file + ":"); err = catch( call_other(file, "???") ); if (err) printf( "发生错误:\n%s\n", err ); else { write("成功!\n"); if( (i=sizeof(inv)) && (obj = find_object(file))) { while(i--) if( inv[i] && userp(inv[i]) ) inv[i]->move(obj, 1); } } } int help(object me) { write(@HELP 指令格式: upddir [<路径名>]   将目录下所有的子目录及档案, 如果没有指定目录, 则使用当前目录   范例: 'upddir /adm' 会将所有位於根/adm目录下的档案编译更新.   HELP ); return 1; } 

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?