Anuncios Google

funcion de ms a flash0

este es el main.c  pero solo copia un archivo a la flash0 que funcion hay que anadirle para que copie en vez de un archivo copie dos archivos????????????

 

 

 

 

 

 

 

 

#include <pspkernel.h>
#include <pspdebug.h>

//ponemos nuestro programa en modo VSH
PSP_MODULE_INFO("FlashWriter", 0x800, 2, 0);
PSP_MAIN_THREAD_ATTR(PSP_THREAD_ATTR_VSH);

//para poner la ruta de origen y destino
#define ORIGEN "ms0:/f/vshctrl.prx, ms0:/f/recovery.prx"
#define ORIGEN "ms0:/f/recovery.prx"
//"ms0:/poner/aqui/la/ruta/al/archivo.ext" //ejemplo ms0:/f/vshctrl.prx, ms0:/f/recovery.prx"
#define DESTINO"flash0:/kd/vshctrl.prx, flash0:/kd/recovery.prx" //"flash0:/poner/aqui/la/ruta/al/archivo.ext" //ejemplo flash0:/kd/vshctrl.prx, flash0:/kd/recovery.prx
//variable para utilizarla como buffer de escritura
char write_buffer[128*1024];

//funcion que realiza la copia del archivo
int write_file(const char *read_loc, const char *write_loc)
    {
        int fdin; //para manejar el descriptor del archivo origen
        int fdout; //para manejar el descriptor del archivo destino
       
         //abrimos el archivo origen
        fdin = sceIoOpen(read_loc, PSP_O_RDONLY, 0777);
        if(fdin >= 0)
            {
                //si se abrio el archivo origen, intentamos abrir el archivo destino, creandolo si no existe
                int bytesRead = 2; /*para controlar cuantos bytes se han leido del archivo origen
                                     y saber cuantos se van a escribir en el archivo destino,
                                     escribiremos la misma cantidad que hemos leido*/
               
                //abrimos el archivo destino
                fdout = sceIoOpen(write_loc, PSP_O_WRONLY | PSP_O_CREAT, 0777);
                if(fdout < 0)
                    {
                        //si no se pudo abrir el archivo destino
                        pspDebugScreenPrintf(" No se pudo abrir %s\n", write_loc);
                        return -2;
                    }
               
                /*leemos del archivo origen, guardamos lo leido en el buffer de escritura y la cantidad
                  de bytes leidas en bytesRead*/
                bytesRead = sceIoRead(fdin, write_buffer, sizeof(write_buffer));
               
                //este ciclo se repetira mientras queden bytes por leer del archivo origen y se pueda escribir en destino
                while((bytesRead > 0) && (fdout >= 0))
                    {
                        sceIoWrite(fdout, write_buffer, bytesRead);
                        bytesRead = sceIoRead(fdin, write_buffer, sizeof(write_buffer));
                    }

                if(fdout >= 0)
                    {
                        //si todo ha ido bien, entonces cerramos el archivo destino
                        sceIoClose(fdout);
                    }

                if(fdin >= 0)
                    {
                        //cerramos el archivo origen
                        sceIoClose(fdin);
                    }
            }
        else
            {
                //si no se pudo abrir el archivo origen
                pspDebugScreenPrintf(" No se pudo abrir %s\n", read_loc);
                return -1;
            }
       
        //si todo ha ido bien llegaremos hasta aqui y devolvemos cero, indicando que todo ha sido correcto
        return 0;
           
    }

//funcion principal   
int main(int argc, char* argv[])
    {
        pspDebugScreenInit();
       
        int result;
       
        /*desasignamos la flash0
          esto lo hacemos para luego reasignarla
          con los permisos de escritura */
        result = sceIoUnassign("flash0:");
        if(result < 0)
            {
                //si hubo error al tratar de desasignar la flash0
                pspDebugScreenPrintf("Error desasignando la flash0");
            }
        else
            {
                //reasignamos la flash con permisos de escritura
                result = sceIoAssign("flash0:", "lflash0:0,0", "flashfat0:", IOASSIGN_RDWR, NULL, 0);
                if(result < 0)
                    {
                        //si no se pudo asignar los permisos de escritura
                        pspDebugScreenPrintf("Error asignando la flash0 para escritura");
                    }
                else
                    {
                        /*si todo ha ido bien llegamos a esta parte
                          aqui es donde llamamos a la funcion que copia
                          el archivo desde una ubicacion a otra */
                        pspDebugScreenPrintf("flashing......\n");
                        result = write_file(ORIGEN, DESTINO);
                        if(result>=0)
                            {
                                //si no hubo errores en el proceso de escritura
                                pspDebugScreenPrintf("done\n");
                            }
                    }
            }
        //hemos terminado, pausamos unos segundos para poder leer los letreros
        sceKernelDelayThread(6000000);

        //salimos al XMB
        sceKernelExitGame();
        return 0;
    }


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

Pues usa la función dos

Pues usa la función dos veces:

write_file(ORIGEN, DESTINO);
write_file(ORIGEN2, DESTINO2);

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.