From d7d4208976125d114d0b8e44438e2417d5275098 Mon Sep 17 00:00:00 2001 From: Doug Zongker Date: Fri, 17 Sep 2010 13:02:48 -0700 Subject: [PATCH] remove unneeded partition roots Recovery itself no longer needs to access all these partitions; manipulation of them is done by the updater binary. This is a small first step towards removing roots entirely. Change-Id: I3fbcada32079a37db4cc097861dfa91e0a08da30 --- install.c | 15 ++------------- roots.c | 55 ------------------------------------------------------- roots.h | 14 -------------- 3 files changed, 2 insertions(+), 82 deletions(-) diff --git a/install.c b/install.c index 2619a0cc..a56dbd04 100644 --- a/install.c +++ b/install.c @@ -159,17 +159,6 @@ try_update_binary(const char *path, ZipArchive *zip) { return INSTALL_SUCCESS; } -static int -handle_update_package(const char *path, ZipArchive *zip) -{ - // Update should take the rest of the progress bar. - ui_print("Installing update...\n"); - - int result = try_update_binary(path, zip); - register_package_root(NULL, NULL); // Unregister package root - return result; -} - // Reads a file containing one or more public keys as produced by // DumpPublicKey: this is an RSAPublicKey struct as it would appear // as a C source literal, eg: @@ -300,6 +289,6 @@ install_package(const char *root_path) /* Verify and install the contents of the package. */ - int status = handle_update_package(path, &zip); - return status; + ui_print("Installing update...\n"); + return try_update_binary(path, &zip); } diff --git a/roots.c b/roots.c index d5754db3..a510145e 100644 --- a/roots.c +++ b/roots.c @@ -45,15 +45,10 @@ static const char g_package_file[] = "@\0g_package_file"; static const char g_ramdisk[] = "@\0g_ramdisk"; static RootInfo g_roots[] = { - { "BOOT:", g_mtd_device, NULL, "boot", NULL, g_raw }, { "CACHE:", g_mtd_device, NULL, "cache", "/cache", "yaffs2" }, { "DATA:", g_mtd_device, NULL, "userdata", "/data", "yaffs2" }, { "MISC:", g_mtd_device, NULL, "misc", NULL, g_raw }, - { "PACKAGE:", NULL, NULL, NULL, NULL, g_package_file }, - { "RECOVERY:", g_mtd_device, NULL, "recovery", "/", g_raw }, { "SDCARD:", "/dev/block/mmcblk0p1", "/dev/block/mmcblk0", NULL, "/sdcard", "vfat" }, - { "SYSTEM:", g_mtd_device, NULL, "system", "/system", "yaffs2" }, - { "MBM:", g_mtd_device, NULL, "mbm", NULL, g_raw }, { "TMP:", NULL, NULL, NULL, "/tmp", g_ramdisk }, }; #define NUM_ROOTS (sizeof(g_roots) / sizeof(g_roots[0])) @@ -85,56 +80,6 @@ get_root_info_for_path(const char *root_path) return NULL; } -static const ZipArchive *g_package = NULL; -static char *g_package_path = NULL; - -int -register_package_root(const ZipArchive *package, const char *package_path) -{ - if (package != NULL) { - package_path = strdup(package_path); - if (package_path == NULL) { - return -1; - } - g_package_path = (char *)package_path; - } else { - free(g_package_path); - g_package_path = NULL; - } - g_package = package; - return 0; -} - -int -is_package_root_path(const char *root_path) -{ - const RootInfo *info = get_root_info_for_path(root_path); - return info != NULL && info->filesystem == g_package_file; -} - -const char * -translate_package_root_path(const char *root_path, - char *out_buf, size_t out_buf_len, const ZipArchive **out_package) -{ - const RootInfo *info = get_root_info_for_path(root_path); - if (info == NULL || info->filesystem != g_package_file) { - return NULL; - } - - /* Strip the package root off of the path. - */ - size_t root_len = strlen(info->name); - root_path += root_len; - size_t root_path_len = strlen(root_path); - - if (out_buf_len < root_path_len + 1) { - return NULL; - } - strcpy(out_buf, root_path); - *out_package = g_package; - return out_buf; -} - /* Takes a string like "SYSTEM:lib" and turns it into a string * like "/system/lib". The translated path is put in out_buf, * and out_buf is returned if the translation succeeded. diff --git a/roots.h b/roots.h index bc847ea6..e85191d9 100644 --- a/roots.h +++ b/roots.h @@ -24,14 +24,6 @@ * components, like "SYSTEM:a/b/c". */ -/* Associate this package with the package root "PKG:". - */ -int register_package_root(const ZipArchive *package, const char *package_path); - -/* Returns non-zero iff root_path points inside a package. - */ -int is_package_root_path(const char *root_path); - /* Takes a string like "SYSTEM:lib" and turns it into a string * like "/system/lib". The translated path is put in out_buf, * and out_buf is returned if the translation succeeded. @@ -39,12 +31,6 @@ int is_package_root_path(const char *root_path); const char *translate_root_path(const char *root_path, char *out_buf, size_t out_buf_len); -/* Takes a string like "PKG:lib/libc.so" and returns a pointer to - * the containing zip file and a path like "lib/libc.so". - */ -const char *translate_package_root_path(const char *root_path, - char *out_buf, size_t out_buf_len, const ZipArchive **out_package); - /* Returns negative on error, positive if it's mounted, zero if it isn't. */ int is_root_path_mounted(const char *root_path);