› Foros › PlayStation 3 › Scene
To access to NTFS device, for file operations you must use this functions:
int ps3ntfs_open(const char *path, int flags, int mode); // flags: O_RDONLY... mode: 0777
int ps3ntfs_close(int fd);
int ps3ntfs_write(int fd, const char *ptr, size_t len);
int ps3ntfs_read(int fd, char *ptr, size_t len);
off_t ps3ntfs_seek(int fd, off_t pos, int dir);
s64 ps3ntfs_seek64(int fd, s64 pos, int dir); // 64 bits version for large files
int ps3ntfs_fstat(int fd, struct stat *st);
int ps3ntfs_stat(const char *file, struct stat *st);
int ps3ntfs_link(const char *existing, const char *newLink);
int ps3ntfs_unlink(const char *name); // for files and folders
int ps3ntfs_rename(const char *oldName, const char *newName);
int ps3ntfs_mkdir(const char *path, int mode);
DIR_ITER* ps3ntfs_diropen(const char *path);
int ps3ntfs_dirreset(DIR_ITER *dirState);
int ps3ntfs_dirnext(DIR_ITER *dirState, char *filename, struct stat *filestat);
int ps3ntfs_dirclose(DIR_ITER *dirState);
NTFS path must be absolute (with device/unit name). NTFS units can be accessed using "ntfsX:" or "/ntfsX:" (X = is the unit number).
Also i have implemented in this functions support for PS3 internal devices as "/dev_hdd", "/dev_usb000" using
LV2 syscalls
Examples:
// NTFS operation to write
int fd = ps3ntfs_open("ntfs0:/text.txt", O_CREAT | O_WRONLY | O_TRUNC, 0777);
if(fd < 0) error(fd);
-------------------
// EXT operation to write
int fd = ps3ntfs_open("ext0:/text.txt", O_CREAT | O_WRONLY | O_TRUNC, 0777);
if(fd < 0) error(fd);
-------------------
// FAT operation to write (from internal device)
int fd = ps3ntfs_open("/dev_usb000/text.txt", O_CREAT | O_WRONLY | O_TRUNC, 0777);
if(fd < 0) error(fd);
-------------------
// NTFS operation to read
int fd = ps3ntfs_open("ntfs0:/text.txt", O_RDONLY, 0);
if(fd < 0) error(fd);
/***********************************************************************************************************/
/***********************************************************************************************************/
Exceptions:
ps3ntfs_chdir() -> is not supported because the paths must be absolute
ps3ntfs_statvfs() -> is only supported for NTFS devices (for internal devices uses sysFsGetFreeSize() function)
ps3ntfs_dirreset() -> is only supported for NTFS devices
1985a escribió:Yo solo puedo felicitarte a ti y los demás desarrolladores. que hacen posible dar vida al ps3.
Lamentablemente, todos mis disco están en formato ext4, tenia un fat32 de 500GB, pero lo vendí y le puse 1TB interno al ps3.
Espero que la gente aquí se anime, y copie muchos archivos de diferentes tamaños y cantidades para ver el comportamiento del mismo.
Isma_OMG escribió:Casi lloro de la emocion al ver el titulo, desde luego no podia ser otro el que hiciese algo asi ^^.
Mi felicitaciones maquina.
Solo una idea, no quiero que parezca una peticion ni nada por el estilo, es solo una idea que me ha venido a la cabeza cuando he leido el hilo y te lo consulto.
Lo ideal seria crear un sprx o algun ejecutable por el estilo, reconocible por el sistema y que de esta manera pudieramos usar los dispositivos en el XMB tambien no?
Mas aun pudiendo ejecutar "plugins" en segundo plano, bien sea con el CORE (en los MLT) o con el PRX Launcher.
¿Cabria esa posibilidad, o es algo imposible?
Solo es por resolver la duda ^^.
Un saludo y gracias de nuevo por traer siempre cosas utiles.
Isma_OMG escribió:PD: Si hablas con MLT dile que ya me di por vencido con el, que ya no le escribo mas, pero no entiendo su cambio de actitud conmigo que tuvo de la noche a la mañana. Al menos podria haberme dado una explicacion de porque no quiere contestarme ni nada de nada. En fin no voy a convertir esto en algo publico, para algo estan los MP.
Saludos.
Estwald escribió:Llevo unos días que no hablo con él, después de meses sin hacerlo... pero sin saber de que va el tema, a veces, tenéis que entender que la gente necesita su espacio. Y a veces, ese espacio es casi infinito .
No conozco el tema, pero te cuento como me siento yo y tal vez te sirva de referencia:
La mayoría de la gente tiene sus problemas y sus quehaceres diarios. Estos problemas pueden ser muy grandes y ser sobrellevados por uno como si no pasara nada (mientras que otros se hundirían) o pequeños (y tal vez el problema es que se le dan demasiada importancia y parecen mayores).
A esto se une que la programación y más la de este tipo consume muchas energías (y horas!) y que la scene, básicamente, consiste para uno en que el scener aporta todo o incluso más de lo que tiene o debería, y recibe poco o nada a cambio. Y aunque sea como hobby, uno echa el resto ahí... y eso acaba por agotar.
Todo esto genera unas cargas de estrés lógicas y cambios de comportamiento, que hace que veces uno no quiera ni leer los foros... y con menos razón contestar a la peña. Peña que muchas veces, te requieren para aconsejarte/sugerirte/pedirte que hagas no se que (sin darse cuenta de lo inoportuno del momento, o inadecuado del hecho), peña que te pide consejo/ayuda (lo cual puede ser imposible o pillarte a desgana en ese momento, pues a veces requiere que revises tus códigos fuentes o datos que tengas en un equipo diferente) y muy rara vez, alguien que como Evilnat, me pasa sus cambios (lo cual es útil: no me suelen "molestar" para indicarme, "mira este código fuente que han publicado". Sobretodo, esto es útil cuando se sabe que estoy en condición de retiro/semiretiro o que no me he pispado de ello, pero si lo hacen, es para mostrar algo que no es código fuente siquiera (¿Has visto que Multiman hace no se qué? ¿Por qué no lo implementas tu?. Pues... ¡por que no hay código fuente y/o no me sale de los cojones o tal vez no sepa como hacerlo!).
Hay gente, que por ejemplo, tiene interés en tener contacto conmigo por que de alguna forma se beneficia y por el contrario, a mi me supondría un trabajo extra. O incluso si no es así, requieren unas atenciones que no puedo o no tengo ánimo de dispensar (estoy seguro que MiralaTijera está diciendo: ¿por que no se conecta el cabrón de Estwald?. Pues chico, por que he estado de trabajo hasta las cejas y no me podía permitir perder la concentración ni para decir "hola": luego me conecto ). Hay gente que en su momento, tenía sentido que tuviera contacto habitual con ellos, pero luego no: yo cambio, ellos cambian...
Diréis algunos, "no es cierto del todo que no obtienes nada a cambio con la scene": hay quien usa tus cosas (eso les beneficia a ELLOS ), quien te aporta como Evilnat o Rancid-o (en realidad, no me ahorran el trabajo de portar cosas... PARA VOSOTROS ), o Miralatijera (en realidad, me ha supuesto muchísimo más trabajo, ya sea para corregir/ añadir cosas.. que disfrutáis VOSOTROS), o mira, D_Skywalk es quien te hizo el relevo del Hermes Manager a Iris Manager (¿y que me ha supuesto si no un porrón de trabajo, a veces, por decisiones como, por ejemplo, lo de meter soporte de idiomas... que había que mejorar en lo posible? ) o estas librerías que publicas aquí, que están hechas inicialmente por otros (y me han supuesto un montón de trabajo para arreglarlas, adaptarlas y por supuesto, darles uso )
El problema base, es la scene nunca sale gratis para el scener: es decir, los supuestos beneficios son todos gastos, puesto que cualquier aportación de otro que requiera trabajo por mi parte, es gasto que se acumula al gasto total (incluso si no tuviera que arreglar una librería, si la uso es para algo... que hay que hacer ), que en mi caso, es enorme y necesitaría vidas enteras de ser compensado sin hacer nada : Iris Manager, si cuantificaramos el coste en horas trabajadas por mi parte sin valorarlas de forma extraordinaria, costaría muchos miles de euros... pero eso solo reflejaría una conversión de horas (y esfuerzos) de trabajo a euros. La solución es simplemente, no ser scener y eso explica por qué muchos lo dejan tarde o temprano
En realidad, la colaboración de otros, puede servir de incentivo (¡y por eso hay que odiarlos! ) : por ejemplo, si nadie hubiera hecho una librería NTFS, yo no la hubiera portado. Pero al haber una y viendo posible portarla, lo he hecho lo mejor que podía, con un montón de curro eso si. O si D_Skywalk no hubiera decidido volver para rescatar Iris Manager, yo no me hubiera ofrecido para echarle una mano... y ¡que cantidad de curro me hubiera ahorrado!, ¿verdad? .
Todas estas cosas se acumulan... y en mi caso, el depósito, que no era pequeño precisamente, hace tiempo que ha desbordado varias veces.. y eso genera que tal vez uno no esté todo lo adecuado en ocasiones... sobre todo si hay que tener en cuenta que uno puede ser referencia para muchos, pero esos muchos, uno a uno, son muy difíciles de tratar e incluso lo que es peor, que a veces, cuando te diriges a uno en concreto, hay otros que se sienten molestos... incluso aunque no vaya con ellos, si es que estabas recriminando algo en concreto, o por que a ese si le diriges la palabra y a los otros no
No digo esto para justificar nada en concreto, pero si para que veáis "elotrolado" como es: para algunos, la scene es divertida o emocionante, o satisfactoria, pero en mi caso concreto, a mi no me divierte que por ejemplo, una librería se me ponga a corromperme sectores por que no está bien hecha y comprometa con ella un montón de trabajo llevado a cabo en Iris Manager para implementarla, mas todo el trabajo empleada en la propia librería. Y que no sepas a veces por donde agarrar estos problemas... emoción ninguna, frustración, mucha .
¿Y satisfacción?. Pues debo confesar que estoy mas satisfecho por que ayer pude concluir en un punto en concreto, que por el hecho de haber logrado nada : mas que un logro en si, es reducir los daños al mínimo, por que se parte de algo que debería ser factible a conseguirlo a pesar de todo.
De hecho, tal es el nivel de frustración, que hoy mismo ya he implementado una mejora en la librería: la podía haber hecho ayer, pues es muy simple (pero obviamente, no solo es modificar, si no hacer test de pruebas), pero es que en realidad, necesitaba acabar en un momento dado de una puñetera vez, para poder "soltar vapor" y ya de paso, que vosotros mismos podáis probar.
¿Que sucedería si encontrarais un bug?. Pues que supondría mas trabajo, lo cual es frustrante, sin saber que coño puede ser, o que tal vez, no pudiera reproducirlo, por lo que sería mas frustrante por ese mismo hecho y porque probablemente, sería mas trabajo tirado de forma inútil, para tratar de encontrar el problema).
Pensad también lo frustrante que es que tu implementes algo o unas mejoras y que luego venga el usuario típico diciendo "esto no funciona"
Así que cada cual, lo afronta como puede: yo me he semiretirado, o lo que es lo mismo: sin decir que no voy a volver a aparecer, he dejado de estar activo durante meses... y sinceramente, lo de la librería NTFS lo tenía en la recámara pero pensé que otros podían hacerlo (y no solo no ha sido así, si no que encima, la librería fallaba y había que hacer mas cosas) y ahora he aprovechado "un rato" para meter una mejora que podría haber estado, por conocimientos necesarios, hecha hace meses... pero no tenía la disposición necesaria para hacerlo (necesitas desconectar, pasar de todo. Al menos hasta que llegue otro momento) y por el mismo motivo, estaba casi ausente de los foros (de EOL visito Miscelánea lo que más, a veces hecho un vistazo a las noticias y el foro de scene y softmods: poco más).
Y sobre MP, pues alguno los estuve sin ver mucho tiempo, por que pasé del tema y finalmente, no he contestado, ya sea por que no mereció la pena, o por otro motivo. Y creo que en el Git hay un polaco que quiere que añada su idioma: supongo que pensarán que soy un maleducado por que no contesto pero... si anuncié mi semiretiro es por que estas cosas pueden pasar y no deberían sorprender: llega un punto donde no puedes dar abasto a todo, simplemente y ya ni siquiera es cuestión de tomarte unos minutos para hacerlo, por que aunque los tenga, no tengo las ganas de hacerlo.
Esto que va sobre mí, no se hasta que punto puede aplicarse a MiralaTijera: creo que es interesante que lo exponga por que al menos, entenderéis como me puedo sentir yo y por que hago las cosas de una u otra manera...
Una cosa buena hacia vosotros de todo esto, es que como yo hace mucho que ya se estas cosas que estoy contando, las tengo bastante aceptadas en parte. Y aunque no puedo evitar la desgana y el odio de tener que pelearme con código conflictivo y matarme a currar (y eso hace que a veces me cueste hasta escribir una línea), eso logra que siendo mi condición oficial casi siempre de retirado o semiretirado, haga cosas que no se esperan de mí y quizá, cuando menos se esperan
En fin, no viene mal un poco de offtopic, sobre el topic
Saludos
Frange escribió:(perdón por el offtopic, acabarás pillandote la Ps4 ?)
racinglocura07 escribió:Estwald, como andas? Compile la libreria y despues el ejemplo y resulta que al ejecutar el ejemplo mediante ps3loadx se cuelga la ps3....
Estaba intentando hacer un explorador de archivos con esta libreia.
Muchas graicas
int ps3ntfs_remove(const char *path);
woulf_alpha escribió:Gracias por la librería!!
Una cosa para borrar ficheros que función hay que utilizar por que no la veo jajajajja
Seria así no?
int ps3ntfs_remove(const char *path);
Salu2
Estwald escribió:woulf_alpha escribió:Gracias por la librería!!
Una cosa para borrar ficheros que función hay que utilizar por que no la veo jajajajja
Seria así no?
int ps3ntfs_remove(const char *path);
Salu2
La función:
int ps3ntfs_unlink(const char *name) ;
Cumple ese cometido y sirve tanto para ficheros como para directorios (ojo con esto, aunque se supone que el directorio debe de estar vacío para ser borrado )
EDIT:
Si inicializas con NTFS_init_system_io(), puedes usar unlink(path); solo para ficheros y rmdir(path) para los directorios (ambas en unistd.h).
woulf_alpha escribió:
Otra cosa podíamos incluir una función para obtener el espacio libre y utilizado del usb?
Salu2