static int _gftpui_common_preserve_perm_time (gftp_transfer * tdata, gftp_file * curfle) { intptr_t preserve_permissions, preserve_time; int ret, tmpret; gftp_lookup_request_option (tdata->fromreq, "preserve_permissions", &preserve_permissions); gftp_lookup_request_option (tdata->fromreq, "preserve_time", &preserve_time); ret = 0; if (GFTP_IS_CONNECTED (tdata->toreq) && preserve_permissions && curfle->st_mode != 0) { tmpret = gftp_chmod (tdata->toreq, curfle->destfile, curfle->st_mode & (S_IRWXU | S_IRWXG | S_IRWXO)); if (tmpret < 0) ret = tmpret; } if (GFTP_IS_CONNECTED (tdata->toreq) && preserve_time && curfle->datetime != 0) { tmpret = gftp_set_file_time (tdata->toreq, curfle->destfile, curfle->datetime); if (tmpret < 0) ret = tmpret; } if (!GFTP_IS_CONNECTED (tdata->toreq)) return (ret); else return (0); }
static int do_chmod_thread (gftpui_callback_data * cdata) { GList * filelist, * templist; gftp_window_data * wdata; gftp_file * tempfle; int error; GtkTreeSelection *select; GtkTreeIter iter; GtkTreeModel * model; wdata = cdata->uidata; error = 0; select = gtk_tree_view_get_selection (GTK_TREE_VIEW (wdata->listbox)); templist = gtk_tree_selection_get_selected_rows(select, &model); for (filelist = templist ; filelist != NULL; filelist = g_list_next(filelist)) { gtk_tree_model_get_iter(model, &iter, (GtkTreePath*)filelist->data); gtk_tree_model_get(model, &iter, 0, &tempfle, -1); if (gftp_chmod (wdata->request, tempfle->file, mode) != 0) error = 1; if (!GFTP_IS_CONNECTED (wdata->request)) break; } g_list_foreach (templist, (GFunc) gtk_tree_path_free, NULL); g_list_free (templist); return (error); }
static int do_chmod_thread (gftpui_callback_data * cdata) { GList * filelist, * templist; gftp_window_data * wdata; gftp_file * tempfle; int error, num; wdata = cdata->uidata; error = 0; filelist = wdata->files; templist = gftp_gtk_get_list_selection (wdata); num = 0; while (templist != NULL) { templist = get_next_selection (templist, &filelist, &num); tempfle = filelist->data; if (gftp_chmod (wdata->request, tempfle->file, mode) != 0) error = 1; if (!GFTP_IS_CONNECTED (wdata->request)) break; } return (error); }
int gftpui_common_run_chmod (gftpui_callback_data * cdata) { return (gftp_chmod (cdata->request, cdata->source_string, strtol (cdata->input_string, NULL, 10))); }