int gftpui_common_run_callback_function (gftpui_callback_data * cdata) { int ret; if (!cdata->dont_check_connection && gftpui_check_reconnect (cdata) < 0) return (0); if (gftp_protocols[cdata->request->protonum].use_threads) ret = GPOINTER_TO_INT (gftpui_generic_thread (_gftpui_common_thread_callback, cdata)); else ret = GPOINTER_TO_INT (cdata->run_function (cdata)); if (ret == 0 && !cdata->dont_refresh) gftpui_refresh (cdata->uidata, !cdata->dont_clear_cache); return (ret == 0); }
static void do_check_done_process (pid_t pid, int ret) { gftp_viewedit_data * ve_proc; GList * curdata, *deldata; int ok; curdata = viewedit_processes; while (curdata != NULL) { ve_proc = curdata->data; if (ve_proc->pid != pid) continue; deldata = curdata; curdata = curdata->next; viewedit_processes = g_list_remove_link (viewedit_processes, deldata); ok = _check_viewedit_process_status (ve_proc, ret); if (!ve_proc->view && ve_proc->dontupload) gftpui_refresh (ve_proc->fromwdata, 1); if (ok && !ve_proc->view && !ve_proc->dontupload) { /* We were editing the file. Upload it */ if (_prompt_to_upload_edited_file (ve_proc)) break; /* Don't free the ve_proc structure */ } else if (ve_proc->view && ve_proc->rm) { /* After viewing the file delete the tmp file */ remove_file (ve_proc); } free_edit_data (ve_proc); break; } }
static void on_next_transfer (gftp_transfer * tdata) { intptr_t refresh_files; gftp_file * tempfle; tdata->next_file = 0; for (; tdata->updfle != tdata->curfle; tdata->updfle = tdata->updfle->next) { tempfle = tdata->updfle->data; if (tempfle->done_view || tempfle->done_edit) { if (tempfle->transfer_action != GFTP_TRANS_ACTION_SKIP) { view_file (tempfle->destfile, 0, tempfle->done_view, tempfle->done_rm, 1, 0, tempfle->file, NULL); } } else if (tempfle->done_rm) tdata->fromreq->rmfile (tdata->fromreq, tempfle->file); if (tempfle->transfer_action == GFTP_TRANS_ACTION_SKIP) gtk_ctree_node_set_text (GTK_CTREE (dlwdw), tempfle->user_data, 1, _("Skipped")); else gtk_ctree_node_set_text (GTK_CTREE (dlwdw), tempfle->user_data, 1, _("Finished")); } gftp_lookup_request_option (tdata->fromreq, "refresh_files", &refresh_files); if (refresh_files && tdata->curfle && tdata->curfle->next && compare_request (tdata->toreq, ((gftp_window_data *) tdata->towdata)->request, 1)) gftpui_refresh (tdata->towdata, 1); }
static void transfer_done (GList * node) { gftpui_common_curtrans_data * transdata; gftp_transfer * tdata; gftp_file * tempfle; GList * templist; tdata = node->data; if (tdata->started) { if (GFTP_IS_SAME_HOST_STOP_TRANS ((gftp_window_data *) tdata->fromwdata, tdata->fromreq)) { gftp_copy_param_options (((gftp_window_data *) tdata->fromwdata)->request, tdata->fromreq); gftp_swap_socks (((gftp_window_data *) tdata->fromwdata)->request, tdata->fromreq); } else gftp_disconnect (tdata->fromreq); if (GFTP_IS_SAME_HOST_STOP_TRANS ((gftp_window_data *) tdata->towdata, tdata->toreq)) { gftp_copy_param_options (((gftp_window_data *) tdata->towdata)->request, tdata->toreq); gftp_swap_socks (((gftp_window_data *) tdata->towdata)->request, tdata->toreq); } else gftp_disconnect (tdata->toreq); if (tdata->towdata != NULL && compare_request (tdata->toreq, ((gftp_window_data *) tdata->towdata)->request, 1)) gftpui_refresh (tdata->towdata, 1); num_transfers_in_progress--; } if ((!tdata->show && tdata->started) || (tdata->done && !tdata->started)) { transdata = gtk_ctree_node_get_row_data (GTK_CTREE (dlwdw), tdata->user_data); if (transdata != NULL) g_free (transdata); for (templist = tdata->files; templist != NULL; templist = templist->next) { tempfle = templist->data; transdata = gtk_ctree_node_get_row_data (GTK_CTREE (dlwdw), tempfle->user_data); if (transdata != NULL) g_free (transdata); } gtk_ctree_remove_node (GTK_CTREE (dlwdw), tdata->user_data); } g_static_mutex_lock (&gftpui_common_transfer_mutex); gftp_file_transfers = g_list_remove_link (gftp_file_transfers, node); g_static_mutex_unlock (&gftpui_common_transfer_mutex); gdk_window_set_title (gtk_widget_get_parent_window (GTK_WIDGET(dlwdw)), gftp_version); free_tdata (tdata); }