Blame


1 d3e1ab0c 2022-11-24 op /*
2 d3e1ab0c 2022-11-24 op * Copyright (c) 2022 Omar Polo <op@omarpolo.com>
3 d3e1ab0c 2022-11-24 op *
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.
7 d3e1ab0c 2022-11-24 op *
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.
15 d3e1ab0c 2022-11-24 op */
16 d3e1ab0c 2022-11-24 op
17 d3e1ab0c 2022-11-24 op #ifndef nitems
18 d3e1ab0c 2022-11-24 op #define nitems(_a) (sizeof((_a)) / sizeof((_a)[0]))
19 d3e1ab0c 2022-11-24 op #endif
20 d3e1ab0c 2022-11-24 op
21 d3e1ab0c 2022-11-24 op enum ftp_cmd {
22 d3e1ab0c 2022-11-24 op CMD_UNKNOWN,
23 d3e1ab0c 2022-11-24 op CMD_BELL,
24 d3e1ab0c 2022-11-24 op CMD_BYE,
25 d3e1ab0c 2022-11-24 op CMD_CD,
26 d3e1ab0c 2022-11-24 op CMD_EDIT,
27 d3e1ab0c 2022-11-24 op CMD_GET,
28 d3e1ab0c 2022-11-24 op CMD_HEXDUMP,
29 d3e1ab0c 2022-11-24 op CMD_LCD,
30 d3e1ab0c 2022-11-24 op CMD_LPWD,
31 d3e1ab0c 2022-11-24 op CMD_LS,
32 d3e1ab0c 2022-11-24 op CMD_PAGE,
33 d3e1ab0c 2022-11-24 op CMD_PIPE,
34 d3e1ab0c 2022-11-24 op CMD_PUT,
35 d3e1ab0c 2022-11-24 op CMD_RENAME,
36 d3e1ab0c 2022-11-24 op CMD_RM,
37 d3e1ab0c 2022-11-24 op CMD_VERBOSE,
38 d3e1ab0c 2022-11-24 op };
39 d3e1ab0c 2022-11-24 op
40 d3e1ab0c 2022-11-24 op void compl_setup(void);
41 d3e1ab0c 2022-11-24 op
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 *);
45 d3e1ab0c 2022-11-24 op #endif
46 d3e1ab0c 2022-11-24 op
47 d3e1ab0c 2022-11-24 op int dir_listing(const char *, int (*)(const struct np_stat *), int);
48 d3e1ab0c 2022-11-24 op
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 **);
64 d3e1ab0c 2022-11-24 op
65 d3e1ab0c 2022-11-24 op struct cmd {
66 d3e1ab0c 2022-11-24 op const char *name;
67 d3e1ab0c 2022-11-24 op int cmdtype;
68 d3e1ab0c 2022-11-24 op void (*fn)(int, const char **);
69 d3e1ab0c 2022-11-24 op };
70 d3e1ab0c 2022-11-24 op
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},
88 d3e1ab0c 2022-11-24 op };