From c11131647f0a909028d7faf755f42ca481bd64a1 Mon Sep 17 00:00:00 2001 From: Luiz Augusto von Dentz Date: Thu, 12 Sep 2013 16:06:22 +0300 Subject: [PATCH] tools/obexctl: Add rm command Add support for rm command which can be used to delete files using FileTransfer interface. --- tools/obexctl.c | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/tools/obexctl.c b/tools/obexctl.c index f8e76e7d3..3dd3a4dcf 100644 --- a/tools/obexctl.c +++ b/tools/obexctl.c @@ -992,6 +992,56 @@ static void cmd_mv(int argc, char *argv[]) rl_printf("Attempting to MoveFile\n"); } +static void delete_reply(DBusMessage *message, void *user_data) +{ + DBusError error; + + dbus_error_init(&error); + + if (dbus_set_error_from_message(&error, message) == TRUE) { + rl_printf("Failed to Delete: %s\n", error.name); + dbus_error_free(&error); + return; + } + + rl_printf("Delete successful\n"); +} + +static void delete_setup(DBusMessageIter *iter, void *user_data) +{ + const char *file = user_data; + + dbus_message_iter_append_basic(iter, DBUS_TYPE_STRING, &file); +} + +static void cmd_rm(int argc, char *argv[]) +{ + GDBusProxy *proxy; + + if (!check_default_session()) + return; + + if (argc < 2) { + rl_printf("Missing file argument\n"); + return; + } + + proxy = find_ftp(g_dbus_proxy_get_path(default_session)); + if (proxy == NULL) { + rl_printf("Command not supported\n"); + return; + } + + if (g_dbus_proxy_method_call(proxy, "Delete", delete_setup, + delete_reply, g_strdup(argv[1]), + g_free) == FALSE) { + rl_printf("Failed to Delete\n"); + return; + } + + rl_printf("Attempting to Delete\n"); +} + static const struct { const char *cmd; const char *arg; @@ -1012,6 +1062,7 @@ static const struct { "Copy source file to destination file" }, { "mv", " ", cmd_mv, "Move source file to destination file" }, + { "rm", "", cmd_rm, "Delete file" }, { "quit", NULL, cmd_quit, "Quit program" }, { "exit", NULL, cmd_quit }, { "help" }, -- 2.11.0