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

Commit cdcc6a00 authored by Kenny Root's avatar Kenny Root Committed by Android Git Automerger
Browse files

am d6effb06: am e8621534: Merge "ZipUtilsRO rewrite based on Dalvik Zip rewrite" into kraken

parents 8bf05f47 d6effb06
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -47,8 +47,8 @@ extern ZipEntryCRO ZipFileCRO_findEntryByName(ZipFileCRO zip,
        const char* fileName);

extern bool ZipFileCRO_getEntryInfo(ZipFileCRO zip, ZipEntryCRO entry,
        int* pMethod, long* pUncompLen,
        long* pCompLen, off_t* pOffset, long* pModWhen, long* pCrc32);
        int* pMethod, size_t* pUncompLen,
        size_t* pCompLen, off_t* pOffset, long* pModWhen, long* pCrc32);

extern bool ZipFileCRO_uncompressEntry(ZipFileCRO zip, ZipEntryCRO entry, int fd);

+25 −8
Original line number Diff line number Diff line
@@ -58,14 +58,19 @@ typedef void* ZipEntryRO;
class ZipFileRO {
public:
    ZipFileRO()
        : mFd(-1), mFileMap(NULL), mHashTableSize(-1), mHashTable(NULL)
        : mFd(-1), mFileName(NULL), mFileLength(-1),
          mDirectoryMap(NULL),
          mNumEntries(-1), mDirectoryOffset(-1),
          mHashTableSize(-1), mHashTable(NULL)
        {}
    ~ZipFileRO() {
        free(mHashTable);
        if (mFileMap)
            mFileMap->release();
        if (mDirectoryMap)
            mDirectoryMap->release();
        if (mFd >= 0)
            close(mFd);
        if (mFileName)
            free(mFileName);
    }

    /*
@@ -118,8 +123,8 @@ public:
     * Returns "false" if "entry" is bogus or if the data in the Zip file
     * appears to be bad.
     */
    bool getEntryInfo(ZipEntryRO entry, int* pMethod, long* pUncompLen,
        long* pCompLen, off_t* pOffset, long* pModWhen, long* pCrc32) const;
    bool getEntryInfo(ZipEntryRO entry, int* pMethod, size_t* pUncompLen,
        size_t* pCompLen, off_t* pOffset, long* pModWhen, long* pCrc32) const;

    /*
     * Create a new FileMap object that maps a subset of the archive.  For
@@ -155,13 +160,13 @@ public:
     * Utility function: uncompress deflated data, buffer to buffer.
     */
    static bool inflateBuffer(void* outBuf, const void* inBuf,
        long uncompLen, long compLen);
        size_t uncompLen, size_t compLen);

    /*
     * Utility function: uncompress deflated data, buffer to fd.
     */
    static bool inflateBuffer(int fd, const void* inBuf,
        long uncompLen, long compLen);
        size_t uncompLen, size_t compLen);

    /*
     * Some basic functions for raw data manipulation.  "LE" means
@@ -179,6 +184,9 @@ private:
    ZipFileRO(const ZipFileRO& src);
    ZipFileRO& operator=(const ZipFileRO& src);

    /* locate and parse the central directory */
    bool mapCentralDirectory(void);

    /* parse the archive, prepping internal structures */
    bool parseZipArchive(void);

@@ -203,12 +211,21 @@ private:
    /* open Zip archive */
    int         mFd;

    /* zip file name */
    char*       mFileName;

    /* length of file */
    size_t      mFileLength;

    /* mapped file */
    FileMap*    mFileMap;
    FileMap*    mDirectoryMap;

    /* number of entries in the Zip archive */
    int         mNumEntries;

    /* CD directory offset in the Zip archive */
    off_t       mDirectoryOffset;

    /*
     * We know how many entries are in the Zip archive, so we have a
     * fixed-size hash table.  We probe for an empty slot.
+1 −1
Original line number Diff line number Diff line
@@ -824,7 +824,7 @@ Asset* AssetManager::openAssetFromZipLocked(const ZipFileRO* pZipFile,

    // TODO: look for previously-created shared memory slice?
    int method;
    long uncompressedLen;
    size_t uncompressedLen;

    //printf("USING Zip '%s'\n", pEntry->getFileName());

+2 −2
Original line number Diff line number Diff line
@@ -39,8 +39,8 @@ ZipEntryCRO ZipFileCRO_findEntryByName(ZipFileCRO zipToken,
}

bool ZipFileCRO_getEntryInfo(ZipFileCRO zipToken, ZipEntryRO entryToken,
        int* pMethod, long* pUncompLen,
        long* pCompLen, off_t* pOffset, long* pModWhen, long* pCrc32) {
        int* pMethod, size_t* pUncompLen,
        size_t* pCompLen, off_t* pOffset, long* pModWhen, long* pCrc32) {
    ZipFileRO* zip = (ZipFileRO*)zipToken;
    ZipEntryRO entry = (ZipEntryRO)entryToken;
    return zip->getEntryInfo(entry, pMethod, pUncompLen, pCompLen, pOffset,
+296 −166

File changed.

Preview size limit exceeded, changes collapsed.