static int ask_accept_cancel(PurpleXfer *xfer) { purple_xfer_request_denied(xfer); purple_xfer_unref(xfer); return 0; }
static void purple_xfer_choose_file_cancel_cb(void *user_data, const char *filename) { PurpleXfer *xfer = (PurpleXfer *)user_data; purple_xfer_set_status(xfer, PURPLE_XFER_STATUS_CANCEL_LOCAL); purple_xfer_request_denied(xfer); }
static int cancel_recv_cb(PurpleXfer *xfer) { purple_xfer_set_status(xfer, PURPLE_XFER_STATUS_CANCEL_LOCAL); purple_xfer_request_denied(xfer); purple_xfer_unref(xfer); return 0; }
static void purple_xfer_choose_file_cancel_cb(void *user_data, const char *filename) { PurpleXfer *xfer = (PurpleXfer *)user_data; purple_xfer_set_status(xfer, PURPLE_XFER_STATUS_CANCEL_LOCAL); if (purple_xfer_get_type(xfer) == PURPLE_XFER_SEND) purple_xfer_cancel_local(xfer); else purple_xfer_request_denied(xfer); purple_xfer_unref(xfer); }
static void purple_xfer_choose_file_ok_cb(void *user_data, const char *filename) { PurpleXfer *xfer; PurpleXferType type; struct stat st; gchar *dir; xfer = (PurpleXfer *)user_data; type = purple_xfer_get_type(xfer); if (g_stat(filename, &st) != 0) { /* File not found. */ if (type == PURPLE_XFER_RECEIVE) { #ifndef _WIN32 int mode = W_OK; #else int mode = F_OK; #endif dir = g_path_get_dirname(filename); if (g_access(dir, mode) == 0) { purple_xfer_request_accepted(xfer, filename); } else { purple_xfer_ref(xfer); purple_notify_message( NULL, PURPLE_NOTIFY_MSG_ERROR, NULL, _("Directory is not writable."), NULL, (PurpleNotifyCloseCallback)purple_xfer_choose_file, xfer); } g_free(dir); } else { purple_xfer_show_file_error(xfer, filename); purple_xfer_cancel_local(xfer); } } else if ((type == PURPLE_XFER_SEND) && (st.st_size == 0)) { purple_notify_error(NULL, NULL, _("Cannot send a file of 0 bytes."), NULL); purple_xfer_cancel_local(xfer); } else if ((type == PURPLE_XFER_SEND) && S_ISDIR(st.st_mode)) { /* * XXX - Sending a directory should be valid for some protocols. */ purple_notify_error(NULL, NULL, _("Cannot send a directory."), NULL); purple_xfer_cancel_local(xfer); } else if ((type == PURPLE_XFER_RECEIVE) && S_ISDIR(st.st_mode)) { char *msg, *utf8; utf8 = g_filename_to_utf8(filename, -1, NULL, NULL, NULL); msg = g_strdup_printf( _("%s is not a regular file. Cowardly refusing to overwrite it.\n"), utf8); g_free(utf8); purple_notify_error(NULL, NULL, msg, NULL); g_free(msg); purple_xfer_request_denied(xfer); } else if (type == PURPLE_XFER_SEND) { #ifndef _WIN32 int mode = R_OK; #else int mode = F_OK; #endif if (g_access(filename, mode) == 0) { purple_xfer_request_accepted(xfer, filename); } else { purple_xfer_ref(xfer); purple_notify_message( NULL, PURPLE_NOTIFY_MSG_ERROR, NULL, _("File is not readable."), NULL, (PurpleNotifyCloseCallback)purple_xfer_choose_file, xfer); } } else { purple_xfer_request_accepted(xfer, filename); } purple_xfer_unref(xfer); }
static void prpl_xfer_canceled( struct file_transfer *ft, char *reason ) { struct prpl_xfer_data *px = ft->data; purple_xfer_request_denied( px->xfer ); }