Merge "zipalign: use getopt"
This commit is contained in:
@@ -20,6 +20,7 @@
|
|||||||
|
|
||||||
#include "ZipAlign.h"
|
#include "ZipAlign.h"
|
||||||
|
|
||||||
|
#include <getopt.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
||||||
@@ -60,69 +61,53 @@ int main(int argc, char* const argv[])
|
|||||||
int alignment;
|
int alignment;
|
||||||
char* endp;
|
char* endp;
|
||||||
|
|
||||||
if (argc < 4) {
|
int opt;
|
||||||
wantUsage = true;
|
while ((opt = getopt(argc, argv, "fcpvz")) != -1) {
|
||||||
goto bail;
|
switch (opt) {
|
||||||
}
|
case 'c':
|
||||||
|
check = true;
|
||||||
argc--;
|
break;
|
||||||
argv++;
|
case 'f':
|
||||||
|
force = true;
|
||||||
while (argc && argv[0][0] == '-') {
|
break;
|
||||||
const char* cp = argv[0] +1;
|
case 'v':
|
||||||
|
verbose = true;
|
||||||
while (*cp != '\0') {
|
break;
|
||||||
switch (*cp) {
|
case 'z':
|
||||||
case 'c':
|
zopfli = true;
|
||||||
check = true;
|
break;
|
||||||
break;
|
case 'p':
|
||||||
case 'f':
|
pageAlignSharedLibs = true;
|
||||||
force = true;
|
break;
|
||||||
break;
|
default:
|
||||||
case 'v':
|
fprintf(stderr, "ERROR: unknown flag -%c\n", opt);
|
||||||
verbose = true;
|
wantUsage = true;
|
||||||
break;
|
goto bail;
|
||||||
case 'z':
|
|
||||||
zopfli = true;
|
|
||||||
break;
|
|
||||||
case 'p':
|
|
||||||
pageAlignSharedLibs = true;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
fprintf(stderr, "ERROR: unknown flag -%c\n", *cp);
|
|
||||||
wantUsage = true;
|
|
||||||
goto bail;
|
|
||||||
}
|
|
||||||
|
|
||||||
cp++;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
argc--;
|
|
||||||
argv++;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!((check && argc == 2) || (!check && argc == 3))) {
|
if (!((check && (argc - optind) == 2) || (!check && (argc - optind) == 3))) {
|
||||||
wantUsage = true;
|
wantUsage = true;
|
||||||
goto bail;
|
goto bail;
|
||||||
}
|
}
|
||||||
|
|
||||||
alignment = strtol(argv[0], &endp, 10);
|
alignment = strtol(argv[optind], &endp, 10);
|
||||||
if (*endp != '\0' || alignment <= 0) {
|
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;
|
wantUsage = true;
|
||||||
goto bail;
|
goto bail;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (check) {
|
if (check) {
|
||||||
/* check existing archive for correct alignment */
|
/* check existing archive for correct alignment */
|
||||||
result = verify(argv[1], alignment, verbose, pageAlignSharedLibs);
|
result = verify(argv[optind + 1], alignment, verbose, pageAlignSharedLibs);
|
||||||
} else {
|
} else {
|
||||||
/* create the new archive */
|
/* 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 */
|
/* trust, but verify */
|
||||||
if (result == 0) {
|
if (result == 0) {
|
||||||
result = verify(argv[2], alignment, verbose, pageAlignSharedLibs);
|
result = verify(argv[optind + 2], alignment, verbose, pageAlignSharedLibs);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user