# HG changeset patch # User masneyb # Date 1073237519 0 # Node ID e5ad008e7ea83014bb3cd76bb3de02439e9fe2cc # Parent 3fccdc9eb16f0a5abd8109f8600475710ef3d910 2003-1-4 Brian Masney * src/uicommon/gftpui.c src/uicommon/gftpui.h src/uicommon/gftpuicallbacks.c - when switching between ascii/binary, set the option on a global basis. Converted chdir, chmod, delete, rename, rmdir commands over to using the new command run format so that it will work in the different UIs. Added site command to the command line. diff -r 3fccdc9eb16f -r e5ad008e7ea8 ChangeLog --- a/ChangeLog Sun Jan 04 17:26:50 2004 +0000 +++ b/ChangeLog Sun Jan 04 17:31:59 2004 +0000 @@ -1,4 +1,11 @@ 2003-1-4 Brian Masney + * src/uicommon/gftpui.c src/uicommon/gftpui.h + src/uicommon/gftpuicallbacks.c - when switching between ascii/binary, + set the option on a global basis. Converted chdir, chmod, delete, + rename, rmdir commands over to using the new command run format so that + it will work in the different UIs. Added site command to the command + line. + * lib/misc.c (gftp_parse_command_line) - unified this function so that it is consistent for all arguments. @@ -1898,7 +1905,7 @@ * cvsclean - added this script - * *.[ch] - added $Id: ChangeLog,v 1.191 2004/01/04 17:26:50 masneyb Exp $ tags + * *.[ch] - added $Id: ChangeLog,v 1.192 2004/01/04 17:31:58 masneyb Exp $ tags * debian/* - updated files from Debian maintainer diff -r 3fccdc9eb16f -r e5ad008e7ea8 src/uicommon/gftpui.c --- a/src/uicommon/gftpui.c Sun Jan 04 17:26:50 2004 +0000 +++ b/src/uicommon/gftpui.c Sun Jan 04 17:31:59 2004 +0000 @@ -135,13 +135,7 @@ static int gftpui_common_cmd_ascii (void *uidata, gftp_request * request, char *command) { - if (gftpui_common_local_request != NULL) - gftp_set_request_option (gftpui_common_local_request, "ascii_transfers", - GINT_TO_POINTER(1)); - - if (gftpui_common_remote_request != NULL) - gftp_set_request_option (gftpui_common_remote_request, "ascii_transfers", - GINT_TO_POINTER(1)); + gftp_set_global_option ("ascii_transfers", GINT_TO_POINTER(1)); return (1); } @@ -149,13 +143,7 @@ static int gftpui_common_cmd_binary (void *uidata, gftp_request * request, char *command) { - if (gftpui_common_local_request != NULL) - gftp_set_request_option (gftpui_common_local_request, "ascii_transfers", - GINT_TO_POINTER(0)); - - if (gftpui_common_remote_request != NULL) - gftp_set_request_option (gftpui_common_remote_request, "ascii_transfers", - GINT_TO_POINTER(0)); + gftp_set_global_option ("ascii_transfers", GINT_TO_POINTER(0)); return (1); } @@ -163,6 +151,7 @@ static int gftpui_common_cmd_chmod (void *uidata, gftp_request * request, char *command) { + gftpui_callback_data * cdata; char *pos; if (!GFTP_IS_CONNECTED (request)) @@ -183,8 +172,16 @@ } else { - if (gftp_chmod (request, pos, strtol (command, NULL, 10)) == 0) - gftp_delete_cache_entry (request, NULL, 0); + cdata = g_malloc0 (sizeof (*cdata)); + cdata->request = request; + cdata->uidata = uidata; + cdata->input_string = command; + cdata->source_string = pos; + cdata->run_function = gftpui_common_run_chmod; + + gftpui_common_run_callback_function (cdata); + + g_free (cdata); } return (1); @@ -194,6 +191,7 @@ static int gftpui_common_cmd_rename (void *uidata, gftp_request * request, char *command) { + gftpui_callback_data * cdata; char *pos; if (!GFTP_IS_CONNECTED (request)) @@ -213,8 +211,16 @@ } else { - if (gftp_rename_file (request, command, pos) == 0) - gftp_delete_cache_entry (request, NULL, 0); + cdata = g_malloc0 (sizeof (*cdata)); + cdata->request = request; + cdata->uidata = uidata; + cdata->source_string = command; + cdata->input_string = pos; + cdata->run_function = gftpui_common_run_rename; + + gftpui_common_run_callback_function (cdata); + + g_free (cdata); } return (1); @@ -224,6 +230,8 @@ static int gftpui_common_cmd_delete (void *uidata, gftp_request * request, char *command) { + gftpui_callback_data * cdata; + if (!GFTP_IS_CONNECTED (request)) { request->logging_function (gftp_logging_error, request, @@ -237,8 +245,15 @@ } else { - if (gftp_remove_file (request, command) == 0) - gftp_delete_cache_entry (request, NULL, 0); + cdata = g_malloc0 (sizeof (*cdata)); + cdata->request = request; + cdata->uidata = uidata; + cdata->input_string = command; + cdata->run_function = gftpui_common_run_delete; + + gftpui_common_run_callback_function (cdata); + + g_free (cdata); } return (1); @@ -248,6 +263,8 @@ static int gftpui_common_cmd_rmdir (void *uidata, gftp_request * request, char *command) { + gftpui_callback_data * cdata; + if (!GFTP_IS_CONNECTED (request)) { request->logging_function (gftp_logging_error, request, @@ -261,8 +278,48 @@ } else { - if (gftp_remove_directory (request, command) == 0) - gftp_delete_cache_entry (request, NULL, 0); + cdata = g_malloc0 (sizeof (*cdata)); + cdata->request = request; + cdata->uidata = uidata; + cdata->input_string = command; + cdata->run_function = gftpui_common_run_rmdir; + + gftpui_common_run_callback_function (cdata); + + g_free (cdata); + } + + return (1); +} + + +static int +gftpui_common_cmd_site (void *uidata, gftp_request * request, char *command) +{ + gftpui_callback_data * cdata; + + if (!GFTP_IS_CONNECTED (request)) + { + request->logging_function (gftp_logging_error, request, + _("Error: Not connected to a remote site\n")); + return (1); + } + else if (*command == '\0') + { + request->logging_function (gftp_logging_error, request, + _("usage: site \n")); + } + else + { + cdata = g_malloc0 (sizeof (*cdata)); + cdata->request = request; + cdata->uidata = uidata; + cdata->input_string = command; + cdata->run_function = gftpui_common_run_site; + + gftpui_common_run_callback_function (cdata); + + g_free (cdata); } return (1); @@ -274,7 +331,6 @@ { gftpui_callback_data * cdata; - if (!GFTP_IS_CONNECTED (request)) { request->logging_function (gftp_logging_error, request, @@ -306,6 +362,7 @@ static int gftpui_common_cmd_chdir (void *uidata, gftp_request * request, char *command) { + gftpui_callback_data * cdata; char *tempstr, *newdir = NULL; if (!GFTP_IS_CONNECTED (request)) @@ -324,7 +381,7 @@ { if (*command != '/' && request->directory != NULL) { - tempstr = g_strconcat (request->directory, "/", command, NULL); + tempstr = gftp_build_path (request->directory, command, NULL); newdir = expand_path (tempstr); g_free (tempstr); } @@ -339,8 +396,15 @@ } } - if (gftp_set_directory (request, newdir != NULL ? newdir : command) == 0) - gftpui_refresh (uidata); + cdata = g_malloc0 (sizeof (*cdata)); + cdata->request = request; + cdata->uidata = uidata; + cdata->input_string = newdir != NULL ? newdir : command; + cdata->run_function = gftpui_common_run_chdir; + + gftpui_common_run_callback_function (cdata); + + g_free (cdata); if (newdir != NULL) g_free (newdir); @@ -460,7 +524,8 @@ while ((got = gftp_get_next_file (request, NULL, fle)) > 0 || got == GFTP_ERETRYABLE) { - if (got < 0 || strcmp (fle->file, ".") == 0) + if (got < 0 || strcmp (fle->file, ".") == 0 || + !gftp_match_filespec (fle->file, filespec)) { gftp_file_destroy (fle); continue; @@ -695,7 +760,7 @@ N_("Available options: cache"), gftpui_common_clear_show_subhelp}, {N_("close"), 3, gftpui_common_cmd_close, gftpui_common_request_remote, N_("Disconnects from the remote site"), NULL}, - {N_("delete"), 1, gftpui_common_cmd_delete, gftpui_common_request_remote, + {N_("delete"), 1, gftpui_common_cmd_delete, gftpui_common_request_remote, N_("Removes a remote file"), NULL}, /* FIXME {N_("get"), 1, gftp_text_mget_file, gftpui_common_request_none, @@ -747,6 +812,8 @@ N_("Remove a remote directory"), NULL}, {N_("set"), 1, gftpui_common_cmd_set, gftpui_common_request_none, N_("Show configuration file variables. You can also set variables by set var=val"), gftpui_common_set_show_subhelp}, + {N_("site"), 2, gftpui_common_cmd_site, gftpui_common_request_remote, + N_("Run a site specific command"), NULL}, {NULL, 0, NULL, gftpui_common_request_none, NULL, NULL}}; diff -r 3fccdc9eb16f -r e5ad008e7ea8 src/uicommon/gftpui.h --- a/src/uicommon/gftpui.h Sun Jan 04 17:26:50 2004 +0000 +++ b/src/uicommon/gftpui.h Sun Jan 04 17:31:59 2004 +0000 @@ -98,6 +98,12 @@ int gftpui_common_run_chdir ( gftpui_callback_data * cdata ); +int gftpui_common_run_chmod ( gftpui_callback_data * cdata ); + +int gftpui_common_run_delete ( gftpui_callback_data * cdata ); + +int gftpui_common_run_rmdir ( gftpui_callback_data * cdata ); + /* UI Functions that must be implemented by each distinct UI */ void gftpui_lookup_file_colors ( gftp_file * fle, char **start_color, diff -r 3fccdc9eb16f -r e5ad008e7ea8 src/uicommon/gftpuicallbacks.c --- a/src/uicommon/gftpuicallbacks.c Sun Jan 04 17:26:50 2004 +0000 +++ b/src/uicommon/gftpuicallbacks.c Sun Jan 04 17:31:59 2004 +0000 @@ -65,3 +65,47 @@ return (ret); } + +int +gftpui_common_run_chmod (gftpui_callback_data * cdata) +{ + int ret; + + ret = gftp_chmod (cdata->request, cdata->source_string, + strtol (cdata->input_string, NULL, 10)) == 0; + + return (ret); +} + + +int +gftpui_common_run_delete (gftpui_callback_data * cdata) +{ + int ret; + + if (cdata->input_string != NULL) + { + ret = gftp_remove_file (cdata->request, cdata->input_string) == 0; + } + else + ret = 0; /* FIXME */ + + return (ret); +} + + +int +gftpui_common_run_rmdir (gftpui_callback_data * cdata) +{ + int ret; + + if (cdata->input_string != NULL) + { + ret = gftp_remove_directory (cdata->request, cdata->input_string) == 0; + } + else + ret = 0; /* FIXME */ + + return (ret); +} +