⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 adcp.c

📁 C实现的MUD,对大家基本入门网络游戏很有帮助!
💻 C
字号:
// cp.c#include <ansi.h>inherit F_CLEAN_UP;int copy_dir(string src, string dst, int dir_existed);int help(object me);// value of call parameter#define DIR_EXISTED             1#define DIR_MAY_NOT_EXISTED     0int main(object me, string arg){        string *fn;        string src, dst;        int copy_dir;        int count;        if (me != this_player(1)) return 0;        seteuid(geteuid(me));        if (! arg)        {                help(me);                return 1;        }        if (sscanf(arg, "-R %s %s", src, dst) == 2)        {                copy_dir = 1;        } else        if (sscanf(arg, "%s %s", src, dst) == 2)        {                copy_dir = 0;        } else        {                write("格式错误!\n");                help(me);                return 1;        }        src = resolve_path(me->query("cwd"), src);        dst = resolve_path(me->query("cwd"), dst);        switch (file_size(src))        {        case -1:                write("没有这个(" + src + ")文件或目录,无法复制。\n");                return 1;        case -2:                if (copy_dir) break;                write("没有指定 -R 参数,不能复制目录(" + src + ")。\n");                return 1;        default:                // copy file, not directory.                copy_dir = 0;                break;        }        if (! copy_dir)        {                if (file_size(dst) == -2)                {                        // destination is a directory                        fn = explode(src, "/");                        dst += "/" + fn[sizeof(fn) - 1];                        fn = 0;                }                if (cp(src, dst))                        write("Ok.\n");                else                        write("你没有足够的读写权利。\n");                return 1;        }        if (dst[0..strlen(src) - 1] == src)        {                write("你不能将一个路径复制到自身或者是子路径中。\n");                return 1;        }        switch (file_size(dst))        {        case -2:                // destination is a directory                fn = explode(src, "/");                dst += "/";                fn = 0;                break;        case -1:                // no destination                break;        default:                // destition is a file, error                write("目录不能复制到文件内,请修正你的目的路径。\n");                return 1;        }                write( "复制目录中,请稍候...\n" );        count = copy_dir(src, dst, DIR_MAY_NOT_EXISTED);        if (count)                write(HIY "总共有" + count + "个文件被成功复制。\n" NOR);        return 1;}int copy_dir(string src, string dst, int dir_existed){        mixed *file;        int count;        int i;/*        if (! is_root(previous_object()))                return 0;*/        count = 0;        if (src[strlen(src) - 1] != '/') src += "/";        if (dst[strlen(dst) - 1] != '/') dst += "/";        // assure dst existed        if (! dir_existed) assure_file(dst);        file = get_dir(src, -1);        if (! sizeof(file))                return count;        write (HIC "复制目录(" + src + ") -- > (" + dst + ")。\n" NOR);        i = sizeof(file);        while (i--) {                reset_eval_cost();                if (file[i][1] != -2) {                       if ( file_size(dst) == -1 ) {                               mkdir(dst);                               write("创建目录" + dst + "成功。\n");                               }                       if (cp(src + file[i][0], dst + file[i][0])) {                                write(src + file[i][0] + "  -->  ");                                write(dst + file[i][0] + "\n");                                count++;                                 }                       }               }        i = sizeof(file);        while (i--)        {                reset_eval_cost();                if (file[i][1] == -2)                {                        mkdir(dst + file[i][0]);                        count += copy_dir(src + file[i][0],                                          dst + file[i][0],                                          DIR_EXISTED);                }        }        return count;}int help(object me){  write(@HELP指令格式 : cp [-R] <文件|路径名> <目的文件|目的路径名> 这个指令可以复制源文件成目的文件或复制到目的路径。如果使用了参数-R则可以复制一个目录,没有这个参数则不能复制路径。HELP    );    return 1;}

⌨️ 快捷键说明

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