From df9667a4970e13f71571f12dfa2fa4ee5acde319 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Wed, 12 Feb 2014 21:45:04 +0100 Subject: StorageCommands: add command "unmount" --- src/command/StorageCommands.cxx | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'src/command/StorageCommands.cxx') diff --git a/src/command/StorageCommands.cxx b/src/command/StorageCommands.cxx index a538c77fb..92d235f4c 100644 --- a/src/command/StorageCommands.cxx +++ b/src/command/StorageCommands.cxx @@ -113,3 +113,30 @@ handle_mount(Client &client, gcc_unused int argc, char *argv[]) idle_add(IDLE_MOUNT); return CommandResult::OK; } + +CommandResult +handle_unmount(Client &client, gcc_unused int argc, char *argv[]) +{ + Storage *_composite = client.partition.instance.storage; + if (_composite == nullptr) { + command_error(client, ACK_ERROR_NO_EXIST, "No database"); + return CommandResult::ERROR; + } + + CompositeStorage &composite = *(CompositeStorage *)_composite; + + const char *const local_uri = argv[1]; + + if (*local_uri == 0) { + command_error(client, ACK_ERROR_ARG, "Bad mount point"); + return CommandResult::ERROR; + } + + if (!composite.Unmount(local_uri)) { + command_error(client, ACK_ERROR_ARG, "Not a mount point"); + return CommandResult::ERROR; + } + + idle_add(IDLE_MOUNT); + return CommandResult::OK; +} -- cgit v1.2.3