diff options
author | Kenny Root <kroot@google.com> | 2010-07-12 09:59:49 -0700 |
---|---|---|
committer | Kenny Root <kroot@google.com> | 2010-07-15 12:41:01 -0700 |
commit | 508c0e1605b795bbb51cb47d955b89f3df26ca94 (patch) | |
tree | f81d933fa05f1653d6e67d75c756689371316638 /CommandListener.cpp | |
parent | fb7c4d5a8a1031cf0e493ff182dcf458e5fe8c77 (diff) | |
download | system_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.cpp | 40 |
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; |