summaryrefslogtreecommitdiffstats
path: root/CommandListener.cpp
diff options
context:
space:
mode:
authorKenny Root <kroot@google.com>2010-07-12 09:59:49 -0700
committerKenny Root <kroot@google.com>2010-07-15 12:41:01 -0700
commit508c0e1605b795bbb51cb47d955b89f3df26ca94 (patch)
treef81d933fa05f1653d6e67d75c756689371316638 /CommandListener.cpp
parentfb7c4d5a8a1031cf0e493ff182dcf458e5fe8c77 (diff)
downloadsystem_vold-508c0e1605b795bbb51cb47d955b89f3df26ca94.zip
system_vold-508c0e1605b795bbb51cb47d955b89f3df26ca94.tar.gz
system_vold-508c0e1605b795bbb51cb47d955b89f3df26ca94.tar.bz2
Additional Obb functionality
* Rename all functions dealing with OBB files to mention Obb * Add 'path' and 'list' functionality to OBB commands * Store hashed filename in loop's lo_crypt_name and keep lo_file_name for the real source filename. That way we can recover it later with an ioctl call. Change-Id: I29e468265988bfb931d981532d86d7be7b3adfc8
Diffstat (limited to 'CommandListener.cpp')
-rw-r--r--CommandListener.cpp40
1 files changed, 28 insertions, 12 deletions
diff --git a/CommandListener.cpp b/CommandListener.cpp
index fead4f8..b0fc551 100644
--- a/CommandListener.cpp
+++ b/CommandListener.cpp
@@ -41,7 +41,7 @@ CommandListener::CommandListener() :
registerCmd(new DumpCmd());
registerCmd(new VolumeCmd());
registerCmd(new AsecCmd());
- registerCmd(new ImageCmd());
+ registerCmd(new ObbCmd());
registerCmd(new ShareCmd());
registerCmd(new StorageCmd());
registerCmd(new XwarpCmd());
@@ -398,11 +398,11 @@ int CommandListener::AsecCmd::runCommand(SocketClient *cli,
return 0;
}
-CommandListener::ImageCmd::ImageCmd() :
- VoldCommand("image") {
+CommandListener::ObbCmd::ObbCmd() :
+ VoldCommand("obb") {
}
-int CommandListener::ImageCmd::runCommand(SocketClient *cli,
+int CommandListener::ObbCmd::runCommand(SocketClient *cli,
int argc, char **argv) {
if (argc < 2) {
cli->sendMsg(ResponseCode::CommandSyntaxError, "Missing Argument", false);
@@ -412,35 +412,51 @@ int CommandListener::ImageCmd::runCommand(SocketClient *cli,
VolumeManager *vm = VolumeManager::Instance();
int rc = 0;
- if (!strcmp(argv[1], "mount")) {
+ if (!strcmp(argv[1], "list")) {
+ dumpArgs(argc, argv, -1);
+
+ rc = vm->listMountedObbs(cli);
+ } else if (!strcmp(argv[1], "mount")) {
dumpArgs(argc, argv, 3);
if (argc != 5) {
cli->sendMsg(ResponseCode::CommandSyntaxError,
- "Usage: image mount <filename> <key> <ownerUid>", false);
+ "Usage: obb mount <filename> <key> <ownerUid>", false);
return 0;
}
- rc = vm->mountImage(argv[2], argv[3], atoi(argv[4]));
+ rc = vm->mountObb(argv[2], argv[3], atoi(argv[4]));
} else if (!strcmp(argv[1], "unmount")) {
dumpArgs(argc, argv, -1);
if (argc < 3) {
- cli->sendMsg(ResponseCode::CommandSyntaxError, "Usage: image unmount <container-id> [force]", false);
+ cli->sendMsg(ResponseCode::CommandSyntaxError, "Usage: obb unmount <source file> [force]", false);
return 0;
}
bool force = false;
if (argc > 3 && !strcmp(argv[3], "force")) {
force = true;
}
- rc = vm->unmountImage(argv[2], force);
+ rc = vm->unmountObb(argv[2], force);
+ } else if (!strcmp(argv[1], "path")) {
+ dumpArgs(argc, argv, -1);
+ if (argc != 3) {
+ cli->sendMsg(ResponseCode::CommandSyntaxError, "Usage: obb path <source file>", false);
+ return 0;
+ }
+ char path[255];
+
+ if (!(rc = vm->getObbMountPath(argv[2], path, sizeof(path)))) {
+ cli->sendMsg(ResponseCode::AsecPathResult, path, false);
+ return 0;
+ }
} else {
dumpArgs(argc, argv, -1);
- cli->sendMsg(ResponseCode::CommandSyntaxError, "Unknown image cmd", false);
+ cli->sendMsg(ResponseCode::CommandSyntaxError, "Unknown obb cmd", false);
}
if (!rc) {
- cli->sendMsg(ResponseCode::CommandOkay, "image operation succeeded", false);
+ cli->sendMsg(ResponseCode::CommandOkay, "obb operation succeeded", false);
} else {
rc = ResponseCode::convertFromErrno();
- cli->sendMsg(rc, "image operation failed", true);
+ cli->sendMsg(rc, "obb operation failed", true);
}
return 0;