lftp是什么?是little ftp,还是large ftp,还是什么lxxx ftp。
不晓得,也应该猜的不对,或许有其他意想不到的原因。
作为摸索,加些胡思乱想,自然情有可原。
lftp.cc,使用CmdExec类对象来实现程序运行功能。
先来看看CmdExec是啥玩意儿?有什么作用?简单看一下类结构。
类CmdExec包含public数据args、output、background、exit_code、prev_exit_code,这些是当前命令数据。
private数据cmd_buf、partial_cmd、alias_field、failed_exit_code、used_aliases、condition。
private method skip_cmd(int len);
含有struct cmd_rec、static_cmd_table、static_cmd_table_length、dyn_cmd_table。
methods :find_cmd(const char *cmd_name,const cmd_rec **ret)、exec_parsed_command()、enum parse_result、parse_one_cmd()、
数据:feeder、feeder_called、fed_at_finish
方法:AtFinish()
数据builtin、old_cwd、old_lcwd、slot、glob、args_glob、redirections、chain、next、queue_feeder、
方法:GetQueue、SameQueueParameters、
数据:max_waiting、saved_session、
方法:ReuseSavedSession、RevertToSavedSession、init
public:方法:FeedCmd、FeedArgV、PrependCmd、ExecParsed、needs_quotation、quotable、is_space、is_quote、FeedQuoted、Exit、AtExit、AtExitBg、AtExitFg、AtBackground、AtTerminate、EmptyCmds、WriteCmds、ReadCmds、AddNewJob、SuspendJob、CmdExec、~mdExec、Idle、Done、ExitCode、Do、FormatStatus、ShowRunStatus、AcceptSig、FormatPrompt、MakePrompt、
数据:interactive、show_status、top_level、verbose、auto_terminate_in_bg、status_line、
方法: SetCmdFeeder、RemoveFeeder、command_generator、GetFullCommandName
数据:remote_completion、long_running、csh_history、verify_host、verify_path、verify_path_cached、
方法:Reconfig、beep_if_long
数据:start_time、cwd_owner、cwd
方法:SaveCWD、RestoreCWD
数据:default_output
方法:top_vfprintf、SetInteractive、SetTopLevel、SetStatusLine、SetAutoTerminateInBackground、RegisterCommand、builtin_lcd、builtin_cd、builtin_open、builtin_exit、builtin_lftp、builtin_restart、builtin_glob、builtin_queue、builtin_queue_edit、builtin_local、default_cmd、ChangeSession、print_cmd_help、print_cmd_index、CmdByIndex、
数据:last_bg、wait_all、
方法:pre_stdout、ChangeSlot
数据:top