FTP client debug changes

git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@3660 42af7a65-404d-4744-a932-0658087f49c3
This commit is contained in:
patacongo 2011-06-02 18:36:20 +00:00
parent d02a36dfd9
commit 7232a7819b
6 changed files with 92 additions and 81 deletions

@ -102,24 +102,24 @@ extern void ftpc_freefullpath(char *relpath);
/* FTP command handlers */ /* FTP command handlers */
extern int cmd_login(SESSION handle, int argc, char **argv); extern int cmd_rlogin(SESSION handle, int argc, char **argv);
extern int cmd_quit(SESSION handle, int argc, char **argv); extern int cmd_rquit(SESSION handle, int argc, char **argv);
extern int cmd_chdir(SESSION handle, int argc, char **argv); extern int cmd_rchdir(SESSION handle, int argc, char **argv);
extern int cmd_rpwd(SESSION handle, int argc, char **argv); extern int cmd_rpwd(SESSION handle, int argc, char **argv);
extern int cmd_cdup(SESSION handle, int argc, char **argv); extern int cmd_rcdup(SESSION handle, int argc, char **argv);
extern int cmd_mkdir(SESSION handle, int argc, char **argv); extern int cmd_rmkdir(SESSION handle, int argc, char **argv);
extern int cmd_rmdir(SESSION handle, int argc, char **argv); extern int cmd_rrmdir(SESSION handle, int argc, char **argv);
extern int cmd_unlink(SESSION handle, int argc, char **argv); extern int cmd_runlink(SESSION handle, int argc, char **argv);
extern int cmd_chmod(SESSION handle, int argc, char **argv); extern int cmd_rchmod(SESSION handle, int argc, char **argv);
extern int cmd_rename(SESSION handle, int argc, char **argv); extern int cmd_rrename(SESSION handle, int argc, char **argv);
extern int cmd_size(SESSION handle, int argc, char **argv); extern int cmd_rsize(SESSION handle, int argc, char **argv);
extern int cmd_time(SESSION handle, int argc, char **argv); extern int cmd_rtime(SESSION handle, int argc, char **argv);
extern int cmd_idle(SESSION handle, int argc, char **argv); extern int cmd_ridle(SESSION handle, int argc, char **argv);
extern int cmd_noop(SESSION handle, int argc, char **argv); extern int cmd_rnoop(SESSION handle, int argc, char **argv);
extern int cmd_rhelp(SESSION handle, int argc, char **argv); extern int cmd_rhelp(SESSION handle, int argc, char **argv);
extern int cmd_rls(SESSION handle, int argc, char **argv); extern int cmd_rls(SESSION handle, int argc, char **argv);
extern int cmd_get(SESSION handle, int argc, char **argv); extern int cmd_rget(SESSION handle, int argc, char **argv);
extern int cmd_put(SESSION handle, int argc, char **argv); extern int cmd_rput(SESSION handle, int argc, char **argv);
#endif /* __APPS_EXAMPLES_FTPC_FTPC_H */ #endif /* __APPS_EXAMPLES_FTPC_FTPC_H */

