Anuncios Google

[C][Tutorial]Sample Descompresor De Archivos Zip's

Bueno, esta compuesto del main.c y del Makefile, necesitareis descargar las librerias desde aqui, tabien incluyo todo el Src y ell codigo compilado en este enlace:

http://www.mediafire.com/?dsdgyrs1omt - Descargar Sources

Main.c


/*
    Sample Zip Unconpressor

Autor: Gladiator
Fecha:  22/5/08
*/

//Incluimos las librerias  necesarias
#include <pspdebug.h>
#include <pspkernel.h>
#include <pspctrl.h>
#include <pspsdk.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <errno.h>
#include <fcntl.h>
#include <unistd.h>
#include <utime.h>
#include "unzip/unzip.h"
#include "unzip/extract.h"

PSP_MODULE_INFO("Sample Zip Uncompressor", 1, 0, 0);//Establecemos el nombre y la version del homebrew 
PSP_MAIN_THREAD_ATTR(0);//Establecemos el modo en el cual estara hecho el homebrew

#define Salir sceKernelExitGame//Resumimos las funciones en Salir, Color, Limpiar y Texto
#define Color pspDebugScreenSetTextColor
#define Limpiar pspDebugScreenClear
#define Texto pspDebugScreenPrintf

int CheckFile(const char *filename)//Funcion para analizar si existe el archivo, si no existe sale, si existe, lo descomprime
{// abrimos la funcion de analizar el archivo
    SceUID file = sceIoOpen("Archivo.zip", PSP_O_RDONLY, 0);//abre el archivo
    if (file < 0)// si el file es menor que cero, no existe
    {//abrimos el if
             Limpiar();//Limpia la pantalla
             Color(0x0000FF);// Color Rojo
             Texto("El archivo `` %s ´´ no se encuentra en su sitio, saliendo en 5 segundos...\n", filename);//Imprime Texto en pantalla, "%s" quiere decir que msotrara lo que valga "filename"
             sceIoClose(file);//Al intentar abrir el archivo, si no puede al final debe cerrarlo
             sceKernelDelayThread(5*1000*1000);//Retardo de 5 segundos
             Salir();//Sale al Xmb
             return 0;
    }//Cerramos el if
    else// si no es menor que cero, si existe
    {//abrimos el E
        Uncompress();//accede a la funcion incompress
        return 1;
    }//Cerramos el Else
}//Cerramos la funcion de analizar el archivo
void Uncompress(argc,argv)//nuestra funcion de descomprimir
{//Abrimos el void de descompresion
Limpiar();
Texto("Descomprimiendo Archivo, espere...");    
char *zipfilename= "Archivo.zip";//Establecce el nombre y la ruta del archivo
char *password=NULL;//Establece con Null que el archivo no tiene contraseña
int opt_do_extract_withoutpath=0;
int opt_overwrite=0;
unzFile uf=NULL;
uf = unzOpen(zipfilename);
do_extract(uf,opt_do_extract_withoutpath,opt_overwrite,NULL);
unzCloseCurrentFile(uf); // cierra el archivo una vez descomprimido
Limpiar(); //Limpia la pantalla
Texto("Archivo descomprimido con Exito!");//imprime texto en pantalla
sceKernelDelayThread(2*1000*1000);//Retardo de tiempo de 2 segundos
Salir();//Saldra cuando se completa la descompresion y pasan 2 segundos

} //Cerramos nuestra funcion Uncompress
int main()//Comenzamos a definir la funcion principal de nuestro programa, la funcion "Main"
{//Abrimos el main
     pspDebugScreenInit();//Iniciamos la pantalla para poder escribir en ella
     SceCtrlData currentPad, lastPad;//Creamos las variables del Pad, CurrentPad y LastPad
     Color(0xc00000);//Establecemos el Color c00000 hexadecimal
     Texto("Pulsa X para Salir, y O para descomprimir el archivo Zip ``Archivo.zip´´");//Imprimimos en pantalla letras mediante la funcion Texto
    
     while(1)//Comenzamos el Bucle While
     {//Empezamos aqui con el while
             sceCtrlReadBufferPositive(&currentPad, 1);//Buffer de botones
            
       if(currentPad.Buttons != lastPad.Buttons)
       {
       lastPad = currentPad; 
           
         if(currentPad.Buttons & PSP_CTRL_CROSS)//Establece si pulsamos Equis lo que hara
         {//Abrimos este IF de Equis
                    Limpiar();//Se limpiara la pantalla
                    Color(0x000000);//se establece el color hexadecimal 000000
                    Texto("\n Saliendo, espere...");//Se imprime Texto en Pantalla
                    Salir();//y salimos mediante nuestra funcion abreviada a Salir
         }//Cerramos si pulsamos x pasara esto
         if(currentPad.Buttons & PSP_CTRL_CIRCLE)
         {//Abrimos el If del circulo
          CheckFile("Archivo.zip");//se checkea si existe el archivo o no, si existe, se va a descomprimir el archivo, sino sale                
         }//Cerramos el If del circulo
       }
    }//Cerramos el bucle While
        
sceKernelSleepThread();// Y para cerrar esto junto con Return 0;   
return 0;
}//Cerramos el main

Makefile


TARGET = Sample
OBJS = main.o unzip/unzip.o unzip/ioapi.o unzip/mztools.o unzip/zip.o unzip/extract.o

INCDIR =
CFLAGS = -G4 -Wall -O3 -I/usr/local/pspdev/psp/include/SDL
CXXFLAGS = $(CFLAGS) -fno-exceptions -fno-rtti
ASFLAGS = $(CFLAGS)

PSPSDK=$(shell psp-config --pspsdk-path)
PSPBIN = $(PSPSDK)/../bin

LIBDIR =
LDFLAGS =
STDLIBS= -lz -lpspsdk -lpspctrl -lpsprtc -lpsppower -lpspgu -lpspaudiolib -lpspaudio -lpsphprm
LIBS=$(STDLIBS)$(YOURLIBS)

EXTRA_TARGETS = EBOOT.PBP
PSP_EBOOT_TITLE = Sample

PSPSDK=$(shell psp-config --pspsdk-path)
DEFAULT_CFLAGS = $(shell $(SDL_CONFIG) --cflags)
include $(PSPSDK)/lib/build.mak

 

Saludos
Gdt


Anuncios Google

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de Chiri_13

Este tutorial es de otra web,

Este tutorial es de otra web, lo has copiado literalmente y no creo que el autor te haya dado permiso...

que tal !!

disculpa donde puedo encontrar las librerias para descomprimir !!

 

gracias !

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.