From 23e6e28fb007fa922a1123ea3225b3d0aefc9c11 Mon Sep 17 00:00:00 2001 From: Vinicius Costa Gomes Date: Tue, 28 Oct 2008 19:43:24 -0300 Subject: [PATCH] obexd: Support changing the filename that will be sent in the OBEX header --- obexd/client/main.c | 6 ++++-- obexd/client/session.c | 12 +++++++----- obexd/client/session.h | 3 ++- 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/obexd/client/main.c b/obexd/client/main.c index ce5522714..e20eafc8e 100644 --- a/obexd/client/main.c +++ b/obexd/client/main.c @@ -73,8 +73,10 @@ static void create_callback(struct session_data *session, void *user_data) session_set_agent(session, data->sender, data->agent); for (i = 0; i < data->files->len; i++) { - if (session_send(session, - g_ptr_array_index(data->files, i)) < 0) + const gchar *filename = g_ptr_array_index(data->files, i); + + if (session_send(session, filename, + g_path_get_basename(filename)) < 0) break; } diff --git a/obexd/client/session.c b/obexd/client/session.c index 47902fc7c..4953c0afb 100644 --- a/obexd/client/session.c +++ b/obexd/client/session.c @@ -451,7 +451,7 @@ static void abort_transfer(struct session_data *session) filename = g_ptr_array_index(session->pending, 0); g_ptr_array_remove(session->pending, filename); - session_send(session, filename); + session_send(session, filename, g_path_get_basename(filename)); g_free(filename); } @@ -787,14 +787,15 @@ complete: session->path = NULL; } - session_send(session, filename); + session_send(session, filename, g_path_get_basename(filename)); g_free(filename); } session_unref(session); } -int session_send(struct session_data *session, const char *filename) +int session_send(struct session_data *session, const char *filename, + const char *targetname) { GwObexXfer *xfer; DBusMessage *message; @@ -823,9 +824,10 @@ int session_send(struct session_data *session, const char *filename) session->size = st.st_size; session->transferred = 0; session->filename = g_strdup(filename); + session->name = g_strdup(targetname); - session->name = g_path_get_basename(filename); - session->path = g_strdup_printf("%s/transfer%ju", + if (session->path == NULL) { + session->path = g_strdup_printf("%s/transfer%ju", TRANSFER_BASEPATH, counter++); if (g_dbus_register_interface(session->conn, session->path, diff --git a/obexd/client/session.h b/obexd/client/session.h index e78e533cb..dbef86cbc 100644 --- a/obexd/client/session.h +++ b/obexd/client/session.h @@ -60,7 +60,8 @@ int session_create(const char *source, session_callback_t function, void *user_data); int session_set_agent(struct session_data *session, const char *name, const char *path); -int session_send(struct session_data *session, const char *filename); +int session_send(struct session_data *session, const char *filename, + const char *remotename); int session_pull(struct session_data *session, const char *type, const char *filename, session_callback_t function, void *user_data); -- 2.47.3