Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 28176b66 authored by Jooyung Han's avatar Jooyung Han Committed by Gerrit Code Review
Browse files

Merge "zipalign: use getopt"

parents e62232d7 b72009a8
Loading
Loading
Loading
Loading
+29 −44
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@

#include "ZipAlign.h"

#include <getopt.h>
#include <stdio.h>
#include <stdlib.h>

@@ -60,19 +61,9 @@ 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) {
    int opt;
    while ((opt = getopt(argc, argv, "fcpvz")) != -1) {
        switch (opt) {
        case 'c':
            check = true;
            break;
@@ -89,40 +80,34 @@ int main(int argc, char* const argv[])
            pageAlignSharedLibs = true;
            break;
        default:
                fprintf(stderr, "ERROR: unknown flag -%c\n", *cp);
            fprintf(stderr, "ERROR: unknown flag -%c\n", opt);
            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;
        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);
        }
    }