static int gftpui_common_cmd_mkdir (void *uidata, gftp_request * request, void *other_uidata, gftp_request * other_request, const 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: mkdir <new directory>\n")); } else { cdata = g_malloc0 (sizeof (*cdata)); cdata->request = request; cdata->uidata = uidata; cdata->input_string = (char *) command; cdata->run_function = gftpui_common_run_mkdir; gftpui_common_run_callback_function (cdata); g_free (cdata); } return (1); }
int ftp_list_files (gftp_window_data * wdata) { gftpui_callback_data * cdata; gtk_label_set (GTK_LABEL (wdata->hoststxt), _("Receiving file names...")); cdata = g_malloc0 (sizeof (*cdata)); cdata->request = wdata->request; cdata->uidata = wdata; cdata->run_function = gftpui_common_run_ls; cdata->dont_refresh = 1; gftpui_common_run_callback_function (cdata); wdata->files = cdata->files; g_free (cdata); if (wdata->files == NULL || !GFTP_IS_CONNECTED (wdata->request)) { gftpui_disconnect (wdata); return (0); } wdata->sorted = 0; sortrows (GTK_CLIST (wdata->listbox), -1, (gpointer) wdata); if (IS_NONE_SELECTED (wdata)) gtk_clist_select_row (GTK_CLIST (wdata->listbox), 0, 0); return (1); }
int gftp_gtk_get_subdirs (gftp_transfer * transfer) { gftpui_callback_data * cdata; long numfiles, numdirs; guint timeout_num; int ret; cdata = g_malloc0 (sizeof (*cdata)); cdata->user_data = transfer; cdata->uidata = transfer->fromwdata; cdata->request = ((gftp_window_data *) transfer->fromwdata)->request; cdata->run_function = _gftp_getdir_thread; cdata->connect_function = gftpui_gtk_tdata_connect; cdata->disconnect_function = gftpui_gtk_tdata_disconnect; cdata->dont_check_connection = 1; cdata->dont_refresh = 1; timeout_num = gtk_timeout_add (100, progress_timeout, transfer); ret = gftpui_common_run_callback_function (cdata); gtk_timeout_remove (timeout_num); numfiles = transfer->numfiles; numdirs = transfer->numdirs; transfer->numfiles = transfer->numdirs = -1; update_directory_download_progress (transfer); transfer->numfiles = numfiles; transfer->numdirs = numdirs; g_free (cdata); return (ret); }
static int gftpui_common_cmd_chdir (void *uidata, gftp_request * request, void *other_uidata, gftp_request * other_request, const char *command) { gftpui_callback_data * cdata; char *tempstr, *newdir = NULL; 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: chdir <directory>\n")); return (1); } else if (request->protonum == GFTP_LOCAL_NUM) { if (*command != '/' && request->directory != NULL) { tempstr = gftp_build_path (request, request->directory, command, NULL); newdir = gftp_expand_path (request, tempstr); g_free (tempstr); } else newdir = gftp_expand_path (request, command); if (newdir == NULL) { request->logging_function (gftp_logging_error, request, _("usage: chdir <directory>\n")); return (1); } } cdata = g_malloc0 (sizeof (*cdata)); cdata->request = request; cdata->uidata = uidata; cdata->input_string = newdir != NULL ? newdir : (char *) command; cdata->run_function = gftpui_common_run_chdir; cdata->dont_clear_cache = 1; gftpui_common_run_callback_function (cdata); g_free (cdata); if (newdir != NULL) g_free (newdir); return (1); }
int gftpui_common_cmd_open (void *uidata, gftp_request * request, void *other_uidata, gftp_request * other_request, const char *command) { gftpui_callback_data * cdata; intptr_t retries; if (GFTP_IS_CONNECTED (request)) gftpui_disconnect (uidata); if (command != NULL) { if (*command == '\0') { request->logging_function (gftp_logging_error, request, _("usage: open " GFTP_URL_USAGE "\n")); return (1); } if (gftp_parse_url (request, command) < 0) return (1); } if (gftp_need_username (request)) gftpui_prompt_username (uidata, request); if (gftp_need_password (request)) gftpui_prompt_password (uidata, request); gftp_lookup_request_option (request, "retries", &retries); cdata = g_malloc0 (sizeof (*cdata)); cdata->request = request; cdata->uidata = uidata; cdata->run_function = gftpui_common_run_connect; cdata->retries = retries; cdata->dont_check_connection = 1; if (request->refreshing) cdata->dont_refresh = 1; gftpui_show_busy (TRUE); gftpui_common_run_callback_function (cdata); gftpui_show_busy (FALSE); g_free (cdata); return (1); }
static int gftpui_common_cmd_ls (void *uidata, gftp_request * request, void *other_uidata, gftp_request * other_request, const char *command) { char *startcolor, *endcolor, *tempstr; gftpui_callback_data * cdata; GList * templist; gftp_file * fle; if (!GFTP_IS_CONNECTED (request)) { request->logging_function (gftp_logging_error, request, _("Error: Not connected to a remote site\n")); return (1); } cdata = g_malloc0 (sizeof (*cdata)); cdata->request = request; cdata->uidata = uidata; cdata->source_string = *command != '\0' ? (char *) command : NULL; cdata->run_function = gftpui_common_run_ls; cdata->dont_refresh = 1; gftpui_common_run_callback_function (cdata); templist = cdata->files; while (templist != NULL) { fle = templist->data; gftpui_lookup_file_colors (fle, &startcolor, &endcolor); tempstr = gftp_gen_ls_string (request, fle, startcolor, endcolor); request->logging_function (gftp_logging_misc_nolog, request, "%s\n", tempstr); g_free (tempstr); templist = templist->next; gftp_file_destroy (fle, 1); } if (cdata->files != NULL) g_list_free (cdata->files); g_free (cdata); return (1); }
static void dochmod (gftp_window_data * wdata) { gftpui_callback_data * cdata; mode = 0; if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON (suid))) mode |= S_ISUID; if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON (sgid))) mode |= S_ISGID; if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON (sticky))) mode |= S_ISVTX; if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON (ur))) mode |= S_IRUSR; if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON (uw))) mode |= S_IWUSR; if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON (ux))) mode |= S_IXUSR; if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON (gr))) mode |= S_IRGRP; if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON (gw))) mode |= S_IWGRP; if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON (gx))) mode |= S_IXGRP; if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON (or))) mode |= S_IROTH; if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON (ow))) mode |= S_IWOTH; if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON (ox))) mode |= S_IXOTH; if (check_reconnect (wdata) < 0) return; cdata = g_malloc0 (sizeof (*cdata)); cdata->request = wdata->request; cdata->uidata = wdata; cdata->run_function = do_chmod_thread; gftpui_common_run_callback_function (cdata); g_free (cdata); }
static int gftpui_common_cmd_chmod (void *uidata, gftp_request * request, void *other_uidata, gftp_request * other_request, const char *command) { gftpui_callback_data * cdata; char *pos; if (!GFTP_IS_CONNECTED (request)) { request->logging_function (gftp_logging_error, request, _("Error: Not connected to a remote site\n")); return (1); } if ((pos = strchr (command, ' ')) != NULL) *pos++ = '\0'; if (*command == '\0' || pos == NULL || *pos == '\0') { request->logging_function (gftp_logging_error, request, _("usage: chmod <mode> <file>\n")); } else { cdata = g_malloc0 (sizeof (*cdata)); cdata->request = request; cdata->uidata = uidata; cdata->input_string = (char *) command; cdata->source_string = pos; cdata->run_function = gftpui_common_run_chmod; gftpui_common_run_callback_function (cdata); g_free (cdata); } return (1); }
static void askdel (gftp_transfer * transfer) { char *tempstr; int ok; if (transfer->numfiles > 0 && transfer->numdirs > 0) { tempstr = g_strdup_printf (_("Are you sure you want to delete these %ld files and %ld directories"), transfer->numfiles, transfer->numdirs); } else if (transfer->numfiles > 0) { tempstr = g_strdup_printf (_("Are you sure you want to delete these %ld files"), transfer->numfiles); } else if (transfer->numdirs > 0) { tempstr = g_strdup_printf (_("Are you sure you want to delete these %ld directories"), transfer->numdirs); } else return; ok = MakeYesNoDialog (_("Delete Files/Directories"), tempstr); g_free (tempstr); if (ok) { gftpui_callback_data * cdata; g_return_if_fail (transfer != NULL); g_return_if_fail (transfer->files != NULL); cdata = g_malloc0 (sizeof (*cdata)); cdata->request = ((gftp_window_data *)transfer->fromwdata)->request; cdata->files = transfer->files; cdata->uidata = transfer->fromwdata; cdata->run_function = gftpui_common_run_delete; gftpui_common_run_callback_function (cdata); g_free (cdata); } free_tdata (transfer); }