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
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...
By Aitor
Entonces con tu libreria puedo copiar directamente toda la flash0 por ejemplo sin tener que escribir archivo por archivo?
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]
Un saludo
http://www.mhypnok.blogspot.com/
Gracias a Dark_AleX, Total_Noob, VirtuousFlame, Coldbird, Codestation...
By Aitor
Muchas gracias. "Jugaré" un poco con los código s antes de ponerlos en uso.