tnftpd 源码 分析

#2013_10_03   星期四   add by greshem

J:\portage\net-ftp\tnftp\tnftp-20100108.chm::/S/55.html#L143
main
     for (;;)
     cmdscanner();
733      getcmd(margv[0]);
        #在 cmdtab  中 查找函数 cmd  命令  
761     (*c->c_handler)(margc, margv);

#==========================================================================
#注册的 命令行的列表
 197 struct cmd cmdtab[] = {
 198         { "!",          H(shellhelp),   0, 0, 0, CMPL0          shell },
 199         { "$",          H(domachelp),   1, 0, 0, CMPL0          domacro },
 200         { "account",    H(accounthelp), 0, 1, 1, CMPL0          account},
 201         { "append",     H(appendhelp),  1, 1, 1, CMPL(lr)       put },
 202         { "ascii",      H(asciihelp),   0, 1, 1, CMPL0          setascii },
 203         { "bell",       H(beephelp),    0, 0, 0, CMPL0          setbell },
 204         { "binary",     H(binaryhelp),  0, 1, 1, CMPL0          setbinary },
 205         { "bye",        H(quithelp),    0, 0, 0, CMPL0          quit },
 206         { "case",       H(casehelp),    0, 0, 1, CMPL0          setcase },
 207         { "cd",         H(cdhelp),      0, 1, 1, CMPL(r)        cd },
 208         { "cdup",       H(cduphelp),    0, 1, 1, CMPL0          cdup },
 209         { "chmod",      H(chmodhelp),   0, 1, 1, CMPL(nr)       do_chmod },
 210         { "close",      H(disconhelp),  0, 1, 1, CMPL0          disconnect },
 211         { "cr",         H(crhelp),      0, 0, 0, CMPL0          setcr },
 212         { "debug",      H(debughelp),   0, 0, 0, CMPL0          setdebug },
 213         { "delete",     H(deletehelp),  0, 1, 1, CMPL(r)        delete },
 214         { "dir",        H(lshelp),      1, 1, 1, CMPL(rl)       ls },
 215         { "disconnect", H(disconhelp),  0, 1, 1, CMPL0          disconnect },
 216         { "edit",       H(edithelp),    0, 0, 0, CMPL0          setedit },
 217         { "epsv",       H(epsvhelp),    0, 0, 0, CMPL0          setepsv },
 218         { "epsv4",      H(epsv4help),   0, 0, 0, CMPL0          setepsv4 },
 219         { "epsv6",      H(epsv6help),   0, 0, 0, CMPL0          setepsv6 },
 220         { "exit",       H(quithelp),    0, 0, 0, CMPL0          quit },
 221         { "features",   H(feathelp),    0, 1, 1, CMPL0          feat },
 222         { "fget",       H(fgethelp),    1, 1, 1, CMPL(l)        fget },
 223         { "form",       H(formhelp),    0, 1, 1, CMPL0          setform },
 224         { "ftp",        H(connecthelp), 0, 0, 1, CMPL0          setpeer },
 225         { "gate",       H(gatehelp),    0, 0, 0, CMPL0          setgate },
 226         { "get",        H(receivehelp), 1, 1, 1, CMPL(rl)       get },
 227         { "glob",       H(globhelp),    0, 0, 0, CMPL0          setglob },
 228         { "hash",       H(hashhelp),    0, 0, 0, CMPL0          sethash },
 229         { "help",       H(helphelp),    0, 0, 1, CMPL(C)        help },
 230         { "idle",       H(idlehelp),    0, 1, 1, CMPL0          idlecmd },
 231         { "image",      H(binaryhelp),  0, 1, 1, CMPL0          setbinary },
 232         { "lcd",        H(lcdhelp),     0, 0, 0, CMPL(l)        lcd },
 233         { "less",       H(pagehelp),    1, 1, 1, CMPL(r)        page },
 234         { "lpage",      H(lpagehelp),   0, 0, 0, CMPL(l)        lpage },
 235         { "lpwd",       H(lpwdhelp),    0, 0, 0, CMPL0          lpwd },
 236         { "ls",         H(lshelp),      1, 1, 1, CMPL(rl)       ls },
 237         { "macdef",     H(macdefhelp),  0, 0, 0, CMPL0          macdef },
 238         { "mdelete",    H(mdeletehelp), 1, 1, 1, CMPL(R)        mdelete },
 239         { "mdir",       H(mlshelp),     1, 1, 1, CMPL(R)        mls },
 240         { "mget",       H(mgethelp),    1, 1, 1, CMPL(R)        mget },
 241         { "mkdir",      H(mkdirhelp),   0, 1, 1, CMPL(r)        makedir },
 242         { "mls",        H(mlshelp),     1, 1, 1, CMPL(R)        mls },
 243         { "mlsd",       H(mlsdhelp),    1, 1, 1, CMPL(r)        ls },
 244         { "mlst",       H(mlsthelp),    1, 1, 1, CMPL(r)        mlst },
 245         { "mode",       H(modehelp),    0, 1, 1, CMPL0          setftmode },
 246         { "modtime",    H(modtimehelp), 0, 1, 1, CMPL(r)        modtime },
 247         { "more",       H(pagehelp),    1, 1, 1, CMPL(r)        page },
 248         { "mput",       H(mputhelp),    1, 1, 1, CMPL(L)        mput },
 249         { "mreget",     H(mregethelp),  1, 1, 1, CMPL(R)        mget },
 250         { "msend",      H(mputhelp),    1, 1, 1, CMPL(L)        mput },
 251         { "newer",      H(newerhelp),   1, 1, 1, CMPL(r)        newer },
 252         { "nlist",      H(lshelp),      1, 1, 1, CMPL(rl)       ls },
 253         { "nmap",       H(nmaphelp),    0, 0, 1, CMPL0          setnmap },
 254         { "ntrans",     H(ntranshelp),  0, 0, 1, CMPL0          setntrans },
 255         { "open",       H(connecthelp), 0, 0, 1, CMPL0          setpeer },
 256         { "page",       H(pagehelp),    1, 1, 1, CMPL(r)        page },
 257         { "passive",    H(passivehelp), 0, 0, 0, CMPL0          setpassive },
 258         { "pdir",       H(plshelp),     1, 1, 1, CMPL(r)        ls },
 259         { "pls",        H(plshelp),     1, 1, 1, CMPL(r)        ls },
 260         { "pmlsd",      H(pmlsdhelp),   1, 1, 1, CMPL(r)        ls },
 261         { "preserve",   H(preservehelp),0, 0, 0, CMPL0          setpreserve },
 262         { "progress",   H(progresshelp),0, 0, 0, CMPL0          setprogress },
 263         { "prompt",     H(prompthelp),  0, 0, 0, CMPL0          setprompt },
 264         { "proxy",      H(proxyhelp),   0, 0, 1, CMPL(c)        doproxy },
 265         { "put",        H(sendhelp),    1, 1, 1, CMPL(lr)       put },
 266         { "pwd",        H(pwdhelp),     0, 1, 1, CMPL0          pwd },
 267         { "quit",       H(quithelp),    0, 0, 0, CMPL0          quit },
 268         { "quote",      H(quotehelp),   1, 1, 1, CMPL0          quote },
 269         { "rate",       H(ratehelp),    0, 0, 0, CMPL0          setrate },
 270         { "rcvbuf",     H(xferbufhelp), 0, 0, 0, CMPL0          setxferbuf },
 271         { "recv",       H(receivehelp), 1, 1, 1, CMPL(rl)       get },
 272         { "reget",      H(regethelp),   1, 1, 1, CMPL(rl)       reget },
 273         { "remopts",    H(optshelp),    0, 1, 1, CMPL0          opts },
 274         { "rename",     H(renamehelp),  0, 1, 1, CMPL(rr)       renamefile },
 275         { "reset",      H(resethelp),   0, 1, 1, CMPL0          reset },
 276         { "restart",    H(restarthelp), 1, 1, 1, CMPL0          restart },
 277         { "rhelp",      H(remotehelp),  0, 1, 1, CMPL0          rmthelp },
 278         { "rmdir",      H(rmdirhelp),   0, 1, 1, CMPL(r)        removedir },
 279         { "rstatus",    H(rmtstatushelp),0, 1, 1, CMPL(r)       rmtstatus },
 280         { "runique",    H(runiquehelp), 0, 0, 1, CMPL0          setrunique },
 281         { "send",       H(sendhelp),    1, 1, 1, CMPL(lr)       put },
 282         { "sendport",   H(porthelp),    0, 0, 0, CMPL0          setport },
 283         { "set",        H(sethelp),     0, 0, 0, CMPL(o)        setoption },
 284         { "site",       H(sitehelp),    0, 1, 1, CMPL0          site },
 285         { "size",       H(sizecmdhelp), 1, 1, 1, CMPL(r)        sizecmd },
 286         { "sndbuf",     H(xferbufhelp), 0, 0, 0, CMPL0          setxferbuf },
 287         { "status",     H(statushelp),  0, 0, 1, CMPL0          status },
 288         { "struct",     H(structhelp),  0, 1, 1, CMPL0          setstruct },
 289         { "sunique",    H(suniquehelp), 0, 0, 1, CMPL0          setsunique },
 290         { "system",     H(systemhelp),  0, 1, 1, CMPL0          syst },
 291         { "tenex",      H(tenexhelp),   0, 1, 1, CMPL0          settenex },
 292         { "throttle",   H(ratehelp),    0, 0, 0, CMPL0          setrate },
 293         { "trace",      H(tracehelp),   0, 0, 0, CMPL0          settrace },
 294         { "type",       H(typehelp),    0, 1, 1, CMPL0          settype },
 295         { "umask",      H(umaskhelp),   0, 1, 1, CMPL0          do_umask },
 296         { "unset",      H(unsethelp),   0, 0, 0, CMPL(o)        unsetoption },
 297         { "usage",      H(usagehelp),   0, 0, 1, CMPL(C)        help },
 298         { "user",       H(userhelp),    0, 1, 1, CMPL0          user },
 299         { "verbose",    H(verbosehelp), 0, 0, 0, CMPL0          setverbose },
 300         { "xferbuf",    H(xferbufhelp), 0, 0, 0, CMPL0          setxferbuf },
 301         { "?",          H(helphelp),    0, 0, 1, CMPL(C)        help },
 302         { NULL,         NULL,           0, 0, 0, CMPL0          NULL },



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值