diff --git a/tools/zipalign/ZipAlignMain.cpp b/tools/zipalign/ZipAlignMain.cpp index 47ebd126af..53fc8d4f62 100644 --- a/tools/zipalign/ZipAlignMain.cpp +++ b/tools/zipalign/ZipAlignMain.cpp @@ -20,6 +20,7 @@ #include "ZipAlign.h" +#include #include #include @@ -60,69 +61,53 @@ int main(int argc, char* const argv[]) int alignment; char* endp; - if (argc < 4) { - wantUsage = true; - goto bail; - } - - argc--; - argv++; - - while (argc && argv[0][0] == '-') { - const char* cp = argv[0] +1; - - while (*cp != '\0') { - switch (*cp) { - case 'c': - check = true; - break; - case 'f': - force = true; - break; - case 'v': - verbose = true; - break; - case 'z': - zopfli = true; - break; - case 'p': - pageAlignSharedLibs = true; - break; - default: - fprintf(stderr, "ERROR: unknown flag -%c\n", *cp); - wantUsage = true; - goto bail; - } - - cp++; + int opt; + while ((opt = getopt(argc, argv, "fcpvz")) != -1) { + switch (opt) { + case 'c': + check = true; + break; + case 'f': + force = true; + break; + case 'v': + verbose = true; + break; + case 'z': + zopfli = true; + break; + case 'p': + pageAlignSharedLibs = true; + break; + default: + fprintf(stderr, "ERROR: unknown flag -%c\n", opt); + wantUsage = true; + goto bail; } - - argc--; - argv++; } - if (!((check && argc == 2) || (!check && argc == 3))) { + if (!((check && (argc - optind) == 2) || (!check && (argc - optind) == 3))) { wantUsage = true; goto bail; } - alignment = strtol(argv[0], &endp, 10); + alignment = strtol(argv[optind], &endp, 10); if (*endp != '\0' || alignment <= 0) { - fprintf(stderr, "Invalid value for alignment: %s\n", argv[0]); + fprintf(stderr, "Invalid value for alignment: %s\n", argv[optind]); wantUsage = true; goto bail; } if (check) { /* check existing archive for correct alignment */ - result = verify(argv[1], alignment, verbose, pageAlignSharedLibs); + result = verify(argv[optind + 1], alignment, verbose, pageAlignSharedLibs); } else { /* create the new archive */ - result = process(argv[1], argv[2], alignment, force, zopfli, pageAlignSharedLibs); + result = process(argv[optind + 1], argv[optind + 2], alignment, force, zopfli, pageAlignSharedLibs); /* trust, but verify */ if (result == 0) { - result = verify(argv[2], alignment, verbose, pageAlignSharedLibs); + result = verify(argv[optind + 2], alignment, verbose, pageAlignSharedLibs); } }