--- libpurple/plugins/autoaccept.c 2007-04-30 04:14:26.000000000 +0100 +++ libpurple/plugins/alwaysaccept.c 2007-05-16 00:35:51.049125000 +0100 @@ -19,12 +19,12 @@ */ #include "internal.h" -#define PLUGIN_ID "core-plugin_pack-autoaccept" -#define PLUGIN_NAME N_("Autoaccept") -#define PLUGIN_STATIC_NAME "Autoaccept" -#define PLUGIN_SUMMARY N_("Auto-accept file transfer requests from selected users.") -#define PLUGIN_DESCRIPTION N_("Auto-accept file transfer requests from selected users.") -#define PLUGIN_AUTHOR "Sadrul H Chowdhury " +#define PLUGIN_ID "core-plugin_pack-alwaysaccept" +#define PLUGIN_NAME N_("Alwaysaccept") +#define PLUGIN_STATIC_NAME "Alwaysaccept" +#define PLUGIN_SUMMARY N_("Always Auto-accept file transfer requests from users.") +#define PLUGIN_DESCRIPTION N_("Always Auto-accept file transfer requests from users.") +#define PLUGIN_AUTHOR "Ben XO " /* System headers */ #include @@ -54,8 +54,8 @@ typedef enum { - FT_ASK, FT_ACCEPT, + FT_ASK, FT_REJECT } AutoAcceptSetting; @@ -93,24 +93,49 @@ char *filename; char *dirname; + pref = purple_prefs_get_string(PREF_PATH); + account = xfer->account; node = (PurpleBlistNode *)purple_find_buddy(account, xfer->who); if (!node) { if (purple_prefs_get_bool(PREF_STRANGER)) + { xfer->status = PURPLE_XFER_STATUS_CANCEL_LOCAL; + return; + } + + if (ensure_path_exists(pref)) + { + dirname = g_build_filename(pref, xfer->who, NULL); + + if (!ensure_path_exists(dirname)) + { + g_free(dirname); + return; + } + + filename = g_build_filename(dirname, xfer->filename, NULL); + + purple_xfer_request_accepted(xfer, filename); + + g_free(dirname); + g_free(filename); + } + + purple_signal_connect(purple_xfers_get_handle(), "file-recv-complete", handle, + PURPLE_CALLBACK(auto_accept_complete_cb), xfer); + return; } node = node->parent; + g_return_if_fail(PURPLE_BLIST_NODE_IS_CONTACT(node)); - pref = purple_prefs_get_string(PREF_PATH); switch (purple_blist_node_get_int(node, "autoaccept")) { - case FT_ASK: - break; case FT_ACCEPT: if (ensure_path_exists(pref)) { @@ -133,6 +158,8 @@ purple_signal_connect(purple_xfers_get_handle(), "file-recv-complete", handle, PURPLE_CALLBACK(auto_accept_complete_cb), xfer); break; + case FT_ASK: + break; case FT_REJECT: xfer->status = PURPLE_XFER_STATUS_CANCEL_LOCAL; break; @@ -165,8 +192,8 @@ _("_Cancel"), NULL, NULL, NULL, NULL, node, - _("Ask"), FT_ASK, _("Auto Accept"), FT_ACCEPT, + _("Ask"), FT_ASK, _("Auto Reject"), FT_REJECT, NULL, purple_contact_get_alias((PurpleContact *)node), NULL, NULL);