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