@ -61,10 +61,10 @@
****************************************************************************/ ****************************************************************************/
/**************************************************************************** /****************************************************************************
* Name: cmd_login * Name: cmd_rlogin
****************************************************************************/ ****************************************************************************/
int cmd_login(SESSION handle, int argc, char **argv) int cmd_rlogin(SESSION handle, int argc, char **argv)
{ {
struct ftpc_login_s login = {0, 0, 0, true}; struct ftpc_login_s login = {0, 0, 0, true};
@ -78,10 +78,10 @@ int cmd_login(SESSION handle, int argc, char **argv)
} }
/**************************************************************************** /****************************************************************************
* Name: cmd_quit * Name: cmd_rquit
****************************************************************************/ ****************************************************************************/
int cmd_quit(SESSION handle, int argc, char **argv) int cmd_rquit(SESSION handle, int argc, char **argv)
{ {
int ret = ftpc_quit(handle); int ret = ftpc_quit(handle);
if (ret < 0) if (ret < 0)
@ -94,10 +94,10 @@ int cmd_quit(SESSION handle, int argc, char **argv)
} }
/**************************************************************************** /****************************************************************************
* Name: cmd_chdir * Name: cmd_rchdir
****************************************************************************/ ****************************************************************************/
int cmd_chdir(SESSION handle, int argc, char **argv) int cmd_rchdir(SESSION handle, int argc, char **argv)
{ {
return ftpc_chdir(handle, argv[1]); return ftpc_chdir(handle, argv[1]);
} }
@ -119,64 +119,64 @@ int cmd_rpwd(SESSION handle, int argc, char **argv)
} }
/**************************************************************************** /****************************************************************************
* Name: cmd_cdup * Name: cmd_rcdup
****************************************************************************/ ****************************************************************************/
int cmd_cdup(SESSION handle, int argc, char **argv) int cmd_rcdup(SESSION handle, int argc, char **argv)
{ {
return ftpc_cdup(handle); return ftpc_cdup(handle);
} }
/**************************************************************************** /****************************************************************************
* Name: cmd_mkdir * Name: cmd_rmkdir
****************************************************************************/ ****************************************************************************/
int cmd_mkdir(SESSION handle, int argc, char **argv) int cmd_rmkdir(SESSION handle, int argc, char **argv)
{ {
return ftpc_mkdir(handle, argv[1]); return ftpc_mkdir(handle, argv[1]);
} }
/**************************************************************************** /****************************************************************************
* Name: cmd_rmdir * Name: cmd_rrmdir
****************************************************************************/ ****************************************************************************/
int cmd_rmdir(SESSION handle, int argc, char **argv) int cmd_rrmdir(SESSION handle, int argc, char **argv)
{ {
return ftpc_rmdir(handle, argv[1]); return ftpc_rmdir(handle, argv[1]);
} }
/**************************************************************************** /****************************************************************************
* Name: cmd_unlink * Name: cmd_runlink
****************************************************************************/ ****************************************************************************/
int cmd_unlink(SESSION handle, int argc, char **argv) int cmd_runlink(SESSION handle, int argc, char **argv)
{ {
return ftpc_unlink(handle, argv[1]); return ftpc_unlink(handle, argv[1]);
} }
/**************************************************************************** /****************************************************************************
* Name: cmd_chmod * Name: cmd_rchmod
****************************************************************************/ ****************************************************************************/
int cmd_chmod(SESSION handle, int argc, char **argv) int cmd_rchmod(SESSION handle, int argc, char **argv)
{ {
return ftpc_chmod(handle, argv[1], argv[2]); return ftpc_chmod(handle, argv[1], argv[2]);
} }
/**************************************************************************** /****************************************************************************
* Name: cmd_rename * Name: cmd_rrename
****************************************************************************/ ****************************************************************************/
int cmd_rename(SESSION handle, int argc, char **argv) int cmd_rrename(SESSION handle, int argc, char **argv)
{ {
return ftpc_rename(handle, argv[1], argv[2]); return ftpc_rename(handle, argv[1], argv[2]);
} }
/**************************************************************************** /****************************************************************************
* Name: cmd_size * Name: cmd_rsize
****************************************************************************/ ****************************************************************************/
int cmd_size(SESSION handle, int argc, char **argv) int cmd_rsize(SESSION handle, int argc, char **argv)
{ {
uint64_t size = ftpc_filesize(handle, argv[1]); uint64_t size = ftpc_filesize(handle, argv[1]);
printf("SIZE: %ull\n", size); printf("SIZE: %ull\n", size);
@ -184,10 +184,10 @@ int cmd_size(SESSION handle, int argc, char **argv)
} }
/**************************************************************************** /****************************************************************************
* Name: cmd_time * Name: cmd_rtime
****************************************************************************/ ****************************************************************************/
int cmd_time(SESSION handle, int argc, char **argv) int cmd_rtime(SESSION handle, int argc, char **argv)
{ {
time_t filetime = ftpc_filetime(handle, argv[1]); time_t filetime = ftpc_filetime(handle, argv[1]);
printf("TIME: %ul\n", (long)filetime); printf("TIME: %ul\n", (long)filetime);
@ -195,10 +195,10 @@ int cmd_time(SESSION handle, int argc, char **argv)
} }
/**************************************************************************** /****************************************************************************
* Name: cmd_idle * Name: cmd_ridle
****************************************************************************/ ****************************************************************************/
int cmd_idle(SESSION handle, int argc, char **argv) int cmd_ridle(SESSION handle, int argc, char **argv)
{ {
unsigned int idletime = 0; unsigned int idletime = 0;
@ -211,10 +211,10 @@ int cmd_idle(SESSION handle, int argc, char **argv)
} }
/**************************************************************************** /****************************************************************************
* Name: cmd_noop * Name: cmd_rnoop
****************************************************************************/ ****************************************************************************/
int cmd_noop(SESSION handle, int argc, char **argv) int cmd_rnoop(SESSION handle, int argc, char **argv)
{ {
return ftpc_noop(handle); return ftpc_noop(handle);
} }
@ -270,10 +270,10 @@ int cmd_rls(SESSION handle, int argc, char **argv)
} }
/**************************************************************************** /****************************************************************************
* Name: cmd_get * Name: cmd_rget
****************************************************************************/ ****************************************************************************/
int cmd_get(SESSION handle, int argc, char **argv) int cmd_rget(SESSION handle, int argc, char **argv)
{ {
FAR const char *lname = argv[1]; FAR const char *lname = argv[1];
@ -285,10 +285,10 @@ int cmd_get(SESSION handle, int argc, char **argv)
} }
/**************************************************************************** /****************************************************************************
* Name: cmd_put * Name: cmd_rput
****************************************************************************/ ****************************************************************************/
int cmd_put(SESSION handle, int argc, char **argv) int cmd_rput(SESSION handle, int argc, char **argv)
{ {
FAR const char *rname = argv[1]; FAR const char *rname = argv[1];

@ -71,30 +71,30 @@ struct cmdmap_s
static const char g_delim[] = " \t\n"; static const char g_delim[] = " \t\n";
static int cmd_help(SESSION handle, int argc, char **argv); static int cmd_lhelp(SESSION handle, int argc, char **argv);
static int cmd_unrecognized(SESSION handle, int argc, char **argv); static int cmd_lunrecognized(SESSION handle, int argc, char **argv);
static const struct cmdmap_s g_cmdmap[] = static const struct cmdmap_s g_cmdmap[] =
{ {
{ "cd", cmd_chdir, 2, 2, "<directory>" }, { "cd", cmd_rchdir, 2, 2, "<directory>" },
{ "chmod", cmd_chmod, 3, 3, "<permissions> <path>" }, { "chmod", cmd_rchmod, 3, 3, "<permissions> <path>" },
{ "get", cmd_unlink, 2, 3, "<rname> [<lname>]" }, { "get", cmd_rget, 2, 3, "<rname> [<lname>]" },
{ "help", cmd_help, 1, 2, "" }, { "help", cmd_lhelp, 1, 2, "" },
{ "idle", cmd_idle, 1, 2, "[<idletime>]" }, { "idle", cmd_ridle, 1, 2, "[<idletime>]" },
{ "login", cmd_login, 2, 3, "<uname> [<password>]" }, { "login", cmd_rlogin, 2, 3, "<uname> [<password>]" },
{ "ls", cmd_login, 1, 2, "[<dirpath>]" }, { "ls", cmd_rls, 1, 2, "[<dirpath>]" },
{ "quit", cmd_login, 1, 1, "" }, { "quit", cmd_rquit, 1, 1, "" },
{ "mkdir", cmd_mkdir, 2, 2, "<directory>" }, { "mkdir", cmd_rmkdir, 2, 2, "<directory>" },
{ "noop", cmd_noop, 1, 1, "" }, { "noop", cmd_rnoop, 1, 1, "" },
{ "put", cmd_unlink, 2, 3, "<lname> [<rname>]" }, { "put", cmd_rput, 2, 3, "<lname> [<rname>]" },
{ "pwd", cmd_rpwd, 1, 1, "" }, { "pwd", cmd_rpwd, 1, 1, "" },
{ "rename", cmd_rename, 3, 3, "<oldname> <newname>" }, { "rename", cmd_rrename, 3, 3, "<oldname> <newname>" },
{ "rhelp", cmd_rhelp, 1, 2, "[<command>]" }, { "rhelp", cmd_rhelp, 1, 2, "[<command>]" },
{ "rm", cmd_unlink, 2, 2, "" }, { "rm", cmd_runlink, 2, 2, "" },
{ "rmdir", cmd_rmdir, 2, 2, "<directory>" }, { "rmdir", cmd_rrmdir, 2, 2, "<directory>" },
{ "size", cmd_size, 2, 2, "<filepath>" }, { "size", cmd_rsize, 2, 2, "<filepath>" },
{ "time", cmd_time, 2, 2, "<filepath>" }, { "time", cmd_rtime, 2, 2, "<filepath>" },
{ "up", cmd_cdup, 1, 1, "" }, { "up", cmd_rcdup, 1, 1, "" },
}; };
static char g_line[CONFIG_FTPC_LINELEN]; static char g_line[CONFIG_FTPC_LINELEN];
@ -104,10 +104,10 @@ static char g_line[CONFIG_FTPC_LINELEN];
****************************************************************************/ ****************************************************************************/
/**************************************************************************** /****************************************************************************
* Name: cmd_help * Name: cmd_lhelp
****************************************************************************/ ****************************************************************************/
static int cmd_help(SESSION handle, int argc, char **argv) static int cmd_lhelp(SESSION handle, int argc, char **argv)
{ {
const struct cmdmap_s *ptr; const struct cmdmap_s *ptr;
@ -127,10 +127,10 @@ static int cmd_help(SESSION handle, int argc, char **argv)
} }
/**************************************************************************** /****************************************************************************
* Name: cmd_unrecognized * Name: cmd_lunrecognized
****************************************************************************/ ****************************************************************************/
static int cmd_unrecognized(SESSION handle, int argc, char **argv) static int cmd_lunrecognized(SESSION handle, int argc, char **argv)
{ {
printf("Command %s unrecognized\n", argv[0]); printf("Command %s unrecognized\n", argv[0]);
return ERROR; return ERROR;
@ -226,7 +226,7 @@ static int ftpc_execute(SESSION handle, int argc, char *argv[])
{ {
const struct cmdmap_s *cmdmap; const struct cmdmap_s *cmdmap;
const char *cmd; const char *cmd;
cmd_t handler = cmd_unrecognized; cmd_t handler = cmd_lunrecognized;
int ret; int ret;
/* The form of argv is: /* The form of argv is:

@ -116,9 +116,10 @@ typedef FAR void *SESSION;
* *
* addr - The IPv4 address of the FTP server (or the proxy) for the FTP * addr - The IPv4 address of the FTP server (or the proxy) for the FTP
* server. * server.
* port - The port number on the FTP server to connect to. This is usually * port - The port number on the FTP server to connect to (in host byte
* port 21 for FTP. You may set this value to zero to let FTPC * order). This is usually port 21 for FTP. You may set this
* select the default port number for you (CONFIG_FTP_DEFPORT). * value to zero to let FTPC select the default port number for
* you (it will use CONFIG_FTP_DEFPORT).
*/ */
struct ftpc_connect_s struct ftpc_connect_s

@ -98,9 +98,19 @@ SESSION ftpc_connect(FAR struct ftpc_connect_s *server)
/* Initialize the session structure */ /* Initialize the session structure */
session->addr.s_addr = server->addr.s_addr; session->addr.s_addr = server->addr.s_addr;
session->port = server->port ? server->port : CONFIG_FTP_DEFPORT;
session->pid = getpid(); session->pid = getpid();
/* Use the default port if the user specified port number zero */
if (!server->port)
{
session->port = HTONS(CONFIG_FTP_DEFPORT);
}
else
{
session->port = htons(server->port);
}
/* Create up a timer to prevent hangs */ /* Create up a timer to prevent hangs */
session->wdog = wd_create(); session->wdog = wd_create();
@ -165,7 +175,7 @@ int ftpc_reconnect(FAR struct ftpc_session_s *session)
#ifdef CONFIG_DEBUG #ifdef CONFIG_DEBUG
tmp = inet_ntoa(session->addr); tmp = inet_ntoa(session->addr);
ndbg("Connecting to server address %s:%d\n", tmp, ntohl(session->port)); ndbg("Connecting to server address %s:%d\n", tmp, ntohs(session->port));
#endif #endif
addr.sin_family = AF_INET; addr.sin_family = AF_INET;
@ -211,9 +221,9 @@ int ftpc_reconnect(FAR struct ftpc_session_s *session)
#ifdef CONFIG_DEBUG #ifdef CONFIG_DEBUG
ndbg("Connected\n"); ndbg("Connected\n");
tmp = inet_ntoa(session->cmd.raddr.sin_addr); tmp = inet_ntoa(session->cmd.raddr.sin_addr);
ndbg(" Remote address: %s:%d\n", tmp, ntohl(session->cmd.raddr.sin_port)); ndbg(" Remote address: %s:%d\n", tmp, ntohs(session->cmd.raddr.sin_port));
tmp = inet_ntoa(session->cmd.laddr.sin_addr); tmp = inet_ntoa(session->cmd.laddr.sin_addr);
ndbg(" Local address: %s:d\n", tmp, ntohl(session->cmd.laddr.sin_port)); ndbg(" Local address: %s:d\n", tmp, ntohs(session->cmd.laddr.sin_port));
#endif #endif
return OK; return OK;

@ -377,10 +377,10 @@ int ftpc_sockprintf(struct ftpc_socket_s *sock, const char *str, ...)
int ftpc_sockgetsockname(FAR struct ftpc_socket_s *sock, int ftpc_sockgetsockname(FAR struct ftpc_socket_s *sock,
FAR struct sockaddr_in *addr) FAR struct sockaddr_in *addr)
{ {
unsigned int len = sizeof(struct sockaddr_in); socklen_t len = sizeof(struct sockaddr_in);
int ret; int ret;
ret = getsockname(sock->sd, (struct sockaddr *)addr, &len); ret = getsockname(sock->sd, (FAR struct sockaddr *)addr, &len);
if (ret < 0) if (ret < 0)
{ {
ndbg("getsockname failed: %d\n", errno); ndbg("getsockname failed: %d\n", errno);