diff options
author | Denis Vlasenko <vda.linux@googlemail.com> | 2009-03-17 12:40:34 +0000 |
---|---|---|
committer | Denis Vlasenko <vda.linux@googlemail.com> | 2009-03-17 12:40:34 +0000 |
commit | 1a825551083fa0b8e7ece6391a58dc417199a2e3 (patch) | |
tree | de487a3da4fcae08bec3ec2808f87be4e6bd9685 /networking/ftpd.c | |
parent | edb0de4283e00bbf930af689a90d8ae01c6b017b (diff) | |
download | busybox-w32-1a825551083fa0b8e7ece6391a58dc417199a2e3.tar.gz busybox-w32-1a825551083fa0b8e7ece6391a58dc417199a2e3.tar.bz2 busybox-w32-1a825551083fa0b8e7ece6391a58dc417199a2e3.zip |
ftpd: instead of wordy HELP, implement useful, and smaller, FEAT.
(HELP is still "supported" as an alias to FEAT)
text data bss dec hex filename
807331 468 7856 815655 c7227 busybox_old
807246 468 7856 815570 c71d2 busybox_unstripped
Diffstat (limited to 'networking/ftpd.c')
-rw-r--r-- | networking/ftpd.c | 29 |
1 files changed, 14 insertions, 15 deletions
diff --git a/networking/ftpd.c b/networking/ftpd.c index c932497e5..2c1d42ebf 100644 --- a/networking/ftpd.c +++ b/networking/ftpd.c | |||
@@ -285,7 +285,7 @@ handle_stat(void) | |||
285 | STR(FTP_STATOK)" Ok\r\n"); | 285 | STR(FTP_STATOK)" Ok\r\n"); |
286 | } | 286 | } |
287 | 287 | ||
288 | /* TODO: implement FEAT. Example: | 288 | /* Examples of HELP and FEAT: |
289 | # nc -vvv ftp.kernel.org 21 | 289 | # nc -vvv ftp.kernel.org 21 |
290 | ftp.kernel.org (130.239.17.4:21) open | 290 | ftp.kernel.org (130.239.17.4:21) open |
291 | 220 Welcome to ftp.kernel.org. | 291 | 220 Welcome to ftp.kernel.org. |
@@ -309,16 +309,14 @@ HELP | |||
309 | 214 Help OK. | 309 | 214 Help OK. |
310 | */ | 310 | */ |
311 | static void | 311 | static void |
312 | handle_help(void) | 312 | handle_feat(unsigned status) |
313 | { | 313 | { |
314 | cmdio_write_raw(STR(FTP_HELP)"-Commands:\r\n" | 314 | cmdio_write(status, "-Features:"); |
315 | " ALLO CDUP CWD EPSV HELP LIST\r\n" | 315 | cmdio_write_raw(" EPSV\r\n" |
316 | " MODE NLST NOOP PASS PASV PORT PWD QUIT\r\n" | 316 | " PASV\r\n" |
317 | " REST RETR SIZE STAT STRU SYST TYPE USER\r\n" | 317 | " REST STREAM\r\n" |
318 | #if ENABLE_FEATURE_FTP_WRITE | 318 | " SIZE\r\n"); |
319 | " APPE DELE MKD RMD RNFR RNTO STOR STOU\r\n" | 319 | cmdio_write(status, " Ok"); |
320 | #endif | ||
321 | STR(FTP_HELP)" Ok\r\n"); | ||
322 | } | 320 | } |
323 | 321 | ||
324 | /* Download commands */ | 322 | /* Download commands */ |
@@ -904,7 +902,7 @@ cmdio_get_cmd_and_arg(void) | |||
904 | cmd[len--] = '\0'; | 902 | cmd[len--] = '\0'; |
905 | 903 | ||
906 | if (G.verbose > 1) | 904 | if (G.verbose > 1) |
907 | bb_error_msg("%s", cmd); | 905 | verbose_log(cmd); |
908 | 906 | ||
909 | G.ftp_arg = strchr(cmd, ' '); | 907 | G.ftp_arg = strchr(cmd, ' '); |
910 | if (G.ftp_arg != NULL) | 908 | if (G.ftp_arg != NULL) |
@@ -927,6 +925,7 @@ enum { | |||
927 | const_CWD = mk_const3('C', 'W', 'D'), | 925 | const_CWD = mk_const3('C', 'W', 'D'), |
928 | const_DELE = mk_const4('D', 'E', 'L', 'E'), | 926 | const_DELE = mk_const4('D', 'E', 'L', 'E'), |
929 | const_EPSV = mk_const4('E', 'P', 'S', 'V'), | 927 | const_EPSV = mk_const4('E', 'P', 'S', 'V'), |
928 | const_FEAT = mk_const4('F', 'E', 'A', 'T'), | ||
930 | const_HELP = mk_const4('H', 'E', 'L', 'P'), | 929 | const_HELP = mk_const4('H', 'E', 'L', 'P'), |
931 | const_LIST = mk_const4('L', 'I', 'S', 'T'), | 930 | const_LIST = mk_const4('L', 'I', 'S', 'T'), |
932 | const_MKD = mk_const3('M', 'K', 'D'), | 931 | const_MKD = mk_const3('M', 'K', 'D'), |
@@ -1126,8 +1125,9 @@ int ftpd_main(int argc, char **argv) | |||
1126 | handle_cwd(); | 1125 | handle_cwd(); |
1127 | else if (cmdval == const_CDUP) /* cd .. */ | 1126 | else if (cmdval == const_CDUP) /* cd .. */ |
1128 | handle_cdup(); | 1127 | handle_cdup(); |
1129 | else if (cmdval == const_HELP) | 1128 | /* HELP is nearly useless, but we can reuse FEAT for it */ |
1130 | handle_help(); | 1129 | else if (cmdval == const_HELP || cmdval == const_FEAT) |
1130 | handle_feat(cmdval == const_HELP ? STRNUM32(FTP_HELP) : STRNUM32(FTP_STATOK)); | ||
1131 | else if (cmdval == const_LIST) /* ls -l */ | 1131 | else if (cmdval == const_LIST) /* ls -l */ |
1132 | handle_list(); | 1132 | handle_list(); |
1133 | else if (cmdval == const_NLST) /* "name list", bare ls */ | 1133 | else if (cmdval == const_NLST) /* "name list", bare ls */ |
@@ -1186,8 +1186,7 @@ int ftpd_main(int argc, char **argv) | |||
1186 | else { | 1186 | else { |
1187 | /* Which unsupported commands were seen in the wild? | 1187 | /* Which unsupported commands were seen in the wild? |
1188 | * (doesn't necessarily mean "we must support them") | 1188 | * (doesn't necessarily mean "we must support them") |
1189 | * lftp 3.6.3: FEAT - is it useful? | 1189 | * lftp 3.6.3: MDTM - works fine without it anyway |
1190 | * MDTM - works fine without it anyway | ||
1191 | */ | 1190 | */ |
1192 | cmdio_write_raw(STR(FTP_BADCMD)" Unknown command\r\n"); | 1191 | cmdio_write_raw(STR(FTP_BADCMD)" Unknown command\r\n"); |
1193 | } | 1192 | } |