Anuncios Google

Duda en C

Bueno estoy creando un HB en C y quisiera saber si el siguiente codigo se puede invertir:

// Escribe un archivo desde la ms a la flash0 //
// Ejemplo: writetoflash0("ms0:/file.txt","flash0:/file.txt") //
 
void writetoflash0(const char *origen, const char *destino) {
 
char write_buffer[128*1024];
sceIoUnassign("flash0:");
sceIoAssign("flash0:", "lflash0:0,0", "flashfat0:", IOASSIGN_RDWR, NULL, 0);
int primero;
int segundo;
 
primero = open(origen, PSP_O_RDONLY, 0777);
if(primero <0>= 0)
{
 
int bytesleidos = 1;
segundo = open(destino, PSP_O_WRONLY | PSP_O_CREAT | PSP_O_TRUNC, 0777);
bytesleidos = read(primero, write_buffer, sizeof(write_buffer));
while((bytesleidos > 0) && (segundo >= 0))
{
write(segundo, write_buffer, bytesleidos);
bytesleidos = read(primero, write_buffer, sizeof(write_buffer));
 
}
 
if(segundo >= 0)
{
close(segundo);
}
 
if(primero >= 0)
{
close(primero);
}
 
}
 
} 

 

Para escribir archivos de cualquier flash en la MS, esta acción conocida como Dump.

 

PS: En caso de no ser posible, ¿me podrían pasar el código para realizar un dump?


Sígueme en Twitter: @Aitor_db


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 dj51_Shura

Aver...

hace ya *uff* que no programo para la PSP (rectifico: las idioteces que hacía) pero eso podrías hacerlo de la siguiente manera (si es un dump lo que quieres):

1. Listas todos los elementos, esto lo puedes hacer con la función scandir() en el unistd.h o con las funciones ioNumdir() e ioEledir(), ambas en mi librería IO Utilities (busca por ahí; de todas formas, estoy haciendo una nueva versión xD).

2. Vas copiándolos todos, esto podrías hacerlo con la función ioCopy() de mi librería antes mencionada. Viva la publicidad... Con esa función no has de preocuparte de si son archivos o directorios; la función hace una cosa u otra en función de lo que sea.

Y yastá... el código... pues tendrás que apañártelas, porque yo ahora estoy trabajando en esa misma librería (pronto sacaré muchas mejoras y una documentación respetable) y no tengo tiempo. No puedo hacerte un código con funciones de una librería que está constantemente cambiando.

Un saludo y suerte!


http://www.mhypnok.blogspot.com/

Gracias a Dark_AleX, Total_Noob, VirtuousFlame, Coldbird, Codestation...

Imagen de AitorDB

By Aitor

Entonces con tu libreria puedo copiar directamente toda la flash0 por ejemplo sin tener que escribir archivo por archivo?

Imagen de dj51_Shura

No hay ninguna función explícita,

pero con las funciones de listado y la documentación, además de un bucle for, no sería difícil.

De todas formas, haz primero tus prácticas...

O, si te parece complicado, pues copiar individualmente cada carpeta con la función ioCopy() o ioCopyDirectory(), y te ahorras bucles. Más o menos así:

[EDITADO]

ioCopyDirectory("flash0:/vsh", "ms0:/F0DUMP/vsh", OVW, 2048);
ioCopyDirectory("flash0:/etc", "ms0:/F0DUMP/etc", OVW, 2048);
ioCopyDirectory("flash0:/carpeta1", "ms0:/F0DUMP/carpeta1", OVW, 2048);
ioCopyDirectory("flash0:/carpeta2", "ms0:/F0DUMP/carpeta2", OVW, 2048);
// etc etc ...

Un saludo


http://www.mhypnok.blogspot.com/

Gracias a Dark_AleX, Total_Noob, VirtuousFlame, Coldbird, Codestation...

Imagen de AitorDB

By Aitor

Muchas gracias. "Jugaré" un poco con los código s antes de ponerlos en uso.

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.