zipalign: use getopt

Bug: 192991318
Test: zipalign_tests
Change-Id: I49f8ebc2cc2dbefe53c2eedda8d185eb658b4124
This commit is contained in:
Jooyung Han
2021-07-13 13:40:12 +09:00
parent bcb4776446
commit b72009a8e9

View File

@@ -20,6 +20,7 @@
#include "ZipAlign.h"
#include <getopt.h>
#include <stdio.h>
#include <stdlib.h>
@@ -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);
}
}