2 d3e1ab0c 2022-11-24 op * Copyright (c) 2022 Omar Polo <op@omarpolo.com>
4 d3e1ab0c 2022-11-24 op * Permission to use, copy, modify, and distribute this software for any
5 d3e1ab0c 2022-11-24 op * purpose with or without fee is hereby granted, provided that the above
6 d3e1ab0c 2022-11-24 op * copyright notice and this permission notice appear in all copies.
8 d3e1ab0c 2022-11-24 op * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9 d3e1ab0c 2022-11-24 op * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10 d3e1ab0c 2022-11-24 op * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
11 d3e1ab0c 2022-11-24 op * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12 d3e1ab0c 2022-11-24 op * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
13 d3e1ab0c 2022-11-24 op * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
14 d3e1ab0c 2022-11-24 op * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17 d3e1ab0c 2022-11-24 op #ifndef nitems
18 d3e1ab0c 2022-11-24 op #define nitems(_a) (sizeof((_a)) / sizeof((_a)[0]))
21 d3e1ab0c 2022-11-24 op enum ftp_cmd {
40 d3e1ab0c 2022-11-24 op void compl_setup(void);
42 d3e1ab0c 2022-11-24 op #if !HAVE_READLINE
43 d3e1ab0c 2022-11-24 op char *readline(const char *);
44 d3e1ab0c 2022-11-24 op void add_history(const char *);
47 d3e1ab0c 2022-11-24 op int dir_listing(const char *, int (*)(const struct np_stat *), int);
49 d3e1ab0c 2022-11-24 op void cmd_bell(int, const char **);
50 d3e1ab0c 2022-11-24 op void cmd_bye(int, const char **);
51 d3e1ab0c 2022-11-24 op void cmd_cd(int, const char **);
52 d3e1ab0c 2022-11-24 op void cmd_edit(int, const char **);
53 d3e1ab0c 2022-11-24 op void cmd_get(int, const char **);
54 d3e1ab0c 2022-11-24 op void cmd_hexdump(int, const char **);
55 d3e1ab0c 2022-11-24 op void cmd_lcd(int, const char **);
56 d3e1ab0c 2022-11-24 op void cmd_lpwd(int, const char **);
57 d3e1ab0c 2022-11-24 op void cmd_ls(int, const char **);
58 d3e1ab0c 2022-11-24 op void cmd_page(int, const char **);
59 d3e1ab0c 2022-11-24 op void cmd_pipe(int, const char **);
60 d3e1ab0c 2022-11-24 op void cmd_put(int, const char **);
61 d3e1ab0c 2022-11-24 op void cmd_rename(int, const char **);
62 d3e1ab0c 2022-11-24 op void cmd_rm(int, const char **);
63 d3e1ab0c 2022-11-24 op void cmd_verbose(int, const char **);
66 d3e1ab0c 2022-11-24 op const char *name;
68 d3e1ab0c 2022-11-24 op void (*fn)(int, const char **);
71 d3e1ab0c 2022-11-24 op static struct cmd cmds[] = {
72 d3e1ab0c 2022-11-24 op {"bell", CMD_BELL, cmd_bell},
73 d3e1ab0c 2022-11-24 op {"bye", CMD_BYE, cmd_bye},
74 d3e1ab0c 2022-11-24 op {"cd", CMD_CD, cmd_cd},
75 d3e1ab0c 2022-11-24 op {"edit", CMD_EDIT, cmd_edit},
76 d3e1ab0c 2022-11-24 op {"get", CMD_GET, cmd_get},
77 d3e1ab0c 2022-11-24 op {"hexdump", CMD_HEXDUMP, cmd_hexdump},
78 d3e1ab0c 2022-11-24 op {"lcd", CMD_LCD, cmd_lcd},
79 d3e1ab0c 2022-11-24 op {"lpwd", CMD_LPWD, cmd_lpwd},
80 d3e1ab0c 2022-11-24 op {"ls", CMD_LS, cmd_ls},
81 d3e1ab0c 2022-11-24 op {"page", CMD_PAGE, cmd_page},
82 d3e1ab0c 2022-11-24 op {"pipe", CMD_PIPE, cmd_pipe},
83 d3e1ab0c 2022-11-24 op {"put", CMD_PUT, cmd_put},
84 d3e1ab0c 2022-11-24 op {"quit", CMD_BYE, cmd_bye}, /* alias */
85 d3e1ab0c 2022-11-24 op {"rename", CMD_RENAME, cmd_rename},
86 d3e1ab0c 2022-11-24 op {"rm", CMD_RM, cmd_rm},
87 d3e1ab0c 2022-11-24 op {"verbose", CMD_VERBOSE, cmd_verbose},