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;
}
Pues usa la función dos
Pues usa la función dos veces: