From e52829994b013a371403eaac180c3a06bb58a31f Mon Sep 17 00:00:00 2001 From: Daryl Borth Date: Wed, 1 Aug 2018 12:41:41 -0600 Subject: [PATCH] remove wiiupc since libogc wiiuse now supports WiiU Pro controller. remove update check completely. compatibility fixes for newer devkitppc. --- Makefile | 4 +- Makefile.gc | 7 +- Makefile.wii | 15 +- source/gui/gui.h | 13 +- source/gui/gui_button.cpp | 24 +- source/gui/gui_trigger.cpp | 39 +- source/gui/gui_window.cpp | 2 +- source/images/icon_settings_wiiupro.png | Bin 10729 -> 0 bytes source/input.cpp | 70 +- source/input.h | 1 - source/inputmario.cpp | 2 +- source/menu.cpp | 111 +- source/networkop.cpp | 145 +- source/networkop.h | 6 - source/preferences.cpp | 11 +- source/utils/http.cpp | 411 ------ source/utils/http.h | 25 - source/utils/pngu.c | 1 + source/utils/unzip/crypt.h | 132 -- source/utils/unzip/ioapi.c | 177 --- source/utils/unzip/ioapi.h | 75 -- source/utils/unzip/miniunz.cpp | 324 ----- source/utils/unzip/miniunz.h | 9 - source/utils/unzip/unzip.c | 1598 ----------------------- source/utils/unzip/unzip.h | 354 ----- source/vbagx.cpp | 7 +- source/vbasupport.cpp | 1 - 27 files changed, 64 insertions(+), 3500 deletions(-) delete mode 100644 source/images/icon_settings_wiiupro.png delete mode 100644 source/utils/http.cpp delete mode 100644 source/utils/http.h delete mode 100644 source/utils/unzip/crypt.h delete mode 100644 source/utils/unzip/ioapi.c delete mode 100644 source/utils/unzip/ioapi.h delete mode 100644 source/utils/unzip/miniunz.cpp delete mode 100644 source/utils/unzip/miniunz.h delete mode 100644 source/utils/unzip/unzip.c delete mode 100644 source/utils/unzip/unzip.h diff --git a/Makefile b/Makefile index 14088f7..fd15adb 100644 --- a/Makefile +++ b/Makefile @@ -1,8 +1,8 @@ .PHONY = all wii gc wii-clean gc-clean wii-run gc-run -all: wii +all: wii gc -clean: wii-clean +clean: wii-clean gc-clean run: wii-run diff --git a/Makefile.gc b/Makefile.gc index 942d2e2..6291db7 100644 --- a/Makefile.gc +++ b/Makefile.gc @@ -35,8 +35,11 @@ CFLAGS = -g -O3 -Wall $(MACHDEP) $(INCLUDE) \ -DSDL -DNO_PNG -DHAVE_ZUTIL_H \ -D_SZ_ONE_DIRECTORY -D_LZMA_IN_CB -D_LZMA_OUT_READ \ -fomit-frame-pointer \ - -Wno-unused-parameter -Wno-strict-aliasing -Wno-parentheses -CXXFLAGS = $(CFLAGS) + -Wno-unused-parameter -Wno-strict-aliasing -Wno-parentheses -Wno-format -Wno-stringop-truncation \ + -Wno-maybe-uninitialized -Wno-unused-but-set-variable -Wno-stringop-overflow -Wno-narrowing \ + -Wno-misleading-indentation -Wno-unused-function -Wno-sign-compare -Wno-unused-variable \ + -Wno-memset-elt-size -Wno-attributes -Wno-tautological-compare +CXXFLAGS = $(CFLAGS) -Wno-reorder LDFLAGS = -g $(MACHDEP) -Wl,-Map,$(notdir $@).map #--------------------------------------------------------------------------------- diff --git a/Makefile.wii b/Makefile.wii index 77ea534..d116337 100644 --- a/Makefile.wii +++ b/Makefile.wii @@ -19,7 +19,7 @@ TARGET := vbagx_wii TARGETDIR := executables BUILD := build_wii SOURCES := source source/images source/sounds source/fonts source/lang \ - source/gui source/utils source/utils/sz source/utils/unzip \ + source/gui source/utils source/utils/sz \ source/vba source/vba/apu source/vba/common \ source/vba/gb source/vba/gba source/goomba source/goomba/minilzo-2.06 INCLUDES := source source/vba @@ -28,21 +28,24 @@ INCLUDES := source source/vba # options for code generation #--------------------------------------------------------------------------------- -CFLAGS = -g -O3 -Wall $(MACHDEP) $(INCLUDE) -DNO_SOUND \ +CFLAGS = -g -O3 -Wall $(MACHDEP) $(INCLUDE) \ -DWORDS_BIGENDIAN -DNO_LINK -DNO_FEX \ -DTILED_RENDERING \ -DC_CORE -D__ppc__ -D__POWERPC__ -DFINAL_VERSION \ -DSDL -DNO_PNG -DHAVE_ZUTIL_H \ -D_SZ_ONE_DIRECTORY -D_LZMA_IN_CB -D_LZMA_OUT_READ \ -fomit-frame-pointer \ - -Wno-unused-parameter -Wno-strict-aliasing -Wno-parentheses -CXXFLAGS = $(CFLAGS) -LDFLAGS = -g $(MACHDEP) -Wl,-Map,$(notdir $@).map,-wrap,wiiuse_register + -Wno-unused-parameter -Wno-strict-aliasing -Wno-parentheses -Wno-format -Wno-stringop-truncation \ + -Wno-maybe-uninitialized -Wno-unused-but-set-variable -Wno-stringop-overflow -Wno-narrowing \ + -Wno-misleading-indentation -Wno-unused-function -Wno-sign-compare -Wno-unused-variable \ + -Wno-memset-elt-size -Wno-attributes -Wno-tautological-compare +CXXFLAGS = $(CFLAGS) -Wno-reorder +LDFLAGS = -g $(MACHDEP) -Wl,-Map,$(notdir $@).map #--------------------------------------------------------------------------------- # any extra libraries we wish to link with #--------------------------------------------------------------------------------- -LIBS := -ldi -liso9660 -lpng -lmxml -lfat -lwiiuse -lwupc -lz -lbte -lasnd -logc \ +LIBS := -ldi -liso9660 -lpng -lmxml -lfat -lwiiuse -lz -lbte -lasnd -logc \ -lvorbisidec -lfreetype -ltinysmb #--------------------------------------------------------------------------------- diff --git a/source/gui/gui.h b/source/gui/gui.h index 19593bc..a064c12 100644 --- a/source/gui/gui.h +++ b/source/gui/gui.h @@ -123,16 +123,6 @@ typedef struct _paddata { u8 triggerR; } PADData; -typedef struct _wupcfulldata { - u32 btns_d; - u32 btns_u; - u32 btns_h; - s16 stickX; - s16 stickY; - s16 substickX; - s16 substickY; -} WUPCFullData; - #define EFFECT_SLIDE_TOP 1 #define EFFECT_SLIDE_BOTTOM 2 #define EFFECT_SLIDE_RIGHT 4 @@ -236,7 +226,6 @@ class GuiTrigger WPADData wpaddata; //!< Wii controller trigger data PADData pad; //!< GameCube controller trigger data - WUPCFullData wupcdata; //!< WiiU Pro controller trigger data WPADData * wpad; //!< Wii controller trigger s32 chan; //!< Trigger controller channel (0-3, -1 for all) u8 type; //!< trigger type (TRIGGER_SIMPLE, TRIGGER_HELD, TRIGGER_BUTTON_ONLY, TRIGGER_BUTTON_ONLY_IN_FOCUS) @@ -671,7 +660,7 @@ class GuiText : public GuiElement //!\param s Font size //!\param h Text alignment (horizontal) //!\param v Text alignment (vertical) - void SetPresets(int sz, GXColor c, int w, u16 s, int h, int v); + static void SetPresets(int sz, GXColor c, int w, u16 s, int h, int v); //!Sets the font size //!\param s Font size void SetFontSize(int s); diff --git a/source/gui/gui_button.cpp b/source/gui/gui_button.cpp index 2cd6f67..020e80b 100644 --- a/source/gui/gui_button.cpp +++ b/source/gui/gui_button.cpp @@ -254,7 +254,7 @@ void GuiButton::Update(GuiTrigger * t) // button triggers if(this->IsClickable()) { - s32 wm_btns, wm_btns_trig, cc_btns, cc_btns_trig, wupc_btns, wupc_btns_trig; + s32 wm_btns, wm_btns_trig, cc_btns, cc_btns_trig; for(int i=0; i<3; i++) { if(trigger[i] && (trigger[i]->chan == -1 || trigger[i]->chan == t->chan)) @@ -267,16 +267,12 @@ void GuiButton::Update(GuiTrigger * t) cc_btns = t->wpad->btns_d >> 16; cc_btns_trig = trigger[i]->wpad->btns_d >> 16; - // lower 16 bits only (WiiU Pro controller) - wupc_btns = t->wupcdata.btns_d >> 16; - wupc_btns_trig = trigger[i]->wupcdata.btns_d >> 16; - if( (t->wpad->btns_d > 0 && (wm_btns == wm_btns_trig || (cc_btns == cc_btns_trig && t->wpad->exp.type == EXP_CLASSIC))) || - (t->pad.btns_d == trigger[i]->pad.btns_d && t->pad.btns_d > 0) || - (wupc_btns == wupc_btns_trig && wupc_btns_trig > 0)) + (t->pad.btns_d == trigger[i]->pad.btns_d && t->pad.btns_d > 0)) + { if(t->chan == stateChan || stateChan == -1) { @@ -308,7 +304,7 @@ void GuiButton::Update(GuiTrigger * t) if(this->IsHoldable()) { bool held = false; - s32 wm_btns, wm_btns_h, wm_btns_trig, cc_btns, cc_btns_h, cc_btns_trig, wupc_btns, wupc_btns_h, wupc_btns_trig; + s32 wm_btns, wm_btns_h, wm_btns_trig, cc_btns, cc_btns_h, cc_btns_trig; for(int i=0; i<3; i++) { @@ -324,17 +320,11 @@ void GuiButton::Update(GuiTrigger * t) cc_btns_h = t->wpad->btns_h >> 16; cc_btns_trig = trigger[i]->wpad->btns_h >> 16; - // lower 16 bits only (WiiU Pro controller) - wupc_btns = t->wpad->btns_d >> 16; - wupc_btns_h = t->wpad->btns_h >> 16; - wupc_btns_trig = trigger[i]->wpad->btns_h >> 16; - if( (t->wpad->btns_d > 0 && (wm_btns == wm_btns_trig || (cc_btns == cc_btns_trig && t->wpad->exp.type == EXP_CLASSIC))) || - (t->pad.btns_d == trigger[i]->pad.btns_h && t->pad.btns_d > 0) || - (wupc_btns == wupc_btns_trig && wupc_btns > 0)) + (t->pad.btns_d == trigger[i]->pad.btns_h && t->pad.btns_d > 0)) { if(trigger[i]->type == TRIGGER_HELD && state == STATE_SELECTED && (t->chan == stateChan || stateChan == -1)) @@ -345,8 +335,8 @@ void GuiButton::Update(GuiTrigger * t) (t->wpad->btns_h > 0 && (wm_btns_h == wm_btns_trig || (cc_btns_h == cc_btns_trig && t->wpad->exp.type == EXP_CLASSIC))) || - (t->pad.btns_h == trigger[i]->pad.btns_h && t->pad.btns_h > 0) || - (wupc_btns_h == wupc_btns_trig && wupc_btns_h > 0)) + (t->pad.btns_h == trigger[i]->pad.btns_h && t->pad.btns_h > 0)) + { if(trigger[i]->type == TRIGGER_HELD) held = true; diff --git a/source/gui/gui_trigger.cpp b/source/gui/gui_trigger.cpp index fcf8072..06a4165 100644 --- a/source/gui/gui_trigger.cpp +++ b/source/gui/gui_trigger.cpp @@ -22,7 +22,6 @@ static u32 delay[4]; GuiTrigger::GuiTrigger() { chan = -1; - memset(&wupcdata, 0, sizeof(WUPCFullData)); memset(&wpaddata, 0, sizeof(WPADData)); memset(&pad, 0, sizeof(PADData)); wpad = &wpaddata; @@ -44,7 +43,6 @@ void GuiTrigger::SetSimpleTrigger(s32 ch, u32 wiibtns, u16 gcbtns) { type = TRIGGER_SIMPLE; chan = ch; - wupcdata.btns_d = wiibtns; wpaddata.btns_d = wiibtns; pad.btns_d = gcbtns; } @@ -58,7 +56,6 @@ void GuiTrigger::SetHeldTrigger(s32 ch, u32 wiibtns, u16 gcbtns) { type = TRIGGER_HELD; chan = ch; - wupcdata.btns_h = wiibtns; wpaddata.btns_h = wiibtns; pad.btns_h = gcbtns; } @@ -71,7 +68,6 @@ void GuiTrigger::SetButtonOnlyTrigger(s32 ch, u32 wiibtns, u16 gcbtns) { type = TRIGGER_BUTTON_ONLY; chan = ch; - wupcdata.btns_d = wiibtns; wpaddata.btns_d = wiibtns; pad.btns_d = gcbtns; } @@ -85,7 +81,6 @@ void GuiTrigger::SetButtonOnlyInFocusTrigger(s32 ch, u32 wiibtns, u16 gcbtns) { type = TRIGGER_BUTTON_ONLY_IN_FOCUS; chan = ch; - wupcdata.btns_d = wiibtns; wpaddata.btns_d = wiibtns; pad.btns_d = gcbtns; } @@ -163,15 +158,12 @@ bool GuiTrigger::Left() u32 wiibtn = GCSettings.WiimoteOrientation ? WPAD_BUTTON_UP : WPAD_BUTTON_LEFT; if((wpad->btns_d | wpad->btns_h) & (wiibtn | WPAD_CLASSIC_BUTTON_LEFT) - || (wupcdata.btns_d | wupcdata.btns_h) & (wiibtn | WPAD_CLASSIC_BUTTON_LEFT) || (pad.btns_d | pad.btns_h) & PAD_BUTTON_LEFT || pad.stickX < -PADCAL - || WPAD_StickX(0) < -PADCAL - || wupcdata.stickX < -WUPCCAL) + || WPAD_StickX(0) < -PADCAL) { - if((wpad->btns_d & (wiibtn | WPAD_CLASSIC_BUTTON_LEFT)) - || (wupcdata.btns_d & (wiibtn | WPAD_CLASSIC_BUTTON_LEFT)) - || pad.btns_d & PAD_BUTTON_LEFT) + if(wpad->btns_d & (wiibtn | WPAD_CLASSIC_BUTTON_LEFT) + || pad.btns_d & PAD_BUTTON_LEFT) { prev[chan] = gettime(); delay[chan] = SCROLL_DELAY_INITIAL; // reset scroll delay @@ -199,14 +191,11 @@ bool GuiTrigger::Right() u32 wiibtn = GCSettings.WiimoteOrientation ? WPAD_BUTTON_DOWN : WPAD_BUTTON_RIGHT; if((wpad->btns_d | wpad->btns_h) & (wiibtn | WPAD_CLASSIC_BUTTON_RIGHT) - || ((wupcdata.btns_d | wupcdata.btns_h) & (wiibtn | WPAD_CLASSIC_BUTTON_RIGHT)) || (pad.btns_d | pad.btns_h) & PAD_BUTTON_RIGHT || pad.stickX > PADCAL - || WPAD_StickX(0) > PADCAL - || wupcdata.stickX > WUPCCAL) + || WPAD_StickX(0) > PADCAL) { - if((wpad->btns_d & (wiibtn | WPAD_CLASSIC_BUTTON_RIGHT)) - || (wupcdata.btns_d & (wiibtn | WPAD_CLASSIC_BUTTON_RIGHT)) + if(wpad->btns_d & (wiibtn | WPAD_CLASSIC_BUTTON_RIGHT) || pad.btns_d & PAD_BUTTON_RIGHT) { prev[chan] = gettime(); @@ -234,15 +223,12 @@ bool GuiTrigger::Up() { u32 wiibtn = GCSettings.WiimoteOrientation ? WPAD_BUTTON_RIGHT : WPAD_BUTTON_UP; - if(((wpad->btns_d | wpad->btns_h) & (wiibtn | WPAD_CLASSIC_BUTTON_UP)) - || ((wupcdata.btns_d | wupcdata.btns_h) & (wiibtn | WPAD_CLASSIC_BUTTON_UP)) + if((wpad->btns_d | wpad->btns_h) & (wiibtn | WPAD_CLASSIC_BUTTON_UP) || (pad.btns_d | pad.btns_h) & PAD_BUTTON_UP || pad.stickY > PADCAL - || WPAD_StickY(0) > PADCAL - || wupcdata.stickY > WUPCCAL) + || WPAD_StickY(0) > PADCAL) { - if((wpad->btns_d & (wiibtn | WPAD_CLASSIC_BUTTON_UP)) - || (wupcdata.btns_d & (wiibtn | WPAD_CLASSIC_BUTTON_UP)) + if(wpad->btns_d & (wiibtn | WPAD_CLASSIC_BUTTON_UP) || pad.btns_d & PAD_BUTTON_UP) { prev[chan] = gettime(); @@ -270,15 +256,12 @@ bool GuiTrigger::Down() { u32 wiibtn = GCSettings.WiimoteOrientation ? WPAD_BUTTON_LEFT : WPAD_BUTTON_DOWN; - if(((wpad->btns_d | wpad->btns_h) & (wiibtn | WPAD_CLASSIC_BUTTON_DOWN)) - || ((wupcdata.btns_d | wupcdata.btns_h) & (wiibtn | WPAD_CLASSIC_BUTTON_DOWN)) + if((wpad->btns_d | wpad->btns_h) & (wiibtn | WPAD_CLASSIC_BUTTON_DOWN) || (pad.btns_d | pad.btns_h) & PAD_BUTTON_DOWN || pad.stickY < -PADCAL - || WPAD_StickY(0) < -PADCAL - || wupcdata.stickY < -WUPCCAL) + || WPAD_StickY(0) < -PADCAL) { - if((wpad->btns_d & (wiibtn | WPAD_CLASSIC_BUTTON_DOWN)) - || wupcdata.btns_d & (wiibtn | WPAD_CLASSIC_BUTTON_DOWN) + if(wpad->btns_d & (wiibtn | WPAD_CLASSIC_BUTTON_DOWN) || pad.btns_d & PAD_BUTTON_DOWN) { prev[chan] = gettime(); diff --git a/source/gui/gui_window.cpp b/source/gui/gui_window.cpp index 636d8ba..8c067b2 100644 --- a/source/gui/gui_window.cpp +++ b/source/gui/gui_window.cpp @@ -229,7 +229,7 @@ void GuiWindow::ToggleFocus(GuiTrigger * t) } // change focus else if((t->wpad->btns_d & (WPAD_BUTTON_1 | WPAD_BUTTON_B | WPAD_CLASSIC_BUTTON_B)) - || (t->pad.btns_d & PAD_BUTTON_B) || (t->wupcdata.btns_d & WPAD_CLASSIC_BUTTON_B)) + || (t->pad.btns_d & PAD_BUTTON_B)) { for (i = found; i < elemSize; ++i) { diff --git a/source/images/icon_settings_wiiupro.png b/source/images/icon_settings_wiiupro.png deleted file mode 100644 index 69eeeeda0f8b8d4461ca059983fa46c0f7132731..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10729 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 X?64N+9saMG6JV%oa=%R5KK%ayBr9>- diff --git a/source/input.cpp b/source/input.cpp index 027a3df..e3dc389 100644 --- a/source/input.cpp +++ b/source/input.cpp @@ -16,7 +16,6 @@ #include #include #include -#include #include #include "vbagx.h" @@ -139,7 +138,6 @@ void UpdatePads() { #ifdef HW_RVL - WUPC_UpdateButtonStats(); WPAD_ScanPads(); #endif @@ -156,15 +154,6 @@ UpdatePads() userInput[i].pad.substickY = PAD_SubStickY(i); userInput[i].pad.triggerL = PAD_TriggerL(i); userInput[i].pad.triggerR = PAD_TriggerR(i); - #ifdef HW_RVL - userInput[i].wupcdata.btns_d = WUPC_ButtonsDown(i); - userInput[i].wupcdata.btns_u = WUPC_ButtonsUp(i); - userInput[i].wupcdata.btns_h = WUPC_ButtonsHeld(i); - userInput[i].wupcdata.stickX = WUPC_lStickX(i); - userInput[i].wupcdata.stickY = WUPC_lStickY(i); - userInput[i].wupcdata.substickX = WUPC_rStickX(i); - userInput[i].wupcdata.substickY = WUPC_rStickY(i); - #endif --i; } while(i >= 0); } @@ -322,9 +311,6 @@ u32 StandardMovement(unsigned short chan) #ifdef HW_RVL s8 wm_ax = userInput[0].WPAD_StickX(0); s8 wm_ay = userInput[0].WPAD_StickY(0); - - s16 wupc_ax = userInput[chan].wupcdata.stickX; - s16 wupc_ay = userInput[chan].wupcdata.stickY; #endif /*** @@ -361,19 +347,6 @@ u32 StandardMovement(unsigned short chan) else if(sin(angle) < -THRES) J |= VBA_DOWN; } - /* WiiU Pro Controller */ - if (wupc_ax * wupc_ax + wupc_ay * wupc_ay > WUPCCAL * WUPCCAL) - { - angle = atan2(wupc_ay, wupc_ax); - if(cos(angle) > THRES) - J |= VBA_RIGHT; - else if(cos(angle) < -THRES) - J |= VBA_LEFT; - if(sin(angle) > THRES) - J |= VBA_UP; - else if(sin(angle) < -THRES) - J |= VBA_DOWN; - } #endif return J; } @@ -406,16 +379,6 @@ u32 StandardDPad(unsigned short pad) if (wp & WPAD_CLASSIC_BUTTON_RIGHT) J |= VBA_RIGHT; } - /* WiiU Pro Controller */ - u32 wupcp = userInput[pad].wupcdata.btns_h; - if (wupcp & WPAD_CLASSIC_BUTTON_UP) - J |= VBA_UP; - if (wupcp & WPAD_CLASSIC_BUTTON_DOWN) - J |= VBA_DOWN; - if (wupcp & WPAD_CLASSIC_BUTTON_LEFT) - J |= VBA_LEFT; - if (wupcp & WPAD_CLASSIC_BUTTON_RIGHT) - J |= VBA_RIGHT; #endif @@ -474,8 +437,7 @@ u32 StandardClassic(unsigned short pad) { u32 J = 0; #ifdef HW_RVL - u32 wp = userInput[pad].wpad->btns_h - | userInput[pad].wupcdata.btns_h; /* just add pro controller */ + u32 wp = userInput[pad].wpad->btns_h; if (wp & WPAD_CLASSIC_BUTTON_RIGHT) J |= VBA_RIGHT; @@ -574,14 +536,6 @@ u32 DecodeClassic(unsigned short pad) #ifdef HW_RVL WPADData * wp = WPAD_Data(pad); u32 wpad_btns_h = wp->btns_h; - - /* WiiU Pro Controller */ - u32 wupc_btns_h = userInput[pad].wupcdata.btns_h; - for (u32 i = 0; i < MAXJP; ++i) - { - if(wupc_btns_h & btnmap[CTRLR_CLASSIC][i]) - J |= vbapadmap[i]; - } if(wp->exp.type == WPAD_EXP_CLASSIC){ for (u32 i = 0; i < MAXJP; ++i){ @@ -867,7 +821,7 @@ static u32 DecodeJoy(unsigned short pad) u32 J = StandardMovement(pad); // Turbo feature - if(userInput[0].pad.substickX > 70 || userInput[0].WPAD_Stick(1,0) > 70 || userInput[0].wupcdata.substickX > 560) + if(userInput[0].pad.substickX > 70 || userInput[0].WPAD_Stick(1,0) > 70) J |= VBA_SPEED; // Report pressed buttons (gamepads) @@ -923,36 +877,24 @@ static u32 DecodeJoy(unsigned short pad) } } -#ifdef HW_RVL - /* WiiU Pro Controller */ - u32 wupc_btns_h = userInput[pad].wupcdata.btns_h; - for (u32 i =0; i < MAXJP; ++i) - { - if(wupc_btns_h & btnmap[CTRLR_CLASSIC][i]) - J |= vbapadmap[i]; - } -#endif - return J; } bool MenuRequested() { -for(int i=0; i<4; i++) - { + for(int i=0; i<4; i++) { if ( (userInput[i].pad.substickX < -70) #ifdef HW_RVL || (userInput[i].wpad->btns_h & WPAD_BUTTON_HOME) || - (userInput[i].wpad->btns_h & WPAD_CLASSIC_BUTTON_HOME) || - (userInput[i].wupcdata.btns_h & WPAD_CLASSIC_BUTTON_HOME) + (userInput[i].wpad->btns_h & WPAD_CLASSIC_BUTTON_HOME) #endif ) { return true; } - return false; -} + } + return false; } u32 GetJoy(int pad) diff --git a/source/input.h b/source/input.h index f820d21..5fc20cd 100644 --- a/source/input.h +++ b/source/input.h @@ -16,7 +16,6 @@ #define PI 3.14159265f #define PADCAL 50 -#define WUPCCAL 400 #define MAXJP 10 // # of mappable controller buttons #define VBA_BUTTON_A 1 diff --git a/source/inputmario.cpp b/source/inputmario.cpp index cb7f51e..7ac2161 100644 --- a/source/inputmario.cpp +++ b/source/inputmario.cpp @@ -874,7 +874,7 @@ u32 UniversalGravitationInput(unsigned short pad) { J |= VBA_DOWN; if (wp->btns_h & WPAD_CLASSIC_BUTTON_FULL_R) J |= VBA_UP; - if (WPAD_CLASSIC_BUTTON_ZR) + if (wp->btns_h & WPAD_CLASSIC_BUTTON_ZR) J |= VBA_SPEED; } else { J |= StandardSideways(pad); diff --git a/source/menu.cpp b/source/menu.cpp index 36215e0..ec6cfe5 100644 --- a/source/menu.cpp +++ b/source/menu.cpp @@ -18,7 +18,6 @@ #ifdef HW_RVL #include #include -#include #endif #include "vbagx.h" @@ -69,7 +68,6 @@ static GuiText * settingText = NULL; static GuiText * settingText2 = NULL; static int lastMenu = MENU_NONE; static int mapMenuCtrl = 0; -static int wiiuproCtrl = 0; static lwp_t guithread = LWP_THREAD_NULL; static lwp_t progressthread = LWP_THREAD_NULL; @@ -252,27 +250,6 @@ WindowPrompt(const char *title, const char *msg, const char *btn1Label, const ch return WindowPrompt(title, msg, btn1Label, btn2Label, false); } -#ifdef HW_RVL -/**************************************************************************** - * EmulatorUpdate - * - * Prompts for confirmation, and downloads/installs updates - ***************************************************************************/ -static void * -EmulatorUpdate (void *arg) -{ - bool installUpdate = WindowPrompt( - "Update Available", - "An update is available!", - "Update now", - "Update later"); - if(installUpdate) - if(DownloadUpdate()) - ExitRequested = 1; - return NULL; -} -#endif - /**************************************************************************** * UpdateGUI * @@ -313,15 +290,6 @@ UpdateGUI (void *arg) mainWindow->Update(&userInput[1]); mainWindow->Update(&userInput[0]); - #ifdef HW_RVL - if(updateFound) - { - updateFound = false; - if(!loadingFile) - LWP_CreateThread (&updatethread, EmulatorUpdate, NULL, NULL, 0, 70); - } - #endif - if(ExitRequested || ShutdownRequested) { for(i = 0; i <= 255; i += 15) @@ -776,8 +744,7 @@ static void WindowCredits(void * ptr) txt[i] = new GuiText("Official Site: https://github.com/dborth/vbagx", 20, (GXColor){0, 0, 0, 255}); txt[i]->SetAlignment(ALIGN_CENTRE, ALIGN_TOP); txt[i]->SetPosition(0,y); i++; y+=32; - txt[i]->SetPresets(20, (GXColor){0, 0, 0, 255}, 0, - FTGX_JUSTIFY_LEFT | FTGX_ALIGN_TOP, ALIGN_LEFT, ALIGN_TOP); + GuiText::SetPresets(20, (GXColor){0, 0, 0, 255}, 0, FTGX_JUSTIFY_LEFT | FTGX_ALIGN_TOP, ALIGN_LEFT, ALIGN_TOP); txt[i] = new GuiText("Main developer"); txt[i]->SetPosition(40,y); i++; @@ -822,8 +789,7 @@ static void WindowCredits(void * ptr) txt[i] = new GuiText("Armin Tamzarian"); txt[i]->SetPosition(250,y); i++; y+=32; - txt[i]->SetPresets(18, (GXColor){0, 0, 0, 255}, 0, - FTGX_JUSTIFY_CENTER | FTGX_ALIGN_TOP, ALIGN_CENTRE, ALIGN_TOP); + GuiText::SetPresets(18, (GXColor){0, 0, 0, 255}, 0, FTGX_JUSTIFY_CENTER | FTGX_ALIGN_TOP, ALIGN_CENTRE, ALIGN_TOP); txt[i] = new GuiText("This software is open source and may be copied,"); txt[i]->SetPosition(0,y); i++; y+=20; @@ -869,10 +835,10 @@ static void WindowCredits(void * ptr) Menu_Render(); - if((userInput[0].wpad->btns_d || userInput[0].pad.btns_d || userInput[0].wupcdata.btns_d) || - (userInput[1].wpad->btns_d || userInput[1].pad.btns_d || userInput[1].wupcdata.btns_d) || - (userInput[2].wpad->btns_d || userInput[2].pad.btns_d || userInput[2].wupcdata.btns_d) || - (userInput[3].wpad->btns_d || userInput[3].pad.btns_d || userInput[3].wupcdata.btns_d)) + if((userInput[0].wpad->btns_d || userInput[0].pad.btns_d) || + (userInput[1].wpad->btns_d || userInput[1].pad.btns_d) || + (userInput[2].wpad->btns_d || userInput[2].pad.btns_d) || + (userInput[3].wpad->btns_d || userInput[3].pad.btns_d)) { exit = true; } @@ -882,7 +848,6 @@ static void WindowCredits(void * ptr) // clear buttons pressed for(i=0; i < 4; i++) { - userInput[i].wupcdata.btns_d = 0; userInput[i].wpad->btns_d = 0; userInput[i].pad.btns_d = 0; } @@ -1426,17 +1391,8 @@ static int MenuGame() } else { - struct WUPCData *data = WUPC_Data(i); - if(data != NULL) - { - newStatus = true; - newLevel = data->battery; - } - else - { - newStatus = false; - newLevel = 0; - } + newStatus = false; + newLevel = 0; } if(status[i] != newStatus || level[i] != newLevel) @@ -2126,7 +2082,6 @@ static int MenuSettingsMappings() GuiImageData iconClassic(icon_settings_classic_png); GuiImageData iconGamecube(icon_settings_gamecube_png); GuiImageData iconNunchuk(icon_settings_nunchuk_png); - GuiImageData iconWiiupro(icon_settings_wiiupro_png); GuiText gamecubeBtnTxt("GameCube Controller", 22, (GXColor){0, 0, 0, 255}); gamecubeBtnTxt.SetWrap(true, btnLargeOutline.GetWidth()-30); @@ -2181,24 +2136,6 @@ static int MenuSettingsMappings() classicBtn.SetTrigger(trig2); classicBtn.SetEffectGrow(); - GuiText wiiuproBtnTxt("Wii U Pro Controller", 22, (GXColor){0, 0, 0, 255}); - wiiuproBtnTxt.SetWrap(true, btnLargeOutline.GetWidth()-20); - GuiImage wiiuproBtnImg(&btnLargeOutline); - GuiImage wiiuproBtnImgOver(&btnLargeOutlineOver); - GuiImage wiiuproBtnIcon(&iconWiiupro); - GuiButton wiiuproBtn(btnLargeOutline.GetWidth(), btnLargeOutline.GetHeight()); - wiiuproBtn.SetAlignment(ALIGN_CENTRE, ALIGN_TOP); - wiiuproBtn.SetPosition(0, 250); - wiiuproBtn.SetLabel(&wiiuproBtnTxt); - wiiuproBtn.SetImage(&wiiuproBtnImg); - wiiuproBtn.SetImageOver(&wiiuproBtnImgOver); - wiiuproBtn.SetIcon(&wiiuproBtnIcon); - wiiuproBtn.SetSoundOver(&btnSoundOver); - wiiuproBtn.SetSoundClick(&btnSoundClick); - wiiuproBtn.SetTrigger(trigA); - wiiuproBtn.SetTrigger(trig2); - wiiuproBtn.SetEffectGrow(); - GuiText nunchukBtnTxt1("Wiimote", 22, (GXColor){0, 0, 0, 255}); GuiText nunchukBtnTxt2("&", 18, (GXColor){0, 0, 0, 255}); GuiText nunchukBtnTxt3("Nunchuk", 22, (GXColor){0, 0, 0, 255}); @@ -2246,7 +2183,6 @@ static int MenuSettingsMappings() w.Append(&wiimoteBtn); w.Append(&nunchukBtn); w.Append(&classicBtn); - w.Append(&wiiuproBtn); #endif w.Append(&backBtn); @@ -2270,13 +2206,6 @@ static int MenuSettingsMappings() } else if(classicBtn.GetState() == STATE_CLICKED) { - wiiuproCtrl = 0; - menu = MENU_GAMESETTINGS_MAPPINGS_MAP; - mapMenuCtrl = CTRLR_CLASSIC; - } - else if(wiiuproBtn.GetState() == STATE_CLICKED) - { - wiiuproCtrl = 1; menu = MENU_GAMESETTINGS_MAPPINGS_MAP; mapMenuCtrl = CTRLR_CLASSIC; } @@ -2331,14 +2260,7 @@ ButtonMappingWindow() sprintf(msg, "Press any button on the Wiimote now. Press Home to clear the existing mapping."); break; case CTRLR_CLASSIC: - if(wiiuproCtrl == 1) - { - sprintf(msg, "Press any button on the Wii U Pro Controller now. Press Home to clear the existing mapping."); - } - else - { - sprintf(msg, "Press any button on the Classic Controller now. Press Home to clear the existing mapping."); - } + sprintf(msg, "Press any button on the Classic Controller now. Press Home to clear the existing mapping."); break; case CTRLR_NUNCHUK: sprintf(msg, "Press any button on the Wiimote or Nunchuk now. Press Home to clear the existing mapping."); @@ -2407,8 +2329,6 @@ ButtonMappingWindow() break; } } - if(pressed == 0) - pressed = userInput[0].wupcdata.btns_d; } } @@ -2438,14 +2358,7 @@ static int MenuSettingsMappingsMap() titleTxt.SetAlignment(ALIGN_LEFT, ALIGN_TOP); titleTxt.SetPosition(50,30); - if(wiiuproCtrl == 1) - { - sprintf(menuSubtitle, "%s", "Wii U Pro Controller"); - } - else - { - sprintf(menuSubtitle, "%s", ctrlrName[mapMenuCtrl]); - } + sprintf(menuSubtitle, "%s", ctrlrName[mapMenuCtrl]); GuiText subtitleTxt(menuSubtitle, 20, (GXColor){255, 255, 255, 255}); subtitleTxt.SetAlignment(ALIGN_LEFT, ALIGN_TOP); subtitleTxt.SetPosition(50,60); @@ -2575,7 +2488,7 @@ static int MenuSettingsMappingsMap() optionBrowser.TriggerUpdate(); } } - wiiuproCtrl = 0; + HaltGui(); mainWindow->Remove(&optionBrowser); mainWindow->Remove(&w); @@ -4721,6 +4634,8 @@ MainMenu (int menu) mainWindow->Append(bgBottomImg); mainWindow->Append(btnLogo); + printf("in main menu()\n"); + if(currentMenu == MENU_GAMESELECTION) ResumeGui(); diff --git a/source/networkop.cpp b/source/networkop.cpp index 36e70a7..4e4f95e 100644 --- a/source/networkop.cpp +++ b/source/networkop.cpp @@ -8,19 +8,16 @@ * Network and SMB support routines ****************************************************************************/ +#include #include #include #include #include -#include #include "vbagx.h" #include "menu.h" #include "fileop.h" #include "filebrowser.h" -#include "utils/http.h" -#include "utils/unzip/unzip.h" -#include "utils/unzip/miniunz.h" static bool networkInit = false; static bool networkShareInit = false; @@ -28,144 +25,6 @@ char wiiIP[16] = { 0 }; #ifdef HW_RVL static int netHalt = 0; -static bool updateChecked = false; // true if checked for app update -static char updateURL[128]; // URL of app update -bool updateFound = false; // true if an app update was found - -/**************************************************************************** - * UpdateCheck - * Checks for an update for the application - ***************************************************************************/ - -void UpdateCheck() -{ - // we only check for an update if we have internet + SD/USB - if(updateChecked || !networkInit) - return; - - if(!isMounted[DEVICE_SD] && !isMounted[DEVICE_USB]) - return; - - updateChecked = true; - u8 tmpbuffer[256]; - - if (http_request("http://www.wiimc.org/files/vbagx-update.xml", NULL, tmpbuffer, 256, SILENT) <= 0) - return; - - mxml_node_t *xml; - mxml_node_t *item; - - xml = mxmlLoadString(NULL, (char *)tmpbuffer, MXML_TEXT_CALLBACK); - - if(!xml) - return; - - // check settings version - item = mxmlFindElement(xml, xml, "app", "version", NULL, MXML_DESCEND); - if(item) // a version entry exists - { - const char * version = mxmlElementGetAttr(item, "version"); - - if(version && strlen(version) == 5) - { - int verMajor = version[0] - '0'; - int verMinor = version[2] - '0'; - int verPoint = version[4] - '0'; - int curMajor = APPVERSION[0] - '0'; - int curMinor = APPVERSION[2] - '0'; - int curPoint = APPVERSION[4] - '0'; - - // check that the versioning is valid and is a newer version - if((verMajor >= 0 && verMajor <= 9 && - verMinor >= 0 && verMinor <= 9 && - verPoint >= 0 && verPoint <= 9) && - (verMajor > curMajor || - (verMajor == curMajor && verMinor > curMinor) || - (verMajor == curMajor && verMinor == curMinor && verPoint > curPoint))) - { - item = mxmlFindElement(xml, xml, "file", NULL, NULL, MXML_DESCEND); - if(item) - { - const char * tmp = mxmlElementGetAttr(item, "url"); - if(tmp) - { - snprintf(updateURL, 128, "%s", tmp); - updateFound = true; - } - } - } - } - } - mxmlDelete(xml); -} - -static bool unzipArchive(char * zipfilepath, char * unzipfolderpath) -{ - unzFile uf = unzOpen(zipfilepath); - if (uf==NULL) - return false; - - if(chdir(unzipfolderpath)) // can't access dir - { - makedir(unzipfolderpath); // attempt to make dir - if(chdir(unzipfolderpath)) // still can't access dir - return false; - } - - extractZip(uf,0,1,0); - - unzCloseCurrentFile(uf); - return true; -} - -bool DownloadUpdate() -{ - bool result = false; - - if(updateURL[0] == 0 || appPath[0] == 0 || !ChangeInterface(appPath, NOTSILENT)) - { - ErrorPrompt("Update failed!"); - updateFound = false; // updating is finished (successful or not!) - return false; - } - - // stop checking if devices were removed/inserted - // since we're saving a file - HaltDeviceThread(); - - int device; - FindDevice(appPath, &device); - - char updateFile[50]; - sprintf(updateFile, "%s%s Update.zip", pathPrefix[device], APPNAME); - - FILE * hfile = fopen (updateFile, "wb"); - - if (hfile) - { - if(http_request(updateURL, hfile, NULL, (1024*1024*10), NOTSILENT) > 0) - { - fclose (hfile); - result = unzipArchive(updateFile, (char *)pathPrefix[device]); - } - else - { - fclose (hfile); - } - remove(updateFile); // delete update file - } - - // go back to checking if devices were inserted/removed - ResumeDeviceThread(); - - if(result) - InfoPrompt("Update successful!"); - else - ErrorPrompt("Update failed!"); - - updateFound = false; // updating is finished (successful or not!) - return result; -} /**************************************************************************** * InitializeNetwork @@ -313,7 +172,7 @@ bool InitializeNetwork(bool silent) break; } #else - networkInit = !(if_config(wiiIP, NULL, NULL, true, 10) < 0); + networkInit = !(if_config(wiiIP, NULL, NULL, true) < 0); #endif CancelAction(); diff --git a/source/networkop.h b/source/networkop.h index 534adf1..2ee5114 100644 --- a/source/networkop.h +++ b/source/networkop.h @@ -11,13 +11,7 @@ #ifndef _NETWORKOP_H_ #define _NETWORKOP_H_ -void UpdateCheck(); -bool DownloadUpdate(); -void StartNetworkThread(); -bool InitializeNetwork(bool silent); bool ConnectShare (bool silent); void CloseShare(); -extern bool updateFound; - #endif diff --git a/source/preferences.cpp b/source/preferences.cpp index 8f3d3b1..d6eb018 100644 --- a/source/preferences.cpp +++ b/source/preferences.cpp @@ -12,6 +12,7 @@ #include #include #include +#include #include #include @@ -169,7 +170,6 @@ preparePrefsData () createXMLSetting("LastFileLoaded", "Last File Loaded", GCSettings.LastFileLoaded); createXMLSetting("SaveFolder", "Save Folder", GCSettings.SaveFolder); createXMLSetting("AppendAuto", "Append Auto to .SAV Files", toStr(GCSettings.AppendAuto)); - //createXMLSetting("CheatFolder", "Cheats Folder", GCSettings.CheatFolder); createXMLSetting("ScreenshotsFolder", "Screenshots Folder", GCSettings.ScreenshotsFolder); createXMLSetting("BorderFolder", "SGB Borders Folder", GCSettings.BorderFolder); createXMLSetting("CoverFolder", "Covers Folder", GCSettings.CoverFolder); @@ -460,17 +460,12 @@ decodePrefsData () int verMajor = version[0] - '0'; int verMinor = version[2] - '0'; int verPoint = version[4] - '0'; - int curMajor = APPVERSION[0] - '0'; - int curMinor = APPVERSION[2] - '0'; - int curPoint = APPVERSION[4] - '0'; - // first we'll check that the versioning is valid - if(!(verMajor >= 0 && verMajor <= 9 && + // check that the versioning is valid + if(!(verMajor >= 2 && verMajor <= 9 && verMinor >= 0 && verMinor <= 9 && verPoint >= 0 && verPoint <= 9)) result = false; - else if(verMajor < 2) // less than version 2.0.0 - result = false; // reset settings (sorry, should update settings instead) else result = true; } diff --git a/source/utils/http.cpp b/source/utils/http.cpp deleted file mode 100644 index 9eea355..0000000 --- a/source/utils/http.cpp +++ /dev/null @@ -1,411 +0,0 @@ -/**************************************************************************** - * Visual Boy Advance GX - * - * Tantric December 2008 - * - * http.cpp - * - * HTTP operations - * Written by dhewg/bushing, modified by Tantric - ***************************************************************************/ - -#ifdef HW_RVL - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "menu.h" -#include "http.h" - -#define TCP_CONNECT_TIMEOUT 4000 // 4 secs to make a connection -#define TCP_SEND_SIZE (32 * 1024) -#define TCP_RECV_SIZE (32 * 1024) -#define TCP_BLOCK_RECV_TIMEOUT 4000 // 4 secs to receive -#define TCP_BLOCK_SEND_TIMEOUT 4000 // 4 secs to send -#define TCP_BLOCK_SIZE 1024 -#define HTTP_TIMEOUT 10000 // 10 secs to get an http response -#define IOS_O_NONBLOCK 0x04 - -static s32 tcp_socket(void) -{ - s32 s, res; - - s = net_socket(PF_INET, SOCK_STREAM, IPPROTO_IP); - if (s < 0) - return s; - - // Switch off Nagle with TCP_NODELAY - u32 nodelay = 1; - net_setsockopt(s,IPPROTO_TCP,TCP_NODELAY,&nodelay,sizeof(nodelay)); - - res = net_fcntl(s, F_GETFL, 0); - if (res < 0) - { - net_close(s); - return res; - } - - res = net_fcntl(s, F_SETFL, res | IOS_O_NONBLOCK); - if (res < 0) - { - net_close(s); - return res; - } - - return s; -} - -static s32 tcp_connect(char *host, const u16 port) -{ - struct hostent *hp; - struct sockaddr_in sa; - struct in_addr val; - s32 s, res; - u64 t1; - - s = tcp_socket(); - if (s < 0) - return s; - - memset(&sa, 0, sizeof(struct sockaddr_in)); - sa.sin_family= PF_INET; - sa.sin_len = sizeof(struct sockaddr_in); - sa.sin_port= htons(port); - - if(strlen(host) < 16 && inet_aton(host, &val)) - { - sa.sin_addr.s_addr = val.s_addr; - } - else - { - hp = net_gethostbyname (host); - if (!hp || !(hp->h_addrtype == PF_INET)) - return errno; - - memcpy((char *) &sa.sin_addr, hp->h_addr_list[0], hp->h_length); - } - - t1=ticks_to_secs(gettime()); - do - { - res = net_connect(s,(struct sockaddr*) &sa, sizeof (sa)); - if(ticks_to_secs(gettime())-t1 > TCP_CONNECT_TIMEOUT*1000) break; - usleep(500); - }while(res != -EISCONN); - if(res != -EISCONN) - { - net_close(s); - return -1; - } - - - return s; -} - -static int tcp_readln(const s32 s, char *buf, const u16 max_length) -{ - s32 res = -1; - s32 ret; - u64 start_time = gettime(); - u16 c = 0; - - while (c < max_length) - { - if (ticks_to_millisecs(diff_ticks(start_time, gettime())) > HTTP_TIMEOUT) - break; - - ret = net_read(s, &buf[c], 1); - - if (ret == -EAGAIN) - { - usleep(20 * 1000); - continue; - } - - if (ret <= 0) - break; - - if (c > 0 && buf[c - 1] == '\r' && buf[c] == '\n') - { - res = 0; - buf[c-1] = 0; - break; - } - c++; - start_time = gettime(); - usleep(100); - } - return res; -} - -static u32 tcp_read(const s32 s, u8 *buffer, const u32 length) -{ - char *p; - u32 left, block, received, step=0; - u64 t; - s32 res; - - p = (char *)buffer; - left = length; - received = 0; - - t = gettime(); - while (left) - { - if (ticks_to_millisecs(diff_ticks(t, gettime())) - > TCP_BLOCK_RECV_TIMEOUT) - { - break; - } - - block = left; - if (block > TCP_RECV_SIZE) - block = TCP_RECV_SIZE; - - res = net_read(s, p, block); - - if (res == -EAGAIN) - { - usleep(20 * 1000); - continue; - } - - if(res<=0) break; - - received += res; - left -= res; - p += res; - usleep(1000); - - if ((received / TCP_BLOCK_SIZE) > step) - { - t = gettime (); - step++; - } - } - return received; -} - -static u32 tcp_write(const s32 s, const u8 *buffer, const u32 length) -{ - const u8 *p; - u32 left, block, sent, step=0; - s64 t; - s32 res; - - p = buffer; - left = length; - sent = 0; - - t = gettime(); - while (left) - { - if (ticks_to_millisecs(diff_ticks(t, gettime())) - > TCP_BLOCK_SEND_TIMEOUT) - { - break; - } - - block = left; - if (block > TCP_SEND_SIZE) - block = TCP_SEND_SIZE; - - res = net_write(s, p, block); - - if ((res == 0) || (res == -56)) - { - usleep(20 * 1000); - continue; - } - - if (res < 0) - break; - - sent += res; - left -= res; - p += res; - usleep(100); - - if ((sent / TCP_BLOCK_SIZE) > step) - { - t = gettime (); - step++; - } - } - - return left == 0; -} - -static bool http_split_url(char *host, char *path, const char *url) -{ - const char *p; - char *c; - - if (strncasecmp(url, "http://", 7)) - return false; - - p = url + 7; - c = strchr(p, '/'); - - if (c == NULL || c[0] == 0) - return false; - - snprintf(host, c-p+1, "%s", p); - strcpy(path, c); - return true; -} - -#define MAX_SIZE (1024*1024*15) - -/**************************************************************************** - * http_request - * Retrieves the specified URL, and stores it in the specified file or buffer - ***************************************************************************/ -int http_request(const char *url, FILE *hfile, u8 *buffer, u32 maxsize, bool silent) -{ - int res = 0; - char http_host[1024]; - char http_path[1024]; - u16 http_port; - - http_res result; - u32 http_status; - u32 sizeread = 0, content_length = 0; - - int linecount; - - if(maxsize > MAX_SIZE) - return 0; - - if (url == NULL || (hfile == NULL && buffer == NULL)) - return 0; - - if (!http_split_url(http_host, http_path, url)) - return 0; - - http_port = 80; - http_status = 404; - - int s = tcp_connect(http_host, http_port); - - if (s < 0) - { - result = HTTPR_ERR_CONNECT; - return 0; - } - - char request[1024]; - char *r = request; - - r += sprintf(r, "GET %s HTTP/1.1\r\n", http_path); - r += sprintf(r, "Host: %s\r\n", http_host); - r += sprintf(r, "Cache-Control: no-cache\r\n\r\n"); - - res = tcp_write(s, (u8 *) request, strlen(request)); - - char line[256]; - - for (linecount = 0; linecount < 32; linecount++) - { - if (tcp_readln(s, line, 255) != 0) - { - http_status = 404; - result = HTTPR_ERR_REQUEST; - break; - } - - if (strlen(line) < 1) - break; - - sscanf(line, "HTTP/1.%*u %u", &http_status); - sscanf(line, "Content-Length: %u", &content_length); - } - - if (http_status != 200) - { - result = HTTPR_ERR_STATUS; - net_close(s); - return 0; - } - - // length unknown - just read as much as we can - if(content_length == 0) - { - content_length = maxsize; - } - else if (content_length > maxsize) - { - result = HTTPR_ERR_TOOBIG; - net_close(s); - return 0; - } - - if (buffer != NULL) - { - if(!silent) - ShowAction("Downloading..."); - - sizeread = tcp_read(s, buffer, content_length); - - if(!silent) - CancelAction(); - } - else - { - // read into file - u32 bufSize = (1024 * 32); - u32 bytesLeft = content_length; - u32 readSize; - - if(!silent) - ShowProgress("Downloading...", 0, content_length); - u8 * fbuffer = (u8 *) malloc(bufSize); - if(fbuffer) - { - while (bytesLeft > 0) - { - if (bytesLeft < bufSize) - readSize = bytesLeft; - else - readSize = bufSize; - - res = tcp_read(s, fbuffer, readSize); - if (!res) - break; - - sizeread += res; - bytesLeft -= res; - - res = fwrite(fbuffer, 1, res, hfile); - if (!res) - break; - - if(!silent) - ShowProgress("Downloading...", (content_length - bytesLeft), content_length); - } - free(fbuffer); - } - if(!silent) - CancelAction(); - } - - net_close(s); - - if (content_length < maxsize && sizeread != content_length) - { - result = HTTPR_ERR_RECEIVE; - return 0; - } - - result = HTTPR_OK; - return sizeread; -} -#endif diff --git a/source/utils/http.h b/source/utils/http.h deleted file mode 100644 index 91961b8..0000000 --- a/source/utils/http.h +++ /dev/null @@ -1,25 +0,0 @@ -/**************************************************************************** - * Visual Boy Advance GX - * - * Tantric December 2008 - * - * http.h - * - * HTTP operations - ***************************************************************************/ - -#ifndef _HTTP_H_ -#define _HTTP_H_ - -typedef enum { - HTTPR_OK, - HTTPR_ERR_CONNECT, - HTTPR_ERR_REQUEST, - HTTPR_ERR_STATUS, - HTTPR_ERR_TOOBIG, - HTTPR_ERR_RECEIVE -} http_res; - -int http_request (const char *url, FILE * hfile, u8 * buffer, const u32 max_size, bool silent); - -#endif diff --git a/source/utils/pngu.c b/source/utils/pngu.c index 8f53831..e391216 100644 --- a/source/utils/pngu.c +++ b/source/utils/pngu.c @@ -9,6 +9,7 @@ #include #include +#include #include "pngu.h" #include diff --git a/source/utils/unzip/crypt.h b/source/utils/unzip/crypt.h deleted file mode 100644 index f14a628..0000000 --- a/source/utils/unzip/crypt.h +++ /dev/null @@ -1,132 +0,0 @@ -/* crypt.h -- base code for crypt/uncrypt ZIPfile - - - Version 1.01e, February 12th, 2005 - - Copyright (C) 1998-2005 Gilles Vollant - - This code is a modified version of crypting code in Infozip distribution - - The encryption/decryption parts of this source code (as opposed to the - non-echoing password parts) were originally written in Europe. The - whole source package can be freely distributed, including from the USA. - (Prior to January 2000, re-export from the US was a violation of US law.) - - This encryption code is a direct transcription of the algorithm from - Roger Schlafly, described by Phil Katz in the file appnote.txt. This - file (appnote.txt) is distributed with the PKZIP program (even in the - version without encryption capabilities). - - If you don't need crypting in your application, just define symbols - NOCRYPT and NOUNCRYPT. - - This code support the "Traditional PKWARE Encryption". - - The new AES encryption added on Zip format by Winzip (see the page - http://www.winzip.com/aes_info.htm ) and PKWare PKZip 5.x Strong - Encryption is not supported. -*/ - -#define CRC32(c, b) ((*(pcrc_32_tab+(((int)(c) ^ (b)) & 0xff))) ^ ((c) >> 8)) - -/*********************************************************************** - * Return the next byte in the pseudo-random sequence - */ -static int decrypt_byte(unsigned long* pkeys, const unsigned long* pcrc_32_tab) -{ - unsigned temp; /* POTENTIAL BUG: temp*(temp^1) may overflow in an - * unpredictable manner on 16-bit systems; not a problem - * with any known compiler so far, though */ - - temp = ((unsigned)(*(pkeys+2)) & 0xffff) | 2; - return (int)(((temp * (temp ^ 1)) >> 8) & 0xff); -} - -/*********************************************************************** - * Update the encryption keys with the next byte of plain text - */ -static int update_keys(unsigned long* pkeys,const unsigned long* pcrc_32_tab,int c) -{ - (*(pkeys+0)) = CRC32((*(pkeys+0)), c); - (*(pkeys+1)) += (*(pkeys+0)) & 0xff; - (*(pkeys+1)) = (*(pkeys+1)) * 134775813L + 1; - { - register int keyshift = (int)((*(pkeys+1)) >> 24); - (*(pkeys+2)) = CRC32((*(pkeys+2)), keyshift); - } - return c; -} - - -/*********************************************************************** - * Initialize the encryption keys and the random header according to - * the given password. - */ -static void init_keys(const char* passwd,unsigned long* pkeys,const unsigned long* pcrc_32_tab) -{ - *(pkeys+0) = 305419896L; - *(pkeys+1) = 591751049L; - *(pkeys+2) = 878082192L; - while (*passwd != '\0') { - update_keys(pkeys,pcrc_32_tab,(int)*passwd); - passwd++; - } -} - -#define zdecode(pkeys,pcrc_32_tab,c) \ - (update_keys(pkeys,pcrc_32_tab,c ^= decrypt_byte(pkeys,pcrc_32_tab))) - -#define zencode(pkeys,pcrc_32_tab,c,t) \ - (t=decrypt_byte(pkeys,pcrc_32_tab), update_keys(pkeys,pcrc_32_tab,c), t^(c)) - -#ifdef INCLUDECRYPTINGCODE_IFCRYPTALLOWED - -#define RAND_HEAD_LEN 12 - /* "last resort" source for second part of crypt seed pattern */ -# ifndef ZCR_SEED2 -# define ZCR_SEED2 3141592654UL /* use PI as default pattern */ -# endif - -static int crypthead(passwd, buf, bufSize, pkeys, pcrc_32_tab, crcForCrypting) - const char *passwd; /* password string */ - unsigned char *buf; /* where to write header */ - int bufSize; - unsigned long* pkeys; - const unsigned long* pcrc_32_tab; - unsigned long crcForCrypting; -{ - int n; /* index in random header */ - int t; /* temporary */ - int c; /* random byte */ - unsigned char header[RAND_HEAD_LEN-2]; /* random header */ - static unsigned calls = 0; /* ensure different random header each time */ - - if (bufSize> 7) & 0xff; - header[n] = (unsigned char)zencode(pkeys, pcrc_32_tab, c, t); - } - /* Encrypt random header (last two bytes is high word of crc) */ - init_keys(passwd, pkeys, pcrc_32_tab); - for (n = 0; n < RAND_HEAD_LEN-2; n++) - { - buf[n] = (unsigned char)zencode(pkeys, pcrc_32_tab, header[n], t); - } - buf[n++] = zencode(pkeys, pcrc_32_tab, (int)(crcForCrypting >> 16) & 0xff, t); - buf[n++] = zencode(pkeys, pcrc_32_tab, (int)(crcForCrypting >> 24) & 0xff, t); - return n; -} - -#endif diff --git a/source/utils/unzip/ioapi.c b/source/utils/unzip/ioapi.c deleted file mode 100644 index 7f20c18..0000000 --- a/source/utils/unzip/ioapi.c +++ /dev/null @@ -1,177 +0,0 @@ -/* ioapi.c -- IO base function header for compress/uncompress .zip - files using zlib + zip or unzip API - - Version 1.01e, February 12th, 2005 - - Copyright (C) 1998-2005 Gilles Vollant -*/ - -#include -#include -#include - -#include "zlib.h" -#include "ioapi.h" - - - -/* I've found an old Unix (a SunOS 4.1.3_U1) without all SEEK_* defined.... */ - -#ifndef SEEK_CUR -#define SEEK_CUR 1 -#endif - -#ifndef SEEK_END -#define SEEK_END 2 -#endif - -#ifndef SEEK_SET -#define SEEK_SET 0 -#endif - -voidpf ZCALLBACK fopen_file_func OF(( - voidpf opaque, - const char* filename, - int mode)); - -uLong ZCALLBACK fread_file_func OF(( - voidpf opaque, - voidpf stream, - void* buf, - uLong size)); - -uLong ZCALLBACK fwrite_file_func OF(( - voidpf opaque, - voidpf stream, - const void* buf, - uLong size)); - -long ZCALLBACK ftell_file_func OF(( - voidpf opaque, - voidpf stream)); - -long ZCALLBACK fseek_file_func OF(( - voidpf opaque, - voidpf stream, - uLong offset, - int origin)); - -int ZCALLBACK fclose_file_func OF(( - voidpf opaque, - voidpf stream)); - -int ZCALLBACK ferror_file_func OF(( - voidpf opaque, - voidpf stream)); - - -voidpf ZCALLBACK fopen_file_func (opaque, filename, mode) - voidpf opaque; - const char* filename; - int mode; -{ - FILE* file = NULL; - const char* mode_fopen = NULL; - if ((mode & ZLIB_FILEFUNC_MODE_READWRITEFILTER)==ZLIB_FILEFUNC_MODE_READ) - mode_fopen = "rb"; - else - if (mode & ZLIB_FILEFUNC_MODE_EXISTING) - mode_fopen = "r+b"; - else - if (mode & ZLIB_FILEFUNC_MODE_CREATE) - mode_fopen = "wb"; - - if ((filename!=NULL) && (mode_fopen != NULL)) - file = fopen(filename, mode_fopen); - return file; -} - - -uLong ZCALLBACK fread_file_func (opaque, stream, buf, size) - voidpf opaque; - voidpf stream; - void* buf; - uLong size; -{ - uLong ret; - ret = (uLong)fread(buf, 1, (size_t)size, (FILE *)stream); - return ret; -} - - -uLong ZCALLBACK fwrite_file_func (opaque, stream, buf, size) - voidpf opaque; - voidpf stream; - const void* buf; - uLong size; -{ - uLong ret; - ret = (uLong)fwrite(buf, 1, (size_t)size, (FILE *)stream); - return ret; -} - -long ZCALLBACK ftell_file_func (opaque, stream) - voidpf opaque; - voidpf stream; -{ - long ret; - ret = ftell((FILE *)stream); - return ret; -} - -long ZCALLBACK fseek_file_func (opaque, stream, offset, origin) - voidpf opaque; - voidpf stream; - uLong offset; - int origin; -{ - int fseek_origin=0; - long ret; - switch (origin) - { - case ZLIB_FILEFUNC_SEEK_CUR : - fseek_origin = SEEK_CUR; - break; - case ZLIB_FILEFUNC_SEEK_END : - fseek_origin = SEEK_END; - break; - case ZLIB_FILEFUNC_SEEK_SET : - fseek_origin = SEEK_SET; - break; - default: return -1; - } - ret = 0; - fseek((FILE *)stream, offset, fseek_origin); - return ret; -} - -int ZCALLBACK fclose_file_func (opaque, stream) - voidpf opaque; - voidpf stream; -{ - int ret; - ret = fclose((FILE *)stream); - return ret; -} - -int ZCALLBACK ferror_file_func (opaque, stream) - voidpf opaque; - voidpf stream; -{ - int ret; - ret = ferror((FILE *)stream); - return ret; -} - -void fill_fopen_filefunc (pzlib_filefunc_def) - zlib_filefunc_def* pzlib_filefunc_def; -{ - pzlib_filefunc_def->zopen_file = fopen_file_func; - pzlib_filefunc_def->zread_file = fread_file_func; - pzlib_filefunc_def->zwrite_file = fwrite_file_func; - pzlib_filefunc_def->ztell_file = ftell_file_func; - pzlib_filefunc_def->zseek_file = fseek_file_func; - pzlib_filefunc_def->zclose_file = fclose_file_func; - pzlib_filefunc_def->zerror_file = ferror_file_func; - pzlib_filefunc_def->opaque = NULL; -} diff --git a/source/utils/unzip/ioapi.h b/source/utils/unzip/ioapi.h deleted file mode 100644 index e73a3b2..0000000 --- a/source/utils/unzip/ioapi.h +++ /dev/null @@ -1,75 +0,0 @@ -/* ioapi.h -- IO base function header for compress/uncompress .zip - files using zlib + zip or unzip API - - Version 1.01e, February 12th, 2005 - - Copyright (C) 1998-2005 Gilles Vollant -*/ - -#ifndef _ZLIBIOAPI_H -#define _ZLIBIOAPI_H - - -#define ZLIB_FILEFUNC_SEEK_CUR (1) -#define ZLIB_FILEFUNC_SEEK_END (2) -#define ZLIB_FILEFUNC_SEEK_SET (0) - -#define ZLIB_FILEFUNC_MODE_READ (1) -#define ZLIB_FILEFUNC_MODE_WRITE (2) -#define ZLIB_FILEFUNC_MODE_READWRITEFILTER (3) - -#define ZLIB_FILEFUNC_MODE_EXISTING (4) -#define ZLIB_FILEFUNC_MODE_CREATE (8) - - -#ifndef ZCALLBACK - -#if (defined(WIN32) || defined (WINDOWS) || defined (_WINDOWS)) && defined(CALLBACK) && defined (USEWINDOWS_CALLBACK) -#define ZCALLBACK CALLBACK -#else -#define ZCALLBACK -#endif -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -typedef voidpf (ZCALLBACK *open_file_func) OF((voidpf opaque, const char* filename, int mode)); -typedef uLong (ZCALLBACK *read_file_func) OF((voidpf opaque, voidpf stream, void* buf, uLong size)); -typedef uLong (ZCALLBACK *write_file_func) OF((voidpf opaque, voidpf stream, const void* buf, uLong size)); -typedef long (ZCALLBACK *tell_file_func) OF((voidpf opaque, voidpf stream)); -typedef long (ZCALLBACK *seek_file_func) OF((voidpf opaque, voidpf stream, uLong offset, int origin)); -typedef int (ZCALLBACK *close_file_func) OF((voidpf opaque, voidpf stream)); -typedef int (ZCALLBACK *testerror_file_func) OF((voidpf opaque, voidpf stream)); - -typedef struct zlib_filefunc_def_s -{ - open_file_func zopen_file; - read_file_func zread_file; - write_file_func zwrite_file; - tell_file_func ztell_file; - seek_file_func zseek_file; - close_file_func zclose_file; - testerror_file_func zerror_file; - voidpf opaque; -} zlib_filefunc_def; - - - -void fill_fopen_filefunc OF((zlib_filefunc_def* pzlib_filefunc_def)); - -#define ZREAD(filefunc,filestream,buf,size) ((*((filefunc).zread_file))((filefunc).opaque,filestream,buf,size)) -#define ZWRITE(filefunc,filestream,buf,size) ((*((filefunc).zwrite_file))((filefunc).opaque,filestream,buf,size)) -#define ZTELL(filefunc,filestream) ((*((filefunc).ztell_file))((filefunc).opaque,filestream)) -#define ZSEEK(filefunc,filestream,pos,mode) ((*((filefunc).zseek_file))((filefunc).opaque,filestream,pos,mode)) -#define ZCLOSE(filefunc,filestream) ((*((filefunc).zclose_file))((filefunc).opaque,filestream)) -#define ZERROR(filefunc,filestream) ((*((filefunc).zerror_file))((filefunc).opaque,filestream)) - - -#ifdef __cplusplus -} -#endif - -#endif - diff --git a/source/utils/unzip/miniunz.cpp b/source/utils/unzip/miniunz.cpp deleted file mode 100644 index 945c970..0000000 --- a/source/utils/unzip/miniunz.cpp +++ /dev/null @@ -1,324 +0,0 @@ -/* - miniunz.c - Version 1.01e, February 12th, 2005 - - Copyright (C) 1998-2005 Gilles Vollant -*/ - - -#include -#include -#include -#include -#include -#include -#include -#include - -#include "unzip.h" -#include "menu.h" - -#define CASESENSITIVITY (0) -#define WRITEBUFFERSIZE (1024*256) -#define MAXFILENAME (256) - -// used to display unzip progress -static uLong total_size; -static uLong total_unzipped; - -static int mymkdir(const char* dirname) -{ - int ret=0; - ret = mkdir (dirname,0775); - return ret; -} - -int makedir (char *newdir) -{ - char *buffer ; - char *p; - int len = (int)strlen(newdir); - - if (len <= 0) - return 0; - - buffer = (char*)malloc(len+1); - strcpy(buffer,newdir); - - if (buffer[len-1] == '/') { - buffer[len-1] = '\0'; - } - if (mymkdir(buffer) == 0) - { - free(buffer); - return 1; - } - - p = buffer+1; - while (1) - { - char hold; - - while(*p && *p != '\\' && *p != '/') - p++; - hold = *p; - *p = 0; - if ((mymkdir(buffer) == -1) && (errno == ENOENT)) - { - //printf("couldn't create directory %s\n",buffer); - free(buffer); - return 0; - } - if (hold == 0) - break; - *p++ = hold; - } - free(buffer); - return 1; -} - -static int do_extract_currentfile(unzFile uf,const int* popt_extract_without_path,int* popt_overwrite,const char* password) -{ - char filename_inzip[256]; - char* filename_withoutpath; - char* p; - int err=UNZ_OK; - FILE *fout=NULL; - void* buf; - uInt size_buf; - - unz_file_info file_info; - err = unzGetCurrentFileInfo(uf,&file_info,filename_inzip,sizeof(filename_inzip),NULL,0,NULL,0); - - if (err!=UNZ_OK) - { - //printf("error %d with zipfile in unzGetCurrentFileInfo\n",err); - return err; - } - - size_buf = WRITEBUFFERSIZE; - buf = (void*)malloc(size_buf); - if (buf==NULL) - { - //printf("Error allocating memory\n"); - return UNZ_INTERNALERROR; - } - - p = filename_withoutpath = filename_inzip; - while ((*p) != '\0') - { - if (((*p)=='/') || ((*p)=='\\')) - filename_withoutpath = p+1; - p++; - } - - if ((*filename_withoutpath)=='\0') - { - if ((*popt_extract_without_path)==0) - { - //printf("creating directory: %s\n",filename_inzip); - mymkdir(filename_inzip); - } - } - else - { - char* write_filename; - int skip=0; - - if ((*popt_extract_without_path)==0) - write_filename = filename_inzip; - else - write_filename = filename_withoutpath; - - err = unzOpenCurrentFilePassword(uf,password); - if (err!=UNZ_OK) - { - //printf("error %d with zipfile in unzOpenCurrentFilePassword\n",err); - } - - if (((*popt_overwrite)==0) && (err==UNZ_OK)) - { - char rep=0; - FILE* ftestexist; - ftestexist = fopen(write_filename,"rb"); - if (ftestexist!=NULL) - { - fclose(ftestexist); - do - { - char answer[128]; - int ret; - - printf("The file %s exists. Overwrite ? [y]es, [n]o, [A]ll: ",write_filename); - ret = scanf("%1s",answer); - if (ret != 1) - { - exit(EXIT_FAILURE); - } - rep = answer[0] ; - if ((rep>='a') && (rep<='z')) - rep -= 0x20; - } - while ((rep!='Y') && (rep!='N') && (rep!='A')); - } - - if (rep == 'N') - skip = 1; - - if (rep == 'A') - *popt_overwrite=1; - } - - if ((skip==0) && (err==UNZ_OK)) - { - fout=fopen(write_filename,"wb"); - - /* some zipfile don't contain directory alone before file */ - if ((fout==NULL) && ((*popt_extract_without_path)==0) && - (filename_withoutpath!=(char*)filename_inzip)) - { - char c=*(filename_withoutpath-1); - *(filename_withoutpath-1)='\0'; - makedir(write_filename); - *(filename_withoutpath-1)=c; - fout=fopen(write_filename,"wb"); - } - - if (fout==NULL) - { - //printf("error opening %s\n",write_filename); - } - } - - if (fout!=NULL) - { - //printf(" extracting: %s\n",write_filename); - - do - { - err = unzReadCurrentFile(uf,buf,size_buf); - if (err<0) - { - //printf("error %d with zipfile in unzReadCurrentFile\n",err); - break; - } - if (err>0) - if (fwrite(buf,err,1,fout)!=1) - { - //printf("error in writing extracted file\n"); - err=UNZ_ERRNO; - break; - } - total_unzipped += size_buf; - // show progress - ShowProgress("Unzipping...", total_unzipped, total_size); - } - while (err>0); - if (fout) - fclose(fout); - - } - - if (err==UNZ_OK) - { - err = unzCloseCurrentFile (uf); - if (err!=UNZ_OK) - { - //printf("error %d with zipfile in unzCloseCurrentFile\n",err); - } - } - else - unzCloseCurrentFile(uf); /* don't lose the error */ - } - - free(buf); - return err; -} - -static uLong zipSize(unzFile uf) -{ - uLong i; - unz_global_info gi; - int err; - - uLong total = 0; - - unz_file_info file_info; - char filename_inzip[256]; - - err = unzGetGlobalInfo (uf,&gi); - - for (i=0;i -#include -#include -#include "zlib.h" -#include "unzip.h" - -#ifdef STDC -# include -# include -# include -#endif -#ifdef NO_ERRNO_H - extern int errno; -#else -# include -#endif - - -#ifndef local -# define local static -#endif -/* compile with -Dlocal if your debugger can't find static symbols */ - - -#ifndef CASESENSITIVITYDEFAULT_NO -# if !defined(unix) && !defined(CASESENSITIVITYDEFAULT_YES) -# define CASESENSITIVITYDEFAULT_NO -# endif -#endif - - -#ifndef UNZ_BUFSIZE -#define UNZ_BUFSIZE (1024*256) -#endif - -#ifndef UNZ_MAXFILENAMEINZIP -#define UNZ_MAXFILENAMEINZIP (256) -#endif - -#ifndef ALLOC -# define ALLOC(size) (malloc(size)) -#endif -#ifndef TRYFREE -# define TRYFREE(p) {if (p) free(p);} -#endif - -#define SIZECENTRALDIRITEM (0x2e) -#define SIZEZIPLOCALHEADER (0x1e) - -/* unz_file_info_interntal contain internal info about a file in zipfile*/ -typedef struct unz_file_info_internal_s -{ - uLong offset_curfile;/* relative offset of local header 4 bytes */ -} unz_file_info_internal; - - -/* file_in_zip_read_info_s contain internal information about a file in zipfile, - when reading and decompress it */ -typedef struct -{ - char *read_buffer; /* internal buffer for compressed data */ - z_stream stream; /* zLib stream structure for inflate */ - - uLong pos_in_zipfile; /* position in byte on the zipfile, for fseek*/ - uLong stream_initialised; /* flag set if stream structure is initialised*/ - - uLong offset_local_extrafield;/* offset of the local extra field */ - uInt size_local_extrafield;/* size of the local extra field */ - uLong pos_local_extrafield; /* position in the local extra field in read*/ - - uLong crc32; /* crc32 of all data uncompressed */ - uLong crc32_wait; /* crc32 we must obtain after decompress all */ - uLong rest_read_compressed; /* number of byte to be decompressed */ - uLong rest_read_uncompressed;/*number of byte to be obtained after decomp*/ - zlib_filefunc_def z_filefunc; - voidpf filestream; /* io structore of the zipfile */ - uLong compression_method; /* compression method (0==store) */ - uLong byte_before_the_zipfile;/* byte before the zipfile, (>0 for sfx)*/ - int raw; -} file_in_zip_read_info_s; - - -/* unz_s contain internal information about the zipfile -*/ -typedef struct -{ - zlib_filefunc_def z_filefunc; - voidpf filestream; /* io structore of the zipfile */ - unz_global_info gi; /* public global information */ - uLong byte_before_the_zipfile;/* byte before the zipfile, (>0 for sfx)*/ - uLong num_file; /* number of the current file in the zipfile*/ - uLong pos_in_central_dir; /* pos of the current file in the central dir*/ - uLong current_file_ok; /* flag about the usability of the current file*/ - uLong central_pos; /* position of the beginning of the central dir*/ - - uLong size_central_dir; /* size of the central directory */ - uLong offset_central_dir; /* offset of start of central directory with - respect to the starting disk number */ - - unz_file_info cur_file_info; /* public info about the current file in zip*/ - unz_file_info_internal cur_file_info_internal; /* private info about it*/ - file_in_zip_read_info_s* pfile_in_zip_read; /* structure about the current - file if we are decompressing it */ - int encrypted; -# ifndef NOUNCRYPT - unsigned long keys[3]; /* keys defining the pseudo-random sequence */ - const unsigned long* pcrc_32_tab; -# endif -} unz_s; - - -#ifndef NOUNCRYPT -#include "crypt.h" -#endif - -/* =========================================================================== - Read a byte from a gz_stream; update next_in and avail_in. Return EOF - for end of file. - IN assertion: the stream s has been sucessfully opened for reading. -*/ - - -local int unzlocal_getByte OF(( - const zlib_filefunc_def* pzlib_filefunc_def, - voidpf filestream, - int *pi)); - -local int unzlocal_getByte(pzlib_filefunc_def,filestream,pi) - const zlib_filefunc_def* pzlib_filefunc_def; - voidpf filestream; - int *pi; -{ - unsigned char c; - int err = (int)ZREAD(*pzlib_filefunc_def,filestream,&c,1); - if (err==1) - { - *pi = (int)c; - return UNZ_OK; - } - else - { - if (ZERROR(*pzlib_filefunc_def,filestream)) - return UNZ_ERRNO; - else - return UNZ_EOF; - } -} - - -/* =========================================================================== - Reads a long in LSB order from the given gz_stream. Sets -*/ -local int unzlocal_getShort OF(( - const zlib_filefunc_def* pzlib_filefunc_def, - voidpf filestream, - uLong *pX)); - -local int unzlocal_getShort (pzlib_filefunc_def,filestream,pX) - const zlib_filefunc_def* pzlib_filefunc_def; - voidpf filestream; - uLong *pX; -{ - uLong x ; - int i = 0; - int err; - - err = unzlocal_getByte(pzlib_filefunc_def,filestream,&i); - x = (uLong)i; - - if (err==UNZ_OK) - err = unzlocal_getByte(pzlib_filefunc_def,filestream,&i); - x += ((uLong)i)<<8; - - if (err==UNZ_OK) - *pX = x; - else - *pX = 0; - return err; -} - -local int unzlocal_getLong OF(( - const zlib_filefunc_def* pzlib_filefunc_def, - voidpf filestream, - uLong *pX)); - -local int unzlocal_getLong (pzlib_filefunc_def,filestream,pX) - const zlib_filefunc_def* pzlib_filefunc_def; - voidpf filestream; - uLong *pX; -{ - uLong x ; - int i = 0; - int err; - - err = unzlocal_getByte(pzlib_filefunc_def,filestream,&i); - x = (uLong)i; - - if (err==UNZ_OK) - err = unzlocal_getByte(pzlib_filefunc_def,filestream,&i); - x += ((uLong)i)<<8; - - if (err==UNZ_OK) - err = unzlocal_getByte(pzlib_filefunc_def,filestream,&i); - x += ((uLong)i)<<16; - - if (err==UNZ_OK) - err = unzlocal_getByte(pzlib_filefunc_def,filestream,&i); - x += ((uLong)i)<<24; - - if (err==UNZ_OK) - *pX = x; - else - *pX = 0; - return err; -} - - -/* My own strcmpi / strcasecmp */ -local int strcmpcasenosensitive_internal (fileName1,fileName2) - const char* fileName1; - const char* fileName2; -{ - for (;;) - { - char c1=*(fileName1++); - char c2=*(fileName2++); - if ((c1>='a') && (c1<='z')) - c1 -= 0x20; - if ((c2>='a') && (c2<='z')) - c2 -= 0x20; - if (c1=='\0') - return ((c2=='\0') ? 0 : -1); - if (c2=='\0') - return 1; - if (c1c2) - return 1; - } -} - - -#ifdef CASESENSITIVITYDEFAULT_NO -#define CASESENSITIVITYDEFAULTVALUE 2 -#else -#define CASESENSITIVITYDEFAULTVALUE 1 -#endif - -#ifndef STRCMPCASENOSENTIVEFUNCTION -#define STRCMPCASENOSENTIVEFUNCTION strcmpcasenosensitive_internal -#endif - -/* - Compare two filename (fileName1,fileName2). - If iCaseSenisivity = 1, comparision is case sensitivity (like strcmp) - If iCaseSenisivity = 2, comparision is not case sensitivity (like strcmpi - or strcasecmp) - If iCaseSenisivity = 0, case sensitivity is defaut of your operating system - (like 1 on Unix, 2 on Windows) - -*/ -extern int ZEXPORT unzStringFileNameCompare (fileName1,fileName2,iCaseSensitivity) - const char* fileName1; - const char* fileName2; - int iCaseSensitivity; -{ - if (iCaseSensitivity==0) - iCaseSensitivity=CASESENSITIVITYDEFAULTVALUE; - - if (iCaseSensitivity==1) - return strcmp(fileName1,fileName2); - - return STRCMPCASENOSENTIVEFUNCTION(fileName1,fileName2); -} - -#ifndef BUFREADCOMMENT -#define BUFREADCOMMENT (0x400) -#endif - -/* - Locate the Central directory of a zipfile (at the end, just before - the global comment) -*/ -local uLong unzlocal_SearchCentralDir OF(( - const zlib_filefunc_def* pzlib_filefunc_def, - voidpf filestream)); - -local uLong unzlocal_SearchCentralDir(pzlib_filefunc_def,filestream) - const zlib_filefunc_def* pzlib_filefunc_def; - voidpf filestream; -{ - unsigned char* buf; - uLong uSizeFile; - uLong uBackRead; - uLong uMaxBack=0xffff; /* maximum size of global comment */ - uLong uPosFound=0; - - if (ZSEEK(*pzlib_filefunc_def,filestream,0,ZLIB_FILEFUNC_SEEK_END) != 0) - return 0; - - - uSizeFile = ZTELL(*pzlib_filefunc_def,filestream); - - if (uMaxBack>uSizeFile) - uMaxBack = uSizeFile; - - buf = (unsigned char*)ALLOC(BUFREADCOMMENT+4); - if (buf==NULL) - return 0; - - uBackRead = 4; - while (uBackReaduMaxBack) - uBackRead = uMaxBack; - else - uBackRead+=BUFREADCOMMENT; - uReadPos = uSizeFile-uBackRead ; - - uReadSize = ((BUFREADCOMMENT+4) < (uSizeFile-uReadPos)) ? - (BUFREADCOMMENT+4) : (uSizeFile-uReadPos); - if (ZSEEK(*pzlib_filefunc_def,filestream,uReadPos,ZLIB_FILEFUNC_SEEK_SET)!=0) - break; - - if (ZREAD(*pzlib_filefunc_def,filestream,buf,uReadSize)!=uReadSize) - break; - - for (i=(int)uReadSize-3; (i--)>0;) - if (((*(buf+i))==0x50) && ((*(buf+i+1))==0x4b) && - ((*(buf+i+2))==0x05) && ((*(buf+i+3))==0x06)) - { - uPosFound = uReadPos+i; - break; - } - - if (uPosFound!=0) - break; - } - TRYFREE(buf); - return uPosFound; -} - -/* - Open a Zip file. path contain the full pathname (by example, - on a Windows NT computer "c:\\test\\zlib114.zip" or on an Unix computer - "zlib/zlib114.zip". - If the zipfile cannot be opened (file doesn't exist or in not valid), the - return value is NULL. - Else, the return value is a unzFile Handle, usable with other function - of this unzip package. -*/ -extern unzFile ZEXPORT unzOpen2 (path, pzlib_filefunc_def) - const char *path; - zlib_filefunc_def* pzlib_filefunc_def; -{ - unz_s us; - unz_s *s; - uLong central_pos,uL; - - uLong number_disk; /* number of the current dist, used for - spaning ZIP, unsupported, always 0*/ - uLong number_disk_with_CD; /* number the the disk with central dir, used - for spaning ZIP, unsupported, always 0*/ - uLong number_entry_CD; /* total number of entries in - the central dir - (same than number_entry on nospan) */ - - int err=UNZ_OK; - - if (pzlib_filefunc_def==NULL) - fill_fopen_filefunc(&us.z_filefunc); - else - us.z_filefunc = *pzlib_filefunc_def; - - us.filestream= (*(us.z_filefunc.zopen_file))(us.z_filefunc.opaque, - path, - ZLIB_FILEFUNC_MODE_READ | - ZLIB_FILEFUNC_MODE_EXISTING); - if (us.filestream==NULL) - return NULL; - - central_pos = unzlocal_SearchCentralDir(&us.z_filefunc,us.filestream); - if (central_pos==0) - err=UNZ_ERRNO; - - if (ZSEEK(us.z_filefunc, us.filestream, - central_pos,ZLIB_FILEFUNC_SEEK_SET)!=0) - err=UNZ_ERRNO; - - /* the signature, already checked */ - if (unzlocal_getLong(&us.z_filefunc, us.filestream,&uL)!=UNZ_OK) - err=UNZ_ERRNO; - - /* number of this disk */ - if (unzlocal_getShort(&us.z_filefunc, us.filestream,&number_disk)!=UNZ_OK) - err=UNZ_ERRNO; - - /* number of the disk with the start of the central directory */ - if (unzlocal_getShort(&us.z_filefunc, us.filestream,&number_disk_with_CD)!=UNZ_OK) - err=UNZ_ERRNO; - - /* total number of entries in the central dir on this disk */ - if (unzlocal_getShort(&us.z_filefunc, us.filestream,&us.gi.number_entry)!=UNZ_OK) - err=UNZ_ERRNO; - - /* total number of entries in the central dir */ - if (unzlocal_getShort(&us.z_filefunc, us.filestream,&number_entry_CD)!=UNZ_OK) - err=UNZ_ERRNO; - - if ((number_entry_CD!=us.gi.number_entry) || - (number_disk_with_CD!=0) || - (number_disk!=0)) - err=UNZ_BADZIPFILE; - - /* size of the central directory */ - if (unzlocal_getLong(&us.z_filefunc, us.filestream,&us.size_central_dir)!=UNZ_OK) - err=UNZ_ERRNO; - - /* offset of start of central directory with respect to the - starting disk number */ - if (unzlocal_getLong(&us.z_filefunc, us.filestream,&us.offset_central_dir)!=UNZ_OK) - err=UNZ_ERRNO; - - /* zipfile comment length */ - if (unzlocal_getShort(&us.z_filefunc, us.filestream,&us.gi.size_comment)!=UNZ_OK) - err=UNZ_ERRNO; - - if ((central_pospfile_in_zip_read!=NULL) - unzCloseCurrentFile(file); - - ZCLOSE(s->z_filefunc, s->filestream); - TRYFREE(s); - return UNZ_OK; -} - - -/* - Write info about the ZipFile in the *pglobal_info structure. - No preparation of the structure is needed - return UNZ_OK if there is no problem. */ -extern int ZEXPORT unzGetGlobalInfo (file,pglobal_info) - unzFile file; - unz_global_info *pglobal_info; -{ - unz_s* s; - if (file==NULL) - return UNZ_PARAMERROR; - s=(unz_s*)file; - *pglobal_info=s->gi; - return UNZ_OK; -} - - -/* - Translate date/time from Dos format to tm_unz (readable more easilty) -*/ -local void unzlocal_DosDateToTmuDate (ulDosDate, ptm) - uLong ulDosDate; - tm_unz* ptm; -{ - uLong uDate; - uDate = (uLong)(ulDosDate>>16); - ptm->tm_mday = (uInt)(uDate&0x1f) ; - ptm->tm_mon = (uInt)((((uDate)&0x1E0)/0x20)-1) ; - ptm->tm_year = (uInt)(((uDate&0x0FE00)/0x0200)+1980) ; - - ptm->tm_hour = (uInt) ((ulDosDate &0xF800)/0x800); - ptm->tm_min = (uInt) ((ulDosDate&0x7E0)/0x20) ; - ptm->tm_sec = (uInt) (2*(ulDosDate&0x1f)) ; -} - -/* - Get Info about the current file in the zipfile, with internal only info -*/ -local int unzlocal_GetCurrentFileInfoInternal OF((unzFile file, - unz_file_info *pfile_info, - unz_file_info_internal - *pfile_info_internal, - char *szFileName, - uLong fileNameBufferSize, - void *extraField, - uLong extraFieldBufferSize, - char *szComment, - uLong commentBufferSize)); - -local int unzlocal_GetCurrentFileInfoInternal (file, - pfile_info, - pfile_info_internal, - szFileName, fileNameBufferSize, - extraField, extraFieldBufferSize, - szComment, commentBufferSize) - unzFile file; - unz_file_info *pfile_info; - unz_file_info_internal *pfile_info_internal; - char *szFileName; - uLong fileNameBufferSize; - void *extraField; - uLong extraFieldBufferSize; - char *szComment; - uLong commentBufferSize; -{ - unz_s* s; - unz_file_info file_info; - unz_file_info_internal file_info_internal; - int err=UNZ_OK; - uLong uMagic; - long lSeek=0; - - if (file==NULL) - return UNZ_PARAMERROR; - s=(unz_s*)file; - if (ZSEEK(s->z_filefunc, s->filestream, - s->pos_in_central_dir+s->byte_before_the_zipfile, - ZLIB_FILEFUNC_SEEK_SET)!=0) - err=UNZ_ERRNO; - - - /* we check the magic */ - if (err==UNZ_OK) - { - if (unzlocal_getLong(&s->z_filefunc, s->filestream,&uMagic) != UNZ_OK) - err=UNZ_ERRNO; - else if (uMagic!=0x02014b50) - err=UNZ_BADZIPFILE; - } - - if (unzlocal_getShort(&s->z_filefunc, s->filestream,&file_info.version) != UNZ_OK) - err=UNZ_ERRNO; - - if (unzlocal_getShort(&s->z_filefunc, s->filestream,&file_info.version_needed) != UNZ_OK) - err=UNZ_ERRNO; - - if (unzlocal_getShort(&s->z_filefunc, s->filestream,&file_info.flag) != UNZ_OK) - err=UNZ_ERRNO; - - if (unzlocal_getShort(&s->z_filefunc, s->filestream,&file_info.compression_method) != UNZ_OK) - err=UNZ_ERRNO; - - if (unzlocal_getLong(&s->z_filefunc, s->filestream,&file_info.dosDate) != UNZ_OK) - err=UNZ_ERRNO; - - unzlocal_DosDateToTmuDate(file_info.dosDate,&file_info.tmu_date); - - if (unzlocal_getLong(&s->z_filefunc, s->filestream,&file_info.crc) != UNZ_OK) - err=UNZ_ERRNO; - - if (unzlocal_getLong(&s->z_filefunc, s->filestream,&file_info.compressed_size) != UNZ_OK) - err=UNZ_ERRNO; - - if (unzlocal_getLong(&s->z_filefunc, s->filestream,&file_info.uncompressed_size) != UNZ_OK) - err=UNZ_ERRNO; - - if (unzlocal_getShort(&s->z_filefunc, s->filestream,&file_info.size_filename) != UNZ_OK) - err=UNZ_ERRNO; - - if (unzlocal_getShort(&s->z_filefunc, s->filestream,&file_info.size_file_extra) != UNZ_OK) - err=UNZ_ERRNO; - - if (unzlocal_getShort(&s->z_filefunc, s->filestream,&file_info.size_file_comment) != UNZ_OK) - err=UNZ_ERRNO; - - if (unzlocal_getShort(&s->z_filefunc, s->filestream,&file_info.disk_num_start) != UNZ_OK) - err=UNZ_ERRNO; - - if (unzlocal_getShort(&s->z_filefunc, s->filestream,&file_info.internal_fa) != UNZ_OK) - err=UNZ_ERRNO; - - if (unzlocal_getLong(&s->z_filefunc, s->filestream,&file_info.external_fa) != UNZ_OK) - err=UNZ_ERRNO; - - if (unzlocal_getLong(&s->z_filefunc, s->filestream,&file_info_internal.offset_curfile) != UNZ_OK) - err=UNZ_ERRNO; - - lSeek+=file_info.size_filename; - if ((err==UNZ_OK) && (szFileName!=NULL)) - { - uLong uSizeRead ; - if (file_info.size_filename0) && (fileNameBufferSize>0)) - if (ZREAD(s->z_filefunc, s->filestream,szFileName,uSizeRead)!=uSizeRead) - err=UNZ_ERRNO; - lSeek -= uSizeRead; - } - - - if ((err==UNZ_OK) && (extraField!=NULL)) - { - uLong uSizeRead ; - if (file_info.size_file_extraz_filefunc, s->filestream,lSeek,ZLIB_FILEFUNC_SEEK_CUR)==0) - lSeek=0; - else - err=UNZ_ERRNO; - } - - if ((file_info.size_file_extra>0) && (extraFieldBufferSize>0)) - if (ZREAD(s->z_filefunc, s->filestream,extraField,uSizeRead)!=uSizeRead) - err=UNZ_ERRNO; - lSeek += file_info.size_file_extra - uSizeRead; - } - else - lSeek+=file_info.size_file_extra; - - - if ((err==UNZ_OK) && (szComment!=NULL)) - { - uLong uSizeRead ; - if (file_info.size_file_commentz_filefunc, s->filestream,lSeek,ZLIB_FILEFUNC_SEEK_CUR)==0) - lSeek=0; - else - err=UNZ_ERRNO; - } - - if ((file_info.size_file_comment>0) && (commentBufferSize>0)) - if (ZREAD(s->z_filefunc, s->filestream,szComment,uSizeRead)!=uSizeRead) - err=UNZ_ERRNO; - lSeek+=file_info.size_file_comment - uSizeRead; - } - else - lSeek+=file_info.size_file_comment; - - if ((err==UNZ_OK) && (pfile_info!=NULL)) - *pfile_info=file_info; - - if ((err==UNZ_OK) && (pfile_info_internal!=NULL)) - *pfile_info_internal=file_info_internal; - - return err; -} - - - -/* - Write info about the ZipFile in the *pglobal_info structure. - No preparation of the structure is needed - return UNZ_OK if there is no problem. -*/ -extern int ZEXPORT unzGetCurrentFileInfo (file, - pfile_info, - szFileName, fileNameBufferSize, - extraField, extraFieldBufferSize, - szComment, commentBufferSize) - unzFile file; - unz_file_info *pfile_info; - char *szFileName; - uLong fileNameBufferSize; - void *extraField; - uLong extraFieldBufferSize; - char *szComment; - uLong commentBufferSize; -{ - return unzlocal_GetCurrentFileInfoInternal(file,pfile_info,NULL, - szFileName,fileNameBufferSize, - extraField,extraFieldBufferSize, - szComment,commentBufferSize); -} - -/* - Set the current file of the zipfile to the first file. - return UNZ_OK if there is no problem -*/ -extern int ZEXPORT unzGoToFirstFile (file) - unzFile file; -{ - int err=UNZ_OK; - unz_s* s; - if (file==NULL) - return UNZ_PARAMERROR; - s=(unz_s*)file; - s->pos_in_central_dir=s->offset_central_dir; - s->num_file=0; - err=unzlocal_GetCurrentFileInfoInternal(file,&s->cur_file_info, - &s->cur_file_info_internal, - NULL,0,NULL,0,NULL,0); - s->current_file_ok = (err == UNZ_OK); - return err; -} - -/* - Set the current file of the zipfile to the next file. - return UNZ_OK if there is no problem - return UNZ_END_OF_LIST_OF_FILE if the actual file was the latest. -*/ -extern int ZEXPORT unzGoToNextFile (file) - unzFile file; -{ - unz_s* s; - int err; - - if (file==NULL) - return UNZ_PARAMERROR; - s=(unz_s*)file; - if (!s->current_file_ok) - return UNZ_END_OF_LIST_OF_FILE; - if (s->gi.number_entry != 0xffff) /* 2^16 files overflow hack */ - if (s->num_file+1==s->gi.number_entry) - return UNZ_END_OF_LIST_OF_FILE; - - s->pos_in_central_dir += SIZECENTRALDIRITEM + s->cur_file_info.size_filename + - s->cur_file_info.size_file_extra + s->cur_file_info.size_file_comment ; - s->num_file++; - err = unzlocal_GetCurrentFileInfoInternal(file,&s->cur_file_info, - &s->cur_file_info_internal, - NULL,0,NULL,0,NULL,0); - s->current_file_ok = (err == UNZ_OK); - return err; -} - - -/* - Try locate the file szFileName in the zipfile. - For the iCaseSensitivity signification, see unzipStringFileNameCompare - - return value : - UNZ_OK if the file is found. It becomes the current file. - UNZ_END_OF_LIST_OF_FILE if the file is not found -*/ -extern int ZEXPORT unzLocateFile (file, szFileName, iCaseSensitivity) - unzFile file; - const char *szFileName; - int iCaseSensitivity; -{ - unz_s* s; - int err; - - /* We remember the 'current' position in the file so that we can jump - * back there if we fail. - */ - unz_file_info cur_file_infoSaved; - unz_file_info_internal cur_file_info_internalSaved; - uLong num_fileSaved; - uLong pos_in_central_dirSaved; - - - if (file==NULL) - return UNZ_PARAMERROR; - - if (strlen(szFileName)>=UNZ_MAXFILENAMEINZIP) - return UNZ_PARAMERROR; - - s=(unz_s*)file; - if (!s->current_file_ok) - return UNZ_END_OF_LIST_OF_FILE; - - /* Save the current state */ - num_fileSaved = s->num_file; - pos_in_central_dirSaved = s->pos_in_central_dir; - cur_file_infoSaved = s->cur_file_info; - cur_file_info_internalSaved = s->cur_file_info_internal; - - err = unzGoToFirstFile(file); - - while (err == UNZ_OK) - { - char szCurrentFileName[UNZ_MAXFILENAMEINZIP+1]; - err = unzGetCurrentFileInfo(file,NULL, - szCurrentFileName,sizeof(szCurrentFileName)-1, - NULL,0,NULL,0); - if (err == UNZ_OK) - { - if (unzStringFileNameCompare(szCurrentFileName, - szFileName,iCaseSensitivity)==0) - return UNZ_OK; - err = unzGoToNextFile(file); - } - } - - /* We failed, so restore the state of the 'current file' to where we - * were. - */ - s->num_file = num_fileSaved ; - s->pos_in_central_dir = pos_in_central_dirSaved ; - s->cur_file_info = cur_file_infoSaved; - s->cur_file_info_internal = cur_file_info_internalSaved; - return err; -} - - -/* -/////////////////////////////////////////// -// Contributed by Ryan Haksi (mailto://cryogen@infoserve.net) -// I need random access -// -// Further optimization could be realized by adding an ability -// to cache the directory in memory. The goal being a single -// comprehensive file read to put the file I need in a memory. -*/ - -/* -typedef struct unz_file_pos_s -{ - uLong pos_in_zip_directory; // offset in file - uLong num_of_file; // # of file -} unz_file_pos; -*/ - -extern int ZEXPORT unzGetFilePos(file, file_pos) - unzFile file; - unz_file_pos* file_pos; -{ - unz_s* s; - - if (file==NULL || file_pos==NULL) - return UNZ_PARAMERROR; - s=(unz_s*)file; - if (!s->current_file_ok) - return UNZ_END_OF_LIST_OF_FILE; - - file_pos->pos_in_zip_directory = s->pos_in_central_dir; - file_pos->num_of_file = s->num_file; - - return UNZ_OK; -} - -extern int ZEXPORT unzGoToFilePos(file, file_pos) - unzFile file; - unz_file_pos* file_pos; -{ - unz_s* s; - int err; - - if (file==NULL || file_pos==NULL) - return UNZ_PARAMERROR; - s=(unz_s*)file; - - /* jump to the right spot */ - s->pos_in_central_dir = file_pos->pos_in_zip_directory; - s->num_file = file_pos->num_of_file; - - /* set the current file */ - err = unzlocal_GetCurrentFileInfoInternal(file,&s->cur_file_info, - &s->cur_file_info_internal, - NULL,0,NULL,0,NULL,0); - /* return results */ - s->current_file_ok = (err == UNZ_OK); - return err; -} - -/* -// Unzip Helper Functions - should be here? -/////////////////////////////////////////// -*/ - -/* - Read the local header of the current zipfile - Check the coherency of the local header and info in the end of central - directory about this file - store in *piSizeVar the size of extra info in local header - (filename and size of extra field data) -*/ -local int unzlocal_CheckCurrentFileCoherencyHeader (s,piSizeVar, - poffset_local_extrafield, - psize_local_extrafield) - unz_s* s; - uInt* piSizeVar; - uLong *poffset_local_extrafield; - uInt *psize_local_extrafield; -{ - uLong uMagic,uData,uFlags; - uLong size_filename; - uLong size_extra_field; - int err=UNZ_OK; - - *piSizeVar = 0; - *poffset_local_extrafield = 0; - *psize_local_extrafield = 0; - - if (ZSEEK(s->z_filefunc, s->filestream,s->cur_file_info_internal.offset_curfile + - s->byte_before_the_zipfile,ZLIB_FILEFUNC_SEEK_SET)!=0) - return UNZ_ERRNO; - - - if (err==UNZ_OK) - { - if (unzlocal_getLong(&s->z_filefunc, s->filestream,&uMagic) != UNZ_OK) - err=UNZ_ERRNO; - else if (uMagic!=0x04034b50) - err=UNZ_BADZIPFILE; - } - - if (unzlocal_getShort(&s->z_filefunc, s->filestream,&uData) != UNZ_OK) - err=UNZ_ERRNO; -/* - else if ((err==UNZ_OK) && (uData!=s->cur_file_info.wVersion)) - err=UNZ_BADZIPFILE; -*/ - if (unzlocal_getShort(&s->z_filefunc, s->filestream,&uFlags) != UNZ_OK) - err=UNZ_ERRNO; - - if (unzlocal_getShort(&s->z_filefunc, s->filestream,&uData) != UNZ_OK) - err=UNZ_ERRNO; - else if ((err==UNZ_OK) && (uData!=s->cur_file_info.compression_method)) - err=UNZ_BADZIPFILE; - - if ((err==UNZ_OK) && (s->cur_file_info.compression_method!=0) && - (s->cur_file_info.compression_method!=Z_DEFLATED)) - err=UNZ_BADZIPFILE; - - if (unzlocal_getLong(&s->z_filefunc, s->filestream,&uData) != UNZ_OK) /* date/time */ - err=UNZ_ERRNO; - - if (unzlocal_getLong(&s->z_filefunc, s->filestream,&uData) != UNZ_OK) /* crc */ - err=UNZ_ERRNO; - else if ((err==UNZ_OK) && (uData!=s->cur_file_info.crc) && - ((uFlags & 8)==0)) - err=UNZ_BADZIPFILE; - - if (unzlocal_getLong(&s->z_filefunc, s->filestream,&uData) != UNZ_OK) /* size compr */ - err=UNZ_ERRNO; - else if ((err==UNZ_OK) && (uData!=s->cur_file_info.compressed_size) && - ((uFlags & 8)==0)) - err=UNZ_BADZIPFILE; - - if (unzlocal_getLong(&s->z_filefunc, s->filestream,&uData) != UNZ_OK) /* size uncompr */ - err=UNZ_ERRNO; - else if ((err==UNZ_OK) && (uData!=s->cur_file_info.uncompressed_size) && - ((uFlags & 8)==0)) - err=UNZ_BADZIPFILE; - - - if (unzlocal_getShort(&s->z_filefunc, s->filestream,&size_filename) != UNZ_OK) - err=UNZ_ERRNO; - else if ((err==UNZ_OK) && (size_filename!=s->cur_file_info.size_filename)) - err=UNZ_BADZIPFILE; - - *piSizeVar += (uInt)size_filename; - - if (unzlocal_getShort(&s->z_filefunc, s->filestream,&size_extra_field) != UNZ_OK) - err=UNZ_ERRNO; - *poffset_local_extrafield= s->cur_file_info_internal.offset_curfile + - SIZEZIPLOCALHEADER + size_filename; - *psize_local_extrafield = (uInt)size_extra_field; - - *piSizeVar += (uInt)size_extra_field; - - return err; -} - -/* - Open for reading data the current file in the zipfile. - If there is no error and the file is opened, the return value is UNZ_OK. -*/ -extern int ZEXPORT unzOpenCurrentFile3 (file, method, level, raw, password) - unzFile file; - int* method; - int* level; - int raw; - const char* password; -{ - int err=UNZ_OK; - uInt iSizeVar; - unz_s* s; - file_in_zip_read_info_s* pfile_in_zip_read_info; - uLong offset_local_extrafield; /* offset of the local extra field */ - uInt size_local_extrafield; /* size of the local extra field */ -# ifndef NOUNCRYPT - char source[12]; -# else - if (password != NULL) - return UNZ_PARAMERROR; -# endif - - if (file==NULL) - return UNZ_PARAMERROR; - s=(unz_s*)file; - if (!s->current_file_ok) - return UNZ_PARAMERROR; - - if (s->pfile_in_zip_read != NULL) - unzCloseCurrentFile(file); - - if (unzlocal_CheckCurrentFileCoherencyHeader(s,&iSizeVar, - &offset_local_extrafield,&size_local_extrafield)!=UNZ_OK) - return UNZ_BADZIPFILE; - - pfile_in_zip_read_info = (file_in_zip_read_info_s*) - ALLOC(sizeof(file_in_zip_read_info_s)); - if (pfile_in_zip_read_info==NULL) - return UNZ_INTERNALERROR; - - pfile_in_zip_read_info->read_buffer=(char*)ALLOC(UNZ_BUFSIZE); - pfile_in_zip_read_info->offset_local_extrafield = offset_local_extrafield; - pfile_in_zip_read_info->size_local_extrafield = size_local_extrafield; - pfile_in_zip_read_info->pos_local_extrafield=0; - pfile_in_zip_read_info->raw=raw; - - if (pfile_in_zip_read_info->read_buffer==NULL) - { - TRYFREE(pfile_in_zip_read_info); - return UNZ_INTERNALERROR; - } - - pfile_in_zip_read_info->stream_initialised=0; - - if (method!=NULL) - *method = (int)s->cur_file_info.compression_method; - - if (level!=NULL) - { - *level = 6; - switch (s->cur_file_info.flag & 0x06) - { - case 6 : *level = 1; break; - case 4 : *level = 2; break; - case 2 : *level = 9; break; - } - } - - if ((s->cur_file_info.compression_method!=0) && - (s->cur_file_info.compression_method!=Z_DEFLATED)) - err=UNZ_BADZIPFILE; - - pfile_in_zip_read_info->crc32_wait=s->cur_file_info.crc; - pfile_in_zip_read_info->crc32=0; - pfile_in_zip_read_info->compression_method = - s->cur_file_info.compression_method; - pfile_in_zip_read_info->filestream=s->filestream; - pfile_in_zip_read_info->z_filefunc=s->z_filefunc; - pfile_in_zip_read_info->byte_before_the_zipfile=s->byte_before_the_zipfile; - - pfile_in_zip_read_info->stream.total_out = 0; - - if ((s->cur_file_info.compression_method==Z_DEFLATED) && - (!raw)) - { - pfile_in_zip_read_info->stream.zalloc = (alloc_func)0; - pfile_in_zip_read_info->stream.zfree = (free_func)0; - pfile_in_zip_read_info->stream.opaque = (voidpf)0; - pfile_in_zip_read_info->stream.next_in = (voidpf)0; - pfile_in_zip_read_info->stream.avail_in = 0; - - err=inflateInit2(&pfile_in_zip_read_info->stream, -MAX_WBITS); - if (err == Z_OK) - pfile_in_zip_read_info->stream_initialised=1; - else - { - TRYFREE(pfile_in_zip_read_info); - return err; - } - /* windowBits is passed < 0 to tell that there is no zlib header. - * Note that in this case inflate *requires* an extra "dummy" byte - * after the compressed stream in order to complete decompression and - * return Z_STREAM_END. - * In unzip, i don't wait absolutely Z_STREAM_END because I known the - * size of both compressed and uncompressed data - */ - } - pfile_in_zip_read_info->rest_read_compressed = - s->cur_file_info.compressed_size ; - pfile_in_zip_read_info->rest_read_uncompressed = - s->cur_file_info.uncompressed_size ; - - - pfile_in_zip_read_info->pos_in_zipfile = - s->cur_file_info_internal.offset_curfile + SIZEZIPLOCALHEADER + - iSizeVar; - - pfile_in_zip_read_info->stream.avail_in = (uInt)0; - - s->pfile_in_zip_read = pfile_in_zip_read_info; - -# ifndef NOUNCRYPT - if (password != NULL) - { - int i; - s->pcrc_32_tab = get_crc_table(); - init_keys(password,s->keys,s->pcrc_32_tab); - if (ZSEEK(s->z_filefunc, s->filestream, - s->pfile_in_zip_read->pos_in_zipfile + - s->pfile_in_zip_read->byte_before_the_zipfile, - SEEK_SET)!=0) - return UNZ_INTERNALERROR; - if(ZREAD(s->z_filefunc, s->filestream,source, 12)<12) - return UNZ_INTERNALERROR; - - for (i = 0; i<12; i++) - zdecode(s->keys,s->pcrc_32_tab,source[i]); - - s->pfile_in_zip_read->pos_in_zipfile+=12; - s->encrypted=1; - } -# endif - - - return UNZ_OK; -} - -extern int ZEXPORT unzOpenCurrentFile (file) - unzFile file; -{ - return unzOpenCurrentFile3(file, NULL, NULL, 0, NULL); -} - -extern int ZEXPORT unzOpenCurrentFilePassword (file, password) - unzFile file; - const char* password; -{ - return unzOpenCurrentFile3(file, NULL, NULL, 0, password); -} - -extern int ZEXPORT unzOpenCurrentFile2 (file,method,level,raw) - unzFile file; - int* method; - int* level; - int raw; -{ - return unzOpenCurrentFile3(file, method, level, raw, NULL); -} - -/* - Read bytes from the current file. - buf contain buffer where data must be copied - len the size of buf. - - return the number of byte copied if somes bytes are copied - return 0 if the end of file was reached - return <0 with error code if there is an error - (UNZ_ERRNO for IO error, or zLib error for uncompress error) -*/ -extern int ZEXPORT unzReadCurrentFile (file, buf, len) - unzFile file; - voidp buf; - unsigned len; -{ - int err=UNZ_OK; - uInt iRead = 0; - unz_s* s; - file_in_zip_read_info_s* pfile_in_zip_read_info; - if (file==NULL) - return UNZ_PARAMERROR; - s=(unz_s*)file; - pfile_in_zip_read_info=s->pfile_in_zip_read; - - if (pfile_in_zip_read_info==NULL) - return UNZ_PARAMERROR; - - - if ((pfile_in_zip_read_info->read_buffer == NULL)) - return UNZ_END_OF_LIST_OF_FILE; - if (len==0) - return 0; - - pfile_in_zip_read_info->stream.next_out = (Bytef*)buf; - - pfile_in_zip_read_info->stream.avail_out = (uInt)len; - - if ((len>pfile_in_zip_read_info->rest_read_uncompressed) && - (!(pfile_in_zip_read_info->raw))) - pfile_in_zip_read_info->stream.avail_out = - (uInt)pfile_in_zip_read_info->rest_read_uncompressed; - - if ((len>pfile_in_zip_read_info->rest_read_compressed+ - pfile_in_zip_read_info->stream.avail_in) && - (pfile_in_zip_read_info->raw)) - pfile_in_zip_read_info->stream.avail_out = - (uInt)pfile_in_zip_read_info->rest_read_compressed+ - pfile_in_zip_read_info->stream.avail_in; - - while (pfile_in_zip_read_info->stream.avail_out>0) - { - if ((pfile_in_zip_read_info->stream.avail_in==0) && - (pfile_in_zip_read_info->rest_read_compressed>0)) - { - uInt uReadThis = UNZ_BUFSIZE; - if (pfile_in_zip_read_info->rest_read_compressedrest_read_compressed; - if (uReadThis == 0) - return UNZ_EOF; - if (ZSEEK(pfile_in_zip_read_info->z_filefunc, - pfile_in_zip_read_info->filestream, - pfile_in_zip_read_info->pos_in_zipfile + - pfile_in_zip_read_info->byte_before_the_zipfile, - ZLIB_FILEFUNC_SEEK_SET)!=0) - return UNZ_ERRNO; - if (ZREAD(pfile_in_zip_read_info->z_filefunc, - pfile_in_zip_read_info->filestream, - pfile_in_zip_read_info->read_buffer, - uReadThis)!=uReadThis) - return UNZ_ERRNO; - - -# ifndef NOUNCRYPT - if(s->encrypted) - { - uInt i; - for(i=0;iread_buffer[i] = - zdecode(s->keys,s->pcrc_32_tab, - pfile_in_zip_read_info->read_buffer[i]); - } -# endif - - - pfile_in_zip_read_info->pos_in_zipfile += uReadThis; - - pfile_in_zip_read_info->rest_read_compressed-=uReadThis; - - pfile_in_zip_read_info->stream.next_in = - (Bytef*)pfile_in_zip_read_info->read_buffer; - pfile_in_zip_read_info->stream.avail_in = (uInt)uReadThis; - } - - if ((pfile_in_zip_read_info->compression_method==0) || (pfile_in_zip_read_info->raw)) - { - uInt uDoCopy,i ; - - if ((pfile_in_zip_read_info->stream.avail_in == 0) && - (pfile_in_zip_read_info->rest_read_compressed == 0)) - return (iRead==0) ? UNZ_EOF : iRead; - - if (pfile_in_zip_read_info->stream.avail_out < - pfile_in_zip_read_info->stream.avail_in) - uDoCopy = pfile_in_zip_read_info->stream.avail_out ; - else - uDoCopy = pfile_in_zip_read_info->stream.avail_in ; - - for (i=0;istream.next_out+i) = - *(pfile_in_zip_read_info->stream.next_in+i); - - pfile_in_zip_read_info->crc32 = crc32(pfile_in_zip_read_info->crc32, - pfile_in_zip_read_info->stream.next_out, - uDoCopy); - pfile_in_zip_read_info->rest_read_uncompressed-=uDoCopy; - pfile_in_zip_read_info->stream.avail_in -= uDoCopy; - pfile_in_zip_read_info->stream.avail_out -= uDoCopy; - pfile_in_zip_read_info->stream.next_out += uDoCopy; - pfile_in_zip_read_info->stream.next_in += uDoCopy; - pfile_in_zip_read_info->stream.total_out += uDoCopy; - iRead += uDoCopy; - } - else - { - uLong uTotalOutBefore,uTotalOutAfter; - const Bytef *bufBefore; - uLong uOutThis; - int flush=Z_SYNC_FLUSH; - - uTotalOutBefore = pfile_in_zip_read_info->stream.total_out; - bufBefore = pfile_in_zip_read_info->stream.next_out; - - /* - if ((pfile_in_zip_read_info->rest_read_uncompressed == - pfile_in_zip_read_info->stream.avail_out) && - (pfile_in_zip_read_info->rest_read_compressed == 0)) - flush = Z_FINISH; - */ - err=inflate(&pfile_in_zip_read_info->stream,flush); - - if ((err>=0) && (pfile_in_zip_read_info->stream.msg!=NULL)) - err = Z_DATA_ERROR; - - uTotalOutAfter = pfile_in_zip_read_info->stream.total_out; - uOutThis = uTotalOutAfter-uTotalOutBefore; - - pfile_in_zip_read_info->crc32 = - crc32(pfile_in_zip_read_info->crc32,bufBefore, - (uInt)(uOutThis)); - - pfile_in_zip_read_info->rest_read_uncompressed -= - uOutThis; - - iRead += (uInt)(uTotalOutAfter - uTotalOutBefore); - - if (err==Z_STREAM_END) - return (iRead==0) ? UNZ_EOF : iRead; - if (err!=Z_OK) - break; - } - } - - if (err==Z_OK) - return iRead; - return err; -} - - -/* - Give the current position in uncompressed data -*/ -extern z_off_t ZEXPORT unztell (file) - unzFile file; -{ - unz_s* s; - file_in_zip_read_info_s* pfile_in_zip_read_info; - if (file==NULL) - return UNZ_PARAMERROR; - s=(unz_s*)file; - pfile_in_zip_read_info=s->pfile_in_zip_read; - - if (pfile_in_zip_read_info==NULL) - return UNZ_PARAMERROR; - - return (z_off_t)pfile_in_zip_read_info->stream.total_out; -} - - -/* - return 1 if the end of file was reached, 0 elsewhere -*/ -extern int ZEXPORT unzeof (file) - unzFile file; -{ - unz_s* s; - file_in_zip_read_info_s* pfile_in_zip_read_info; - if (file==NULL) - return UNZ_PARAMERROR; - s=(unz_s*)file; - pfile_in_zip_read_info=s->pfile_in_zip_read; - - if (pfile_in_zip_read_info==NULL) - return UNZ_PARAMERROR; - - if (pfile_in_zip_read_info->rest_read_uncompressed == 0) - return 1; - else - return 0; -} - - - -/* - Read extra field from the current file (opened by unzOpenCurrentFile) - This is the local-header version of the extra field (sometimes, there is - more info in the local-header version than in the central-header) - - if buf==NULL, it return the size of the local extra field that can be read - - if buf!=NULL, len is the size of the buffer, the extra header is copied in - buf. - the return value is the number of bytes copied in buf, or (if <0) - the error code -*/ -extern int ZEXPORT unzGetLocalExtrafield (file,buf,len) - unzFile file; - voidp buf; - unsigned len; -{ - unz_s* s; - file_in_zip_read_info_s* pfile_in_zip_read_info; - uInt read_now; - uLong size_to_read; - - if (file==NULL) - return UNZ_PARAMERROR; - s=(unz_s*)file; - pfile_in_zip_read_info=s->pfile_in_zip_read; - - if (pfile_in_zip_read_info==NULL) - return UNZ_PARAMERROR; - - size_to_read = (pfile_in_zip_read_info->size_local_extrafield - - pfile_in_zip_read_info->pos_local_extrafield); - - if (buf==NULL) - return (int)size_to_read; - - if (len>size_to_read) - read_now = (uInt)size_to_read; - else - read_now = (uInt)len ; - - if (read_now==0) - return 0; - - if (ZSEEK(pfile_in_zip_read_info->z_filefunc, - pfile_in_zip_read_info->filestream, - pfile_in_zip_read_info->offset_local_extrafield + - pfile_in_zip_read_info->pos_local_extrafield, - ZLIB_FILEFUNC_SEEK_SET)!=0) - return UNZ_ERRNO; - - if (ZREAD(pfile_in_zip_read_info->z_filefunc, - pfile_in_zip_read_info->filestream, - buf,read_now)!=read_now) - return UNZ_ERRNO; - - return (int)read_now; -} - -/* - Close the file in zip opened with unzipOpenCurrentFile - Return UNZ_CRCERROR if all the file was read but the CRC is not good -*/ -extern int ZEXPORT unzCloseCurrentFile (file) - unzFile file; -{ - int err=UNZ_OK; - - unz_s* s; - file_in_zip_read_info_s* pfile_in_zip_read_info; - if (file==NULL) - return UNZ_PARAMERROR; - s=(unz_s*)file; - pfile_in_zip_read_info=s->pfile_in_zip_read; - - if (pfile_in_zip_read_info==NULL) - return UNZ_PARAMERROR; - - - if ((pfile_in_zip_read_info->rest_read_uncompressed == 0) && - (!pfile_in_zip_read_info->raw)) - { - if (pfile_in_zip_read_info->crc32 != pfile_in_zip_read_info->crc32_wait) - err=UNZ_CRCERROR; - } - - - TRYFREE(pfile_in_zip_read_info->read_buffer); - pfile_in_zip_read_info->read_buffer = NULL; - if (pfile_in_zip_read_info->stream_initialised) - inflateEnd(&pfile_in_zip_read_info->stream); - - pfile_in_zip_read_info->stream_initialised = 0; - TRYFREE(pfile_in_zip_read_info); - - s->pfile_in_zip_read=NULL; - - return err; -} - - -/* - Get the global comment string of the ZipFile, in the szComment buffer. - uSizeBuf is the size of the szComment buffer. - return the number of byte copied or an error code <0 -*/ -extern int ZEXPORT unzGetGlobalComment (file, szComment, uSizeBuf) - unzFile file; - char *szComment; - uLong uSizeBuf; -{ - unz_s* s; - uLong uReadThis ; - if (file==NULL) - return UNZ_PARAMERROR; - s=(unz_s*)file; - - uReadThis = uSizeBuf; - if (uReadThis>s->gi.size_comment) - uReadThis = s->gi.size_comment; - - if (ZSEEK(s->z_filefunc,s->filestream,s->central_pos+22,ZLIB_FILEFUNC_SEEK_SET)!=0) - return UNZ_ERRNO; - - if (uReadThis>0) - { - *szComment='\0'; - if (ZREAD(s->z_filefunc,s->filestream,szComment,uReadThis)!=uReadThis) - return UNZ_ERRNO; - } - - if ((szComment != NULL) && (uSizeBuf > s->gi.size_comment)) - *(szComment+s->gi.size_comment)='\0'; - return (int)uReadThis; -} - -/* Additions by RX '2004 */ -extern uLong ZEXPORT unzGetOffset (file) - unzFile file; -{ - unz_s* s; - - if (file==NULL) - return UNZ_PARAMERROR; - s=(unz_s*)file; - if (!s->current_file_ok) - return 0; - if (s->gi.number_entry != 0 && s->gi.number_entry != 0xffff) - if (s->num_file==s->gi.number_entry) - return 0; - return s->pos_in_central_dir; -} - -extern int ZEXPORT unzSetOffset (file, pos) - unzFile file; - uLong pos; -{ - unz_s* s; - int err; - - if (file==NULL) - return UNZ_PARAMERROR; - s=(unz_s*)file; - - s->pos_in_central_dir = pos; - s->num_file = s->gi.number_entry; /* hack */ - err = unzlocal_GetCurrentFileInfoInternal(file,&s->cur_file_info, - &s->cur_file_info_internal, - NULL,0,NULL,0,NULL,0); - s->current_file_ok = (err == UNZ_OK); - return err; -} diff --git a/source/utils/unzip/unzip.h b/source/utils/unzip/unzip.h deleted file mode 100644 index c3206a0..0000000 --- a/source/utils/unzip/unzip.h +++ /dev/null @@ -1,354 +0,0 @@ -/* unzip.h -- IO for uncompress .zip files using zlib - Version 1.01e, February 12th, 2005 - - Copyright (C) 1998-2005 Gilles Vollant - - This unzip package allow extract file from .ZIP file, compatible with PKZip 2.04g - WinZip, InfoZip tools and compatible. - - Multi volume ZipFile (span) are not supported. - Encryption compatible with pkzip 2.04g only supported - Old compressions used by old PKZip 1.x are not supported - - - I WAIT FEEDBACK at mail info@winimage.com - Visit also http://www.winimage.com/zLibDll/unzip.htm for evolution - - Condition of use and distribution are the same than zlib : - - This software is provided 'as-is', without any express or implied - warranty. In no event will the authors be held liable for any damages - arising from the use of this software. - - Permission is granted to anyone to use this software for any purpose, - including commercial applications, and to alter it and redistribute it - freely, subject to the following restrictions: - - 1. The origin of this software must not be misrepresented; you must not - claim that you wrote the original software. If you use this software - in a product, an acknowledgment in the product documentation would be - appreciated but is not required. - 2. Altered source versions must be plainly marked as such, and must not be - misrepresented as being the original software. - 3. This notice may not be removed or altered from any source distribution. - - -*/ - -/* for more info about .ZIP format, see - http://www.info-zip.org/pub/infozip/doc/appnote-981119-iz.zip - http://www.info-zip.org/pub/infozip/doc/ - PkWare has also a specification at : - ftp://ftp.pkware.com/probdesc.zip -*/ - -#ifndef _unz_H -#define _unz_H - -#ifdef __cplusplus -extern "C" { -#endif - -#ifndef _ZLIB_H -#include "zlib.h" -#endif - -#ifndef _ZLIBIOAPI_H -#include "ioapi.h" -#endif - -#if defined(STRICTUNZIP) || defined(STRICTZIPUNZIP) -/* like the STRICT of WIN32, we define a pointer that cannot be converted - from (void*) without cast */ -typedef struct TagunzFile__ { int unused; } unzFile__; -typedef unzFile__ *unzFile; -#else -typedef voidp unzFile; -#endif - - -#define UNZ_OK (0) -#define UNZ_END_OF_LIST_OF_FILE (-100) -#define UNZ_ERRNO (Z_ERRNO) -#define UNZ_EOF (0) -#define UNZ_PARAMERROR (-102) -#define UNZ_BADZIPFILE (-103) -#define UNZ_INTERNALERROR (-104) -#define UNZ_CRCERROR (-105) - -/* tm_unz contain date/time info */ -typedef struct tm_unz_s -{ - uInt tm_sec; /* seconds after the minute - [0,59] */ - uInt tm_min; /* minutes after the hour - [0,59] */ - uInt tm_hour; /* hours since midnight - [0,23] */ - uInt tm_mday; /* day of the month - [1,31] */ - uInt tm_mon; /* months since January - [0,11] */ - uInt tm_year; /* years - [1980..2044] */ -} tm_unz; - -/* unz_global_info structure contain global data about the ZIPfile - These data comes from the end of central dir */ -typedef struct unz_global_info_s -{ - uLong number_entry; /* total number of entries in - the central dir on this disk */ - uLong size_comment; /* size of the global comment of the zipfile */ -} unz_global_info; - - -/* unz_file_info contain information about a file in the zipfile */ -typedef struct unz_file_info_s -{ - uLong version; /* version made by 2 bytes */ - uLong version_needed; /* version needed to extract 2 bytes */ - uLong flag; /* general purpose bit flag 2 bytes */ - uLong compression_method; /* compression method 2 bytes */ - uLong dosDate; /* last mod file date in Dos fmt 4 bytes */ - uLong crc; /* crc-32 4 bytes */ - uLong compressed_size; /* compressed size 4 bytes */ - uLong uncompressed_size; /* uncompressed size 4 bytes */ - uLong size_filename; /* filename length 2 bytes */ - uLong size_file_extra; /* extra field length 2 bytes */ - uLong size_file_comment; /* file comment length 2 bytes */ - - uLong disk_num_start; /* disk number start 2 bytes */ - uLong internal_fa; /* internal file attributes 2 bytes */ - uLong external_fa; /* external file attributes 4 bytes */ - - tm_unz tmu_date; -} unz_file_info; - -extern int ZEXPORT unzStringFileNameCompare OF ((const char* fileName1, - const char* fileName2, - int iCaseSensitivity)); -/* - Compare two filename (fileName1,fileName2). - If iCaseSenisivity = 1, comparision is case sensitivity (like strcmp) - If iCaseSenisivity = 2, comparision is not case sensitivity (like strcmpi - or strcasecmp) - If iCaseSenisivity = 0, case sensitivity is defaut of your operating system - (like 1 on Unix, 2 on Windows) -*/ - - -extern unzFile ZEXPORT unzOpen OF((const char *path)); -/* - Open a Zip file. path contain the full pathname (by example, - on a Windows XP computer "c:\\zlib\\zlib113.zip" or on an Unix computer - "zlib/zlib113.zip". - If the zipfile cannot be opened (file don't exist or in not valid), the - return value is NULL. - Else, the return value is a unzFile Handle, usable with other function - of this unzip package. -*/ - -extern unzFile ZEXPORT unzOpen2 OF((const char *path, - zlib_filefunc_def* pzlib_filefunc_def)); -/* - Open a Zip file, like unzOpen, but provide a set of file low level API - for read/write the zip file (see ioapi.h) -*/ - -extern int ZEXPORT unzClose OF((unzFile file)); -/* - Close a ZipFile opened with unzipOpen. - If there is files inside the .Zip opened with unzOpenCurrentFile (see later), - these files MUST be closed with unzipCloseCurrentFile before call unzipClose. - return UNZ_OK if there is no problem. */ - -extern int ZEXPORT unzGetGlobalInfo OF((unzFile file, - unz_global_info *pglobal_info)); -/* - Write info about the ZipFile in the *pglobal_info structure. - No preparation of the structure is needed - return UNZ_OK if there is no problem. */ - - -extern int ZEXPORT unzGetGlobalComment OF((unzFile file, - char *szComment, - uLong uSizeBuf)); -/* - Get the global comment string of the ZipFile, in the szComment buffer. - uSizeBuf is the size of the szComment buffer. - return the number of byte copied or an error code <0 -*/ - - -/***************************************************************************/ -/* Unzip package allow you browse the directory of the zipfile */ - -extern int ZEXPORT unzGoToFirstFile OF((unzFile file)); -/* - Set the current file of the zipfile to the first file. - return UNZ_OK if there is no problem -*/ - -extern int ZEXPORT unzGoToNextFile OF((unzFile file)); -/* - Set the current file of the zipfile to the next file. - return UNZ_OK if there is no problem - return UNZ_END_OF_LIST_OF_FILE if the actual file was the latest. -*/ - -extern int ZEXPORT unzLocateFile OF((unzFile file, - const char *szFileName, - int iCaseSensitivity)); -/* - Try locate the file szFileName in the zipfile. - For the iCaseSensitivity signification, see unzStringFileNameCompare - - return value : - UNZ_OK if the file is found. It becomes the current file. - UNZ_END_OF_LIST_OF_FILE if the file is not found -*/ - - -/* ****************************************** */ -/* Ryan supplied functions */ -/* unz_file_info contain information about a file in the zipfile */ -typedef struct unz_file_pos_s -{ - uLong pos_in_zip_directory; /* offset in zip file directory */ - uLong num_of_file; /* # of file */ -} unz_file_pos; - -extern int ZEXPORT unzGetFilePos( - unzFile file, - unz_file_pos* file_pos); - -extern int ZEXPORT unzGoToFilePos( - unzFile file, - unz_file_pos* file_pos); - -/* ****************************************** */ - -extern int ZEXPORT unzGetCurrentFileInfo OF((unzFile file, - unz_file_info *pfile_info, - char *szFileName, - uLong fileNameBufferSize, - void *extraField, - uLong extraFieldBufferSize, - char *szComment, - uLong commentBufferSize)); -/* - Get Info about the current file - if pfile_info!=NULL, the *pfile_info structure will contain somes info about - the current file - if szFileName!=NULL, the filemane string will be copied in szFileName - (fileNameBufferSize is the size of the buffer) - if extraField!=NULL, the extra field information will be copied in extraField - (extraFieldBufferSize is the size of the buffer). - This is the Central-header version of the extra field - if szComment!=NULL, the comment string of the file will be copied in szComment - (commentBufferSize is the size of the buffer) -*/ - -/***************************************************************************/ -/* for reading the content of the current zipfile, you can open it, read data - from it, and close it (you can close it before reading all the file) - */ - -extern int ZEXPORT unzOpenCurrentFile OF((unzFile file)); -/* - Open for reading data the current file in the zipfile. - If there is no error, the return value is UNZ_OK. -*/ - -extern int ZEXPORT unzOpenCurrentFilePassword OF((unzFile file, - const char* password)); -/* - Open for reading data the current file in the zipfile. - password is a crypting password - If there is no error, the return value is UNZ_OK. -*/ - -extern int ZEXPORT unzOpenCurrentFile2 OF((unzFile file, - int* method, - int* level, - int raw)); -/* - Same than unzOpenCurrentFile, but open for read raw the file (not uncompress) - if raw==1 - *method will receive method of compression, *level will receive level of - compression - note : you can set level parameter as NULL (if you did not want known level, - but you CANNOT set method parameter as NULL -*/ - -extern int ZEXPORT unzOpenCurrentFile3 OF((unzFile file, - int* method, - int* level, - int raw, - const char* password)); -/* - Same than unzOpenCurrentFile, but open for read raw the file (not uncompress) - if raw==1 - *method will receive method of compression, *level will receive level of - compression - note : you can set level parameter as NULL (if you did not want known level, - but you CANNOT set method parameter as NULL -*/ - - -extern int ZEXPORT unzCloseCurrentFile OF((unzFile file)); -/* - Close the file in zip opened with unzOpenCurrentFile - Return UNZ_CRCERROR if all the file was read but the CRC is not good -*/ - -extern int ZEXPORT unzReadCurrentFile OF((unzFile file, - voidp buf, - unsigned len)); -/* - Read bytes from the current file (opened by unzOpenCurrentFile) - buf contain buffer where data must be copied - len the size of buf. - - return the number of byte copied if somes bytes are copied - return 0 if the end of file was reached - return <0 with error code if there is an error - (UNZ_ERRNO for IO error, or zLib error for uncompress error) -*/ - -extern z_off_t ZEXPORT unztell OF((unzFile file)); -/* - Give the current position in uncompressed data -*/ - -extern int ZEXPORT unzeof OF((unzFile file)); -/* - return 1 if the end of file was reached, 0 elsewhere -*/ - -extern int ZEXPORT unzGetLocalExtrafield OF((unzFile file, - voidp buf, - unsigned len)); -/* - Read extra field from the current file (opened by unzOpenCurrentFile) - This is the local-header version of the extra field (sometimes, there is - more info in the local-header version than in the central-header) - - if buf==NULL, it return the size of the local extra field - - if buf!=NULL, len is the size of the buffer, the extra header is copied in - buf. - the return value is the number of bytes copied in buf, or (if <0) - the error code -*/ - -/***************************************************************************/ - -/* Get the current file offset */ -extern uLong ZEXPORT unzGetOffset (unzFile file); - -/* Set the current file offset */ -extern int ZEXPORT unzSetOffset (unzFile file, uLong pos); - - - -#ifdef __cplusplus -} -#endif - -#endif /* _unz_H */ diff --git a/source/vbagx.cpp b/source/vbagx.cpp index a7d8e84..66727b6 100644 --- a/source/vbagx.cpp +++ b/source/vbagx.cpp @@ -15,7 +15,6 @@ #include #include #include -#include #include #include @@ -163,7 +162,7 @@ void ShutdownCB() { ShutdownRequested = 1; } -void ResetCB() +void ResetCB(u32 irq, void *ctx) { ResetRequested = 1; } @@ -273,7 +272,7 @@ bool SaneIOS(u32 ios) static bool gecko = false; static mutex_t gecko_mutex = 0; -static ssize_t __out_write(struct _reent *r, void* fd, const char *ptr, size_t len) +static ssize_t __out_write(struct _reent *r, int fd, const char *ptr, size_t len) { if (!gecko || len == 0) return len; @@ -365,12 +364,10 @@ int main(int argc, char *argv[]) SYS_SetPowerCallback(ShutdownCB); SYS_SetResetCallback(ResetCB); - WUPC_Init(); WPAD_Init(); WPAD_SetPowerButtonCallback((WPADShutdownCallback)ShutdownCB); DI_Init(); USBStorage_Initialize(); - StartNetworkThread(); #else DVD_Init (); // Initialize DVD subsystem (GameCube only) #endif diff --git a/source/vbasupport.cpp b/source/vbasupport.cpp index dbddeae..9d86704 100644 --- a/source/vbasupport.cpp +++ b/source/vbasupport.cpp @@ -33,7 +33,6 @@ #include "preferences.h" #include "fastmath.h" #include "utils/pngu.h" -#include "utils/unzip/unzip.h" #include "vba/Util.h" #include "vba/common/Port.h"