123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- //
- // unzipLIB - Arduino unzip library
- // based on zlib and contrib/minizip/unzip
- // written by Larry Bank
- // bitbank@pobox.com
- //
- // Copyright 2021 BitBank Software, Inc. All Rights Reserved.
- // 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.
- //===========================================================================
- #include "unzipLIB.h"
- int UNZIP::openZIP(uint8_t *pData, int iDataSize)
- {
- _zip.zHandle = unzOpen(NULL, pData, iDataSize, &_zip, NULL, NULL, NULL, NULL);
- if (_zip.zHandle == NULL) {
- // printf("Error opening file: %s\n", argv[1]);
- return -1;
- }
- return 0;
- } /* open() */
- int UNZIP::openZIP(const char *szFilename, ZIP_OPEN_CALLBACK *pfnOpen, ZIP_CLOSE_CALLBACK *pfnClose, ZIP_READ_CALLBACK *pfnRead, ZIP_SEEK_CALLBACK *pfnSeek)
- {
- _zip.zHandle = unzOpen(szFilename, NULL, 0, &_zip, pfnOpen, pfnRead, pfnSeek, pfnClose);
- if (_zip.zHandle == NULL) {
- // printf("Error opening file: %s\n", argv[1]);
- return -1;
- }
- return 0;
- } /* open() */
- int UNZIP::closeZIP()
- {
- _zip.iLastError = unzClose((unzFile)_zip.zHandle);
- return _zip.iLastError;
- } /* closeZIP() */
- int UNZIP::openCurrentFile()
- {
- _zip.iLastError = unzOpenCurrentFile((unzFile)_zip.zHandle);
- return _zip.iLastError;
- } /* openCurrentFile() */
- int UNZIP::closeCurrentFile()
- {
- _zip.iLastError = unzCloseCurrentFile((unzFile)_zip.zHandle);
- return _zip.iLastError;
- } /* closeCurrentFile() */
- int UNZIP::readCurrentFile(uint8_t *buffer, int iLength)
- {
- return unzReadCurrentFile((unzFile)_zip.zHandle, buffer, iLength);
- } /* readCurrentFile() */
- int UNZIP::getCurrentFilePos()
- {
- return (int)unztell((unzFile)_zip.zHandle);
- } /* getCurrentFilePos() */
- int UNZIP::gotoFirstFile()
- {
- return unzGoToFirstFile((unzFile)_zip.zHandle);
- } /* gotoFirstFile() */
- int UNZIP::gotoNextFile()
- {
- _zip.iLastError = unzGoToNextFile((unzFile)_zip.zHandle);
- return _zip.iLastError;
- } /* gotoNextFile() */
- int UNZIP::locateFile(const char *szFilename)
- {
- _zip.iLastError = unzLocateFile((unzFile)_zip.zHandle, szFilename, 2);
- return _zip.iLastError;
- } /* locateFile() */
- int UNZIP::getFileInfo(unz_file_info *pFileInfo, char *szFileName, int iFileNameBufferSize, void *extraField, int iExtraFieldBufferSize, char *szComment, int iCommentBufferSize) // get info about the current file
- {
- return unzGetCurrentFileInfo((unzFile)_zip.zHandle,
- pFileInfo,
- szFileName,
- iFileNameBufferSize,
- extraField,
- iExtraFieldBufferSize,
- szComment,
- iCommentBufferSize);
- } /* getFileInfo() */
- int UNZIP::getLastError()
- {
- return _zip.iLastError;
- } /* getLastError() */
- int UNZIP::getGlobalComment(char *destBuffer, int iBufferSize)
- {
- _zip.iLastError = unzGetGlobalComment((unzFile)_zip.zHandle, destBuffer, iBufferSize);
- return _zip.iLastError;
- } /* getComment() */
|