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

Commit 2736c6f0 authored by Joanne Chung's avatar Joanne Chung
Browse files

Revert "Refactor zipalign to allow unit tests"

This reverts commit d4f71a97.

Reason for revert: Looks to have broken apsp master b/171754371

Change-Id: I17ec7ab20834f6b0dbdf49668c41d3e76c0c1e41
parent d4f71a97
Loading
Loading
Loading
Loading
+3 −35
Original line number Diff line number Diff line
@@ -4,8 +4,8 @@
// Zip alignment tool
//

cc_library_host_static {
    name: "libzipalign",
cc_binary_host {
    name: "zipalign",

    srcs: [
        "ZipAlign.cpp",
@@ -13,15 +13,11 @@ cc_library_host_static {
        "ZipFile.cpp",
    ],

    export_include_dirs: [
        "include",
    ],

    cflags: ["-Wall", "-Werror"],

    // NOTE: Do not add any shared_libs dependencies because they will break the
    // static_sdk_tools target.
    whole_static_libs: [
    static_libs: [
        "libutils",
        "libcutils",
        "liblog",
@@ -38,31 +34,3 @@ cc_library_host_static {
        },
    },
}

cc_binary_host {
    name: "zipalign",

    srcs: [
        "ZipAlignMain.cpp",
    ],

    cflags: ["-Wall", "-Werror"],

    static_libs: [
        "libzipalign",
    ]
}

cc_test_host {
    name: "zipalign_tests",
    srcs: [
        "tests/src/*_test.cpp",
    ],
    static_libs: [
        "libzipalign",
        "libgmock",
    ],
    data: [
         "tests/data/unaligned.zip",
    ],
}
+114 −4
Original line number Diff line number Diff line
@@ -14,13 +14,35 @@
 * limitations under the License.
 */

/*
 * Zip alignment tool
 */
#include "ZipFile.h"

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

namespace android {
using namespace android;

/*
 * Show program usage.
 */
void usage(void)
{
    fprintf(stderr, "Zip alignment utility\n");
    fprintf(stderr, "Copyright (C) 2009 The Android Open Source Project\n\n");
    fprintf(stderr,
        "Usage: zipalign [-f] [-p] [-v] [-z] <align> infile.zip outfile.zip\n"
        "       zipalign -c [-p] [-v] <align> infile.zip\n\n" );
    fprintf(stderr,
        "  <align>: alignment in bytes, e.g. '4' provides 32-bit alignment\n");
    fprintf(stderr, "  -c: check alignment only (does not modify file)\n");
    fprintf(stderr, "  -f: overwrite existing outfile.zip\n");
    fprintf(stderr, "  -p: memory page alignment for stored shared object files\n");
    fprintf(stderr, "  -v: verbose output\n");
    fprintf(stderr, "  -z: recompress using Zopfli\n");
}

static int getAlignment(bool pageAlignSharedLibs, int defaultAlignment,
    ZipEntry* pEntry) {
@@ -104,7 +126,7 @@ static int copyAndAlign(ZipFile* pZin, ZipFile* pZout, int alignment, bool zopfl
 * Process a file.  We open the input and output files, failing if the
 * output file exists and "force" wasn't specified.
 */
int process(const char* inFileName, const char* outFileName,
static int process(const char* inFileName, const char* outFileName,
    int alignment, bool force, bool zopfli, bool pageAlignSharedLibs)
{
    ZipFile zin, zout;
@@ -147,7 +169,7 @@ int process(const char* inFileName, const char* outFileName,
/*
 * Verify the alignment of a zip archive.
 */
int verify(const char* fileName, int alignment, bool verbose,
static int verify(const char* fileName, int alignment, bool verbose,
    bool pageAlignSharedLibs)
{
    ZipFile zipFile;
@@ -196,4 +218,92 @@ int verify(const char* fileName, int alignment, bool verbose,
    return foundBad ? 1 : 0;
}

} // namespace android
/*
 * Parse args.
 */
int main(int argc, char* const argv[])
{
    bool wantUsage = false;
    bool check = false;
    bool force = false;
    bool verbose = false;
    bool zopfli = false;
    bool pageAlignSharedLibs = false;
    int result = 1;
    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++;
        }

        argc--;
        argv++;
    }

    if (!((check && argc == 2) || (!check && argc == 3))) {
        wantUsage = true;
        goto bail;
    }

    alignment = strtol(argv[0], &endp, 10);
    if (*endp != '\0' || alignment <= 0) {
        fprintf(stderr, "Invalid value for alignment: %s\n", argv[0]);
        wantUsage = true;
        goto bail;
    }

    if (check) {
        /* check existing archive for correct alignment */
        result = verify(argv[1], alignment, verbose, pageAlignSharedLibs);
    } else {
        /* create the new archive */
        result = process(argv[1], argv[2], alignment, force, zopfli, pageAlignSharedLibs);

        /* trust, but verify */
        if (result == 0) {
            result = verify(argv[2], alignment, verbose, pageAlignSharedLibs);
        }
    }

bail:
    if (wantUsage) {
        usage();
        result = 2;
    }

    return result;
}

tools/zipalign/ZipAlignMain.cpp

deleted100644 → 0
+0 −136
Original line number Diff line number Diff line
/*
 * Copyright (C) 2008 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

/*
 * Zip alignment tool
 */

#include "ZipAlign.h"

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

using namespace android;

/*
 * Show program usage.
 */
void usage(void)
{
    fprintf(stderr, "Zip alignment utility\n");
    fprintf(stderr, "Copyright (C) 2009 The Android Open Source Project\n\n");
    fprintf(stderr,
        "Usage: zipalign [-f] [-p] [-v] [-z] <align> infile.zip outfile.zip\n"
        "       zipalign -c [-p] [-v] <align> infile.zip\n\n" );
    fprintf(stderr,
        "  <align>: alignment in bytes, e.g. '4' provides 32-bit alignment\n");
    fprintf(stderr, "  -c: check alignment only (does not modify file)\n");
    fprintf(stderr, "  -f: overwrite existing outfile.zip\n");
    fprintf(stderr, "  -p: memory page alignment for stored shared object files\n");
    fprintf(stderr, "  -v: verbose output\n");
    fprintf(stderr, "  -z: recompress using Zopfli\n");
}


/*
 * Parse args.
 */
int main(int argc, char* const argv[])
{
    bool wantUsage = false;
    bool check = false;
    bool force = false;
    bool verbose = false;
    bool zopfli = false;
    bool pageAlignSharedLibs = false;
    int result = 1;
    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++;
        }

        argc--;
        argv++;
    }

    if (!((check && argc == 2) || (!check && argc == 3))) {
        wantUsage = true;
        goto bail;
    }

    alignment = strtol(argv[0], &endp, 10);
    if (*endp != '\0' || alignment <= 0) {
        fprintf(stderr, "Invalid value for alignment: %s\n", argv[0]);
        wantUsage = true;
        goto bail;
    }

    if (check) {
        /* check existing archive for correct alignment */
        result = verify(argv[1], alignment, verbose, pageAlignSharedLibs);
    } else {
        /* create the new archive */
        result = process(argv[1], argv[2], alignment, force, zopfli, pageAlignSharedLibs);

        /* trust, but verify */
        if (result == 0) {
            result = verify(argv[2], alignment, verbose, pageAlignSharedLibs);
        }
    }

bail:
    if (wantUsage) {
        usage();
        result = 2;
    }

    return result;
}
+1 −3
Original line number Diff line number Diff line
@@ -29,7 +29,7 @@
#include <string.h>
#include <time.h>

namespace android {
using namespace android;

/*
 * Initialize a new ZipEntry structure from a FILE* positioned at a
@@ -696,5 +696,3 @@ void ZipEntry::CentralDirEntry::dump(void) const
        ALOGD("  comment: '%s'\n", mFileComment);
}
} // namespace android
+3 −4
Original line number Diff line number Diff line
@@ -35,7 +35,7 @@
#include <assert.h>
#include <inttypes.h>

namespace android {
using namespace android;

/*
 * Some environments require the "b", some choke on it.
@@ -134,7 +134,7 @@ status_t ZipFile::open(const char* zipFileName, int flags)
/*
 * Return the Nth entry in the archive.
 */
ZipEntry* ZipFile::getEntryByIndex(int idx) const
android::ZipEntry* ZipFile::getEntryByIndex(int idx) const
{
    if (idx < 0 || idx >= (int) mEntries.size())
        return NULL;
@@ -145,7 +145,7 @@ ZipEntry* ZipFile::getEntryByIndex(int idx) const
/*
 * Find an entry by name.
 */
ZipEntry* ZipFile::getEntryByName(const char* fileName) const
android::ZipEntry* ZipFile::getEntryByName(const char* fileName) const
{
    /*
     * Do a stupid linear string-compare search.
@@ -1397,4 +1397,3 @@ void ZipFile::EndOfCentralDir::dump(void) const
        mCentralDirSize, mCentralDirOffset, mCommentLen);
}
} // namespace android
Loading