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

Commit d8bf9fd6 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 2bfc6fb6 32953d5b
Loading
Loading
Loading
Loading
+2 −2
Original line number Original line Diff line number Diff line
@@ -47,8 +47,8 @@ extern ZipEntryCRO ZipFileCRO_findEntryByName(ZipFileCRO zip,
        const char* fileName);
        const char* fileName);


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


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


+25 −8
Original line number Original line Diff line number Diff line
@@ -58,14 +58,19 @@ typedef void* ZipEntryRO;
class ZipFileRO {
class ZipFileRO {
public:
public:
    ZipFileRO()
    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() {
    ~ZipFileRO() {
        free(mHashTable);
        free(mHashTable);
        if (mFileMap)
        if (mDirectoryMap)
            mFileMap->release();
            mDirectoryMap->release();
        if (mFd >= 0)
        if (mFd >= 0)
            close(mFd);
            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
     * Returns "false" if "entry" is bogus or if the data in the Zip file
     * appears to be bad.
     * appears to be bad.
     */
     */
    bool getEntryInfo(ZipEntryRO entry, int* pMethod, long* pUncompLen,
    bool getEntryInfo(ZipEntryRO entry, int* pMethod, size_t* pUncompLen,
        long* pCompLen, off_t* pOffset, long* pModWhen, long* pCrc32) const;
        size_t* pCompLen, off_t* pOffset, long* pModWhen, long* pCrc32) const;


    /*
    /*
     * Create a new FileMap object that maps a subset of the archive.  For
     * 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.
     * Utility function: uncompress deflated data, buffer to buffer.
     */
     */
    static bool inflateBuffer(void* outBuf, const void* inBuf,
    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.
     * Utility function: uncompress deflated data, buffer to fd.
     */
     */
    static bool inflateBuffer(int fd, const void* inBuf,
    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
     * Some basic functions for raw data manipulation.  "LE" means
@@ -179,6 +184,9 @@ private:
    ZipFileRO(const ZipFileRO& src);
    ZipFileRO(const ZipFileRO& src);
    ZipFileRO& operator=(const ZipFileRO& src);
    ZipFileRO& operator=(const ZipFileRO& src);


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

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


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


    /* zip file name */
    char*       mFileName;

    /* length of file */
    size_t      mFileLength;

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


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


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


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


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


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

File changed.

Preview size limit exceeded, changes collapsed.