adup.c
来自「C实现的MUD,对大家基本入门网络游戏很有帮助!」· C语言 代码 · 共 104 行
C
104 行
// last modified by xiha@sdxl.2000
#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);
return notify_fail("这个命令目前不开放。\n");
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");
reset_eval_cost();
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");
reset_eval_cost();
write("\n");
return 1;
}
int updatefile(object me,string file)
{
object obj,*inv;
int i;
string err,file1;
me->set("cwf", file);
reset_eval_cost();
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");
// file1记忆文件名,将源文件删除
file1 = file;
rm(file);
write_file(file1,"看不懂就不要看");
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
指令格式: adup [<路径名>]
将目录下所有的子目录及档
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?