Revert "Revert "adb: support /oem partition""
This reverts commit 6084a0124f868c7ec43f6c415a27a168f27ff694.
The original build breakage is fixed by (a) building the verity
code for eng builds as well as userdebug builds and (b) moving
the exported remount service functions into a new header file.
Change-Id: Ice0c4f97d4db38ab7eb333c7a6e56bbd11123f5b
diff --git a/adb/commandline.cpp b/adb/commandline.cpp
index ecaab83..4538b04 100644
--- a/adb/commandline.cpp
+++ b/adb/commandline.cpp
@@ -43,7 +43,8 @@
static int do_cmd(transport_type ttype, const char* serial, const char *cmd, ...);
int find_sync_dirs(const char *srcarg,
- char **android_srcdir_out, char **data_srcdir_out, char **vendor_srcdir_out);
+ char **system_srcdir_out, char **data_srcdir_out, char **vendor_srcdir_out,
+ char **oem_srcdir_out);
int install_app(transport_type transport, const char* serial, int argc,
const char** argv);
int install_multiple_app(transport_type transport, const char* serial, int argc,
@@ -206,7 +207,7 @@
" adb get-serialno - prints: <serial-number>\n"
" adb get-devpath - prints: <device-path>\n"
" adb status-window - continuously print device status for a specified device\n"
- " adb remount - remounts the /system and /vendor (if present) partitions on the device read-write\n"
+ " adb remount - remounts the /system, /vendor (if present) and /oem (if present) partitions on the device read-write\n"
" adb reboot [bootloader|recovery] - reboots the device, optionally into the bootloader or recovery program\n"
" adb reboot-bootloader - reboots the device into the bootloader\n"
" adb root - restarts the adbd daemon with root permissions\n"
@@ -222,9 +223,9 @@
"adb sync notes: adb sync [ <directory> ]\n"
" <localdir> can be interpreted in several ways:\n"
"\n"
- " - If <directory> is not specified, /system, /vendor (if present), and /data partitions will be updated.\n"
+ " - If <directory> is not specified, /system, /vendor (if present), /oem (if present) and /data partitions will be updated.\n"
"\n"
- " - If it is \"system\", \"vendor\" or \"data\", only the corresponding partition\n"
+ " - If it is \"system\", \"vendor\", \"oem\" or \"data\", only the corresponding partition\n"
" is updated.\n"
"\n"
"environmental variables:\n"
@@ -1633,7 +1634,8 @@
}
else if (!strcmp(argv[0], "sync")) {
const char* srcarg;
- char *android_srcpath, *data_srcpath, *vendor_srcpath;
+ char *system_srcpath, *data_srcpath, *vendor_srcpath, *oem_srcpath;
+
int listonly = 0;
int ret;
@@ -1653,18 +1655,22 @@
} else {
return usage();
}
- ret = find_sync_dirs(srcarg, &android_srcpath, &data_srcpath, &vendor_srcpath);
+ ret = find_sync_dirs(srcarg, &system_srcpath, &data_srcpath, &vendor_srcpath,
+ &oem_srcpath);
if (ret != 0) return usage();
- if (android_srcpath != NULL)
- ret = do_sync_sync(android_srcpath, "/system", listonly);
+ if (system_srcpath != NULL)
+ ret = do_sync_sync(system_srcpath, "/system", listonly);
if (ret == 0 && vendor_srcpath != NULL)
ret = do_sync_sync(vendor_srcpath, "/vendor", listonly);
+ if(ret == 0 && oem_srcpath != NULL)
+ ret = do_sync_sync(oem_srcpath, "/oem", listonly);
if (ret == 0 && data_srcpath != NULL)
ret = do_sync_sync(data_srcpath, "/data", listonly);
- free(android_srcpath);
+ free(system_srcpath);
free(vendor_srcpath);
+ free(oem_srcpath);
free(data_srcpath);
return ret;
}
@@ -1770,49 +1776,60 @@
}
int find_sync_dirs(const char *srcarg,
- char **android_srcdir_out, char **data_srcdir_out, char **vendor_srcdir_out)
+ char **system_srcdir_out, char **data_srcdir_out, char **vendor_srcdir_out,
+ char **oem_srcdir_out)
{
- char *android_srcdir = NULL, *data_srcdir = NULL, *vendor_srcdir = NULL;
+ char *system_srcdir = NULL, *data_srcdir = NULL, *vendor_srcdir = NULL, *oem_srcdir = NULL;
struct stat st;
if(srcarg == NULL) {
- android_srcdir = product_file("system");
+ system_srcdir = product_file("system");
data_srcdir = product_file("data");
vendor_srcdir = product_file("vendor");
- /* Check if vendor partition exists */
+ oem_srcdir = product_file("oem");
+ // Check if vendor partition exists.
if (lstat(vendor_srcdir, &st) || !S_ISDIR(st.st_mode))
vendor_srcdir = NULL;
+ // Check if oem partition exists.
+ if (lstat(oem_srcdir, &st) || !S_ISDIR(st.st_mode))
+ oem_srcdir = NULL;
} else {
- /* srcarg may be "data", "system" or NULL.
- * if srcarg is NULL, then both data and system are synced
- */
+ // srcarg may be "data", "system", "vendor", "oem" or NULL.
+ // If srcarg is NULL, then all partitions are synced.
if(strcmp(srcarg, "system") == 0) {
- android_srcdir = product_file("system");
+ system_srcdir = product_file("system");
} else if(strcmp(srcarg, "data") == 0) {
data_srcdir = product_file("data");
} else if(strcmp(srcarg, "vendor") == 0) {
vendor_srcdir = product_file("vendor");
+ } else if(strcmp(srcarg, "oem") == 0) {
+ oem_srcdir = product_file("oem");
} else {
- /* It's not "system", "vendor", or "data".
- */
+ // It's not "system", "data", "vendor", or "oem".
return 1;
}
}
- if(android_srcdir_out != NULL)
- *android_srcdir_out = android_srcdir;
+ if(system_srcdir_out != NULL)
+ *system_srcdir_out = system_srcdir;
else
- free(android_srcdir);
+ free(system_srcdir);
if(vendor_srcdir_out != NULL)
*vendor_srcdir_out = vendor_srcdir;
else
free(vendor_srcdir);
+ if(oem_srcdir_out != NULL)
+ *oem_srcdir_out = oem_srcdir;
+ else
+ free(oem_srcdir);
+
if(data_srcdir_out != NULL)
- *data_srcdir_out = data_srcdir;
- else
- free(data_srcdir);
+ *data_srcdir_out = data_srcdir;
+ else
+ free(data_srcdir);
+
return 0;
}