Unzip library for PSP ̎gp@łB - written by ruka

Tv
  PSPzip`̃t@CWJ郉Cu̎gp@łBPSPł̎gp
@AGȂƂ͔rς肵C^tFCXɂłB

ӎ
  \[XJĂꂽhenohenoAL܂B
@vO݂ȂōĂ̂͑f炵I

]łłBȉ̓_`FbNĂB
EݍŏIłBdl͗\ύX\܂B
Ezipt@C̃[hꊇōsĂׁACu4MB̃
@mۂĂ܂B̍ۂɂ̓gpʂɂӉB̖͐
@[Xłɂĉ悤ƎvĂ܂B
EUnzip library for PSP̃\[X͌ݓYtĂ܂BLCIA
@[XɓYtv܂B


Unzipgp̂ɕKvȃC^tFCX
Unzip@\𗘗pɂ́AQ̊֐ƂP̃R[obN֐ň邨y
dlɂ܂B(ōl̂łŊقĉc)
ȉɊ֐̃vg^Cv錾Ɠdl܂Ƃ߂Ă܂B



 Unzip̒ʒm󂯎R[obN֐̃|C^w肷
void Unzip_setCallback(int (*pfuncCallback)(int nCallbackId, unsigned long ulExtractSize,
		      unsigned long ulCurrentPosition, const void *pData,
                      unsigned long ulDataSize, unsigned long ulUserData));

pfuncCallback	    : Unzip libraryɃR[obNR[obN֐̃|C^

return : Ȃ



 UnzipɎw肵t@C̉𓀂܂B
int Unzip_execExtract(const char *pszTargetFile, unsigned long ulUserData);

pszTargetFile       : WJzipt@CtpXŎw肵܂B
ulUserData          : [U`̒lwł܂B̒l̓R[obNɒʒm܂B

return : UZEXR_OK ͐ɏI܂B
         UZEXR_CANCEL R[obNŃLZ܂B
         UZEXR_INVALIDCALLBACK Unzip_setCallbackŃR[obN֐ݒ肪Ă܂B
         UZEXR_INVALIDFILE t@CُŏI܂B
         UZEXR_FATALERROR vIȃG[܂B
note : UZCB_FIND_FILE R[obN̖߂lׂ UZCBR_PASS ɂĂ UZEXR_OK AĂ܂B



 Unzip_execExtractĂяoۂ̃R[obN֐łB
int funcUnzipCallback(int nCallbackId,
                      unsigned long ulExtractSize,
		      unsigned long ulCurrentPosition,
                      const void *pData,
                      unsigned long ulDataSize,
                      unsigned long ulUserData);

nCallbackId         : R[obN̕ށB
ulExtractSize       : WJ̃t@CTCY
ulCurrentPosition   : f[^̈ʒu
pData		    : ̃f[^ւ̃|C^BnCallbackId̒lɂӖςB
ulDataSize	    : pData(̃f[^)̃TCY
ulUserData	    : Unzip_execExtractĂяoۂ̑2i[Ă܂B

nCallbackIdlƊep[^̊֘A͈ȉ̒ʂłB


--- UZCB_FIND_FILE ---
nCallbackId	    : UZCB_FIND_FILE	t@C̃R[obNłB
ulExtractSize       : t@C̓WJf[^Ŝ̃TCY
ulCurrentPosition   : gp
pData   	    : t@Cւ̃|C^B
		      (const char *LXgăANZXĉ)
ulDataSize	    : gp
ulUserData	    : Unzip_execExtractĂяoۂ̑Qi[Ă܂B

return  : UZCBR_OK ̃t@C̓eWJ܂B
          UZCBR_PASS ̃t@C͖Ãt@C܂B
          UZCBR_CANCEL WJLZUnzip_execExtract畜A܂B
----------------------------------------------------------------------


--- UZCB_EXTRACT_PROGRESS ---
nCallbackId	    : UZCB_EXTRACT_PROGRESS	t@C̓WJ̃R[obNłB
ulExtractSize       : ݓWJĂf[^Ŝ̃TCY
ulCurrentPosition   : ݓWJĂf[^̐擪ʒu
pData		    : WJf[^ւ̃|C^(const unsigned char*ŃANZX)
ulDataSize	    : WJf[^̃TCY
ulUserData	    : Unzip_execExtractĂяoۂ̑Qi[Ă܂B

return  : UZCBR_OK s܂B
          UZCBR_PASS ̃t@C͖Ãt@C܂B
          UZCBR_CANCEL WJLZUnzip_execExtract畜A܂B

note : Unzipł́Aő8192oCg̃f[^ɂĒʒms܂Bȃf[^
       ۂɂ͂ӂB(ʒmɃvOXʂɏoƐxȂ)
       UZCB_FIND_FILE R[obNŏUZCBR_OKԂÃR[obNɂĎۂ
       gmF /Ȃ \łB
----------------------------------------------------------------------





 

#include "zlibInterface.h"

// 錾
int funcUnzipCallback(int nCallbackId,
                      unsigned long ulExtractSize,
		      unsigned long ulCurrentPosition,
                      const void *pData,
                      unsigned long ulDataSize,
                      unsigned long ulUserData);


int xmain(int argc, char *argv)
{
    int nRet;
    // R[obN֐Zbg
    Unzip_setCallback(funcUnzipCallback);

    nRet = Unzip_execExtract("ms0:/PSP/GAME/HogeHoge/Foo.zip", 0);

    return 0;
}


int funcUnzipCallback(int nCallbackId,
                      unsigned long ulExtractSize,
		      unsigned long ulCurrentPosition,
                      const void *pData,
                      unsigned long ulDataSize,
                      unsigned long ulUserData)
{
    const char *pszFileName;
    const unsigned char *pbData;

    switch(nCallbackId) {
    case UZCB_FIND_FILE:
	pszFileName = (const char *)pData;
	/*
         ŁAt@C̊gqȂ肵āA邩ǂ𔻒f
        */
        break;
    case UZCB_EXTRACT_PROGRESS:
	pbData = (const unsigned char *)pData;
	/*
         ŁAۂɓWJꂽf[^B
        */
        break;
    default: // unknown...
	/*
         ̃o[Wł͂ɂ͐΂ɂȂ(Ǝv)AFAILSAFÊ߂ɉ
         fobOR[hĂƗǂc
        */
        break; 
    }
    return 1;
}

LR[h͓KɏR[hȂ̂ŃRpCʂȂ܂B^-^;
܂ŁA "ȊŎg" ƂQlR[hłB

ۂɎgpĂ̂RIN܂Bmenu.c̒ɃR[ĥŎ̎Ql
ɂĉBN@ȂRINMakefileQlɂĉB
