diff --git a/tgp-ft.c b/tgp-ft.c index 635f1ce..05cbfce 100644 --- a/tgp-ft.c +++ b/tgp-ft.c @@ -69,6 +69,7 @@ static char *tgp_strdup_determine_filename (const char *mime, const char *captio static void tgprpl_xfer_recv_on_finished (struct tgl_state *TLS, void *_data, int success, const char *filename) { debug ("tgprpl_xfer_recv_on_finished()"); struct tgp_xfer_send_data *data = _data; + char *selected = g_strdup(purple_xfer_get_local_filename (data->xfer)); if (success) { if (!data->done) { @@ -77,10 +78,6 @@ static void tgprpl_xfer_recv_on_finished (struct tgl_state *TLS, void *_data, in purple_xfer_set_completed (data->xfer, TRUE); purple_xfer_end (data->xfer); } - - g_unlink (purple_xfer_get_local_filename (data->xfer)); - g_rename (filename, purple_xfer_get_local_filename (data->xfer)); - } else { tgp_notify_on_error_gw (TLS, NULL, success); failure ("ERROR xfer failed"); @@ -88,6 +85,11 @@ static void tgprpl_xfer_recv_on_finished (struct tgl_state *TLS, void *_data, in data->xfer->data = NULL; tgprpl_xfer_free_data (data); + + debug ("moving transferred file from tgl directory %s to selected target %s", selected, filename); + g_unlink (selected); + g_rename (filename, selected); + g_free (selected); } static void tgprpl_xfer_on_finished (struct tgl_state *TLS, void *_data, int success, struct tgl_message *M) {