Loading adb/commandline.cpp +21 −40 Original line number Diff line number Diff line Loading @@ -1983,20 +1983,15 @@ static int uninstall_app(TransportType transport, const char* serial, int argc, static int install_app(TransportType transport, const char* serial, int argc, const char** argv) { // The last argument must be the APK file const char* file = argv[argc - 1]; const char* dot = strrchr(file, '.'); bool found_apk = false; struct stat sb; if (dot && !strcasecmp(dot, ".apk")) { if (stat(file, &sb) == -1 || !S_ISREG(sb.st_mode)) { fprintf(stderr, "Invalid APK file: %s\n", file); if (!android::base::EndsWithIgnoreCase(file, ".apk")) { fprintf(stderr, "Filename doesn't end .apk: %s\n", file); return EXIT_FAILURE; } found_apk = true; } if (!found_apk) { fprintf(stderr, "Missing APK file\n"); return EXIT_FAILURE; struct stat sb; if (stat(file, &sb) == -1) { fprintf(stderr, "Failed to stat %s: %s\n", file, strerror(errno)); return 1; } int localFd = adb_open(file, O_RDONLY); Loading Loading @@ -2042,22 +2037,16 @@ static int install_app(TransportType transport, const char* serial, int argc, co static int install_multiple_app(TransportType transport, const char* serial, int argc, const char** argv) { int i; struct stat sb; uint64_t total_size = 0; // Find all APK arguments starting at end. // All other arguments passed through verbatim. int first_apk = -1; for (i = argc - 1; i >= 0; i--) { uint64_t total_size = 0; for (int i = argc - 1; i >= 0; i--) { const char* file = argv[i]; const char* dot = strrchr(file, '.'); if (dot && !strcasecmp(dot, ".apk")) { if (stat(file, &sb) == -1 || !S_ISREG(sb.st_mode)) { fprintf(stderr, "Invalid APK file: %s\n", file); return EXIT_FAILURE; } total_size += sb.st_size; if (android::base::EndsWithIgnoreCase(file, ".apk")) { struct stat sb; if (stat(file, &sb) != -1) total_size += sb.st_size; first_apk = i; } else { break; Loading @@ -2065,7 +2054,7 @@ static int install_multiple_app(TransportType transport, const char* serial, int } if (first_apk == -1) { fprintf(stderr, "Missing APK file\n"); fprintf(stderr, "No APK file on command line\n"); return 1; } Loading @@ -2077,7 +2066,7 @@ static int install_multiple_app(TransportType transport, const char* serial, int } std::string cmd = android::base::StringPrintf("%s install-create -S %" PRIu64, install_cmd.c_str(), total_size); for (i = 1; i < first_apk; i++) { for (int i = 1; i < first_apk; i++) { cmd += " " + escape_arg(argv[i]); } Loading Loading @@ -2109,10 +2098,11 @@ static int install_multiple_app(TransportType transport, const char* serial, int // Valid session, now stream the APKs int success = 1; for (i = first_apk; i < argc; i++) { for (int i = first_apk; i < argc; i++) { const char* file = argv[i]; struct stat sb; if (stat(file, &sb) == -1) { fprintf(stderr, "Failed to stat %s\n", file); fprintf(stderr, "Failed to stat %s: %s\n", file, strerror(errno)); success = 0; goto finalize_session; } Loading Loading @@ -2212,10 +2202,8 @@ static int install_app_legacy(TransportType transport, const char* serial, int a static const char *const DATA_DEST = "/data/local/tmp/%s"; static const char *const SD_DEST = "/sdcard/tmp/%s"; const char* where = DATA_DEST; int i; struct stat sb; for (i = 1; i < argc; i++) { for (int i = 1; i < argc; i++) { if (!strcmp(argv[i], "-s")) { where = SD_DEST; } Loading @@ -2224,22 +2212,15 @@ static int install_app_legacy(TransportType transport, const char* serial, int a // Find last APK argument. // All other arguments passed through verbatim. int last_apk = -1; for (i = argc - 1; i >= 0; i--) { const char* file = argv[i]; const char* dot = strrchr(file, '.'); if (dot && !strcasecmp(dot, ".apk")) { if (stat(file, &sb) == -1 || !S_ISREG(sb.st_mode)) { fprintf(stderr, "Invalid APK file: %s\n", file); return EXIT_FAILURE; } for (int i = argc - 1; i >= 0; i--) { if (android::base::EndsWithIgnoreCase(argv[i], ".apk")) { last_apk = i; break; } } if (last_apk == -1) { fprintf(stderr, "Missing APK file\n"); fprintf(stderr, "No APK file on command line\n"); return EXIT_FAILURE; } Loading Loading
adb/commandline.cpp +21 −40 Original line number Diff line number Diff line Loading @@ -1983,20 +1983,15 @@ static int uninstall_app(TransportType transport, const char* serial, int argc, static int install_app(TransportType transport, const char* serial, int argc, const char** argv) { // The last argument must be the APK file const char* file = argv[argc - 1]; const char* dot = strrchr(file, '.'); bool found_apk = false; struct stat sb; if (dot && !strcasecmp(dot, ".apk")) { if (stat(file, &sb) == -1 || !S_ISREG(sb.st_mode)) { fprintf(stderr, "Invalid APK file: %s\n", file); if (!android::base::EndsWithIgnoreCase(file, ".apk")) { fprintf(stderr, "Filename doesn't end .apk: %s\n", file); return EXIT_FAILURE; } found_apk = true; } if (!found_apk) { fprintf(stderr, "Missing APK file\n"); return EXIT_FAILURE; struct stat sb; if (stat(file, &sb) == -1) { fprintf(stderr, "Failed to stat %s: %s\n", file, strerror(errno)); return 1; } int localFd = adb_open(file, O_RDONLY); Loading Loading @@ -2042,22 +2037,16 @@ static int install_app(TransportType transport, const char* serial, int argc, co static int install_multiple_app(TransportType transport, const char* serial, int argc, const char** argv) { int i; struct stat sb; uint64_t total_size = 0; // Find all APK arguments starting at end. // All other arguments passed through verbatim. int first_apk = -1; for (i = argc - 1; i >= 0; i--) { uint64_t total_size = 0; for (int i = argc - 1; i >= 0; i--) { const char* file = argv[i]; const char* dot = strrchr(file, '.'); if (dot && !strcasecmp(dot, ".apk")) { if (stat(file, &sb) == -1 || !S_ISREG(sb.st_mode)) { fprintf(stderr, "Invalid APK file: %s\n", file); return EXIT_FAILURE; } total_size += sb.st_size; if (android::base::EndsWithIgnoreCase(file, ".apk")) { struct stat sb; if (stat(file, &sb) != -1) total_size += sb.st_size; first_apk = i; } else { break; Loading @@ -2065,7 +2054,7 @@ static int install_multiple_app(TransportType transport, const char* serial, int } if (first_apk == -1) { fprintf(stderr, "Missing APK file\n"); fprintf(stderr, "No APK file on command line\n"); return 1; } Loading @@ -2077,7 +2066,7 @@ static int install_multiple_app(TransportType transport, const char* serial, int } std::string cmd = android::base::StringPrintf("%s install-create -S %" PRIu64, install_cmd.c_str(), total_size); for (i = 1; i < first_apk; i++) { for (int i = 1; i < first_apk; i++) { cmd += " " + escape_arg(argv[i]); } Loading Loading @@ -2109,10 +2098,11 @@ static int install_multiple_app(TransportType transport, const char* serial, int // Valid session, now stream the APKs int success = 1; for (i = first_apk; i < argc; i++) { for (int i = first_apk; i < argc; i++) { const char* file = argv[i]; struct stat sb; if (stat(file, &sb) == -1) { fprintf(stderr, "Failed to stat %s\n", file); fprintf(stderr, "Failed to stat %s: %s\n", file, strerror(errno)); success = 0; goto finalize_session; } Loading Loading @@ -2212,10 +2202,8 @@ static int install_app_legacy(TransportType transport, const char* serial, int a static const char *const DATA_DEST = "/data/local/tmp/%s"; static const char *const SD_DEST = "/sdcard/tmp/%s"; const char* where = DATA_DEST; int i; struct stat sb; for (i = 1; i < argc; i++) { for (int i = 1; i < argc; i++) { if (!strcmp(argv[i], "-s")) { where = SD_DEST; } Loading @@ -2224,22 +2212,15 @@ static int install_app_legacy(TransportType transport, const char* serial, int a // Find last APK argument. // All other arguments passed through verbatim. int last_apk = -1; for (i = argc - 1; i >= 0; i--) { const char* file = argv[i]; const char* dot = strrchr(file, '.'); if (dot && !strcasecmp(dot, ".apk")) { if (stat(file, &sb) == -1 || !S_ISREG(sb.st_mode)) { fprintf(stderr, "Invalid APK file: %s\n", file); return EXIT_FAILURE; } for (int i = argc - 1; i >= 0; i--) { if (android::base::EndsWithIgnoreCase(argv[i], ".apk")) { last_apk = i; break; } } if (last_apk == -1) { fprintf(stderr, "Missing APK file\n"); fprintf(stderr, "No APK file on command line\n"); return EXIT_FAILURE; } Loading