Ayuda con fopen

Started by FreeYourMind, June 01, 2011, 06:15:50 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

FreeYourMind

Hola, necesito ayuda sobre fopen y tambien sobre Linux (porque las dudas las tengo por la consola Pandora)


1 - Empiezó con una sugerencia: Como se sabe si el fopen falla por ejemplo porque la ruta no existe, el fichero se crea en la raiz.
Seria posible una flag en que si falla porque la ruta no existe, que tampoco me genere el fichero en la raiz ?

2 - El sistema de ficheros del disco de Pandora es protegido contra escritura/lectura (al navegar en su filesistem la opcion de escribir esta deshabilitada y tampoco podemos copiar sus datos), pero las aplicaciones si pueden escribir en el.
Es posible que Bennu tenga la capacidad de escribir y borrar ficheros tambien en su disco ? Como se podria hacer con Bennu ?

3 - Se podrian cambiar las propiedades de un fichero externo con bennu (oculto/modo sólo lectura, etc) ?

3 - Es posible leer el nombre de una drive o disco externo/SD (mnt) con Bennu ?

Thanks


SplinterGU

- si el fopen falla, retornara un error.
- si un directorio existe lo podras saber si usas la funcion dir_open
- los archivos no se crean si el path no existe, a menos que tu quieras crearlo en el raiz y tengas permisos para hacerlo.
- si la aplicacion (usuario que la ejecuta) no tiene permisos, no puede escribir en dicho directorio (tambien aplica para leer y ejecutar)
- los atributos de un archivo o directorio no se pueden cambiar desde bennugd, pero puedes usar el comando exec y ejecutar un chmod con los parametros necesarios.
- para saber el nombre de un drive montado con mount, puedes tambier hacer un exec de "mount -l > /tmp/salida.txt" esto te generara una salida en el directorio /tmp que luego tu podras leer. se que no es lo mas prolijo, pero bueno, te puede servir.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

FreeYourMind

1 - Sobre esta:

- los archivos no se crean si el path no existe, a menos que tu quieras crearlo en el raiz y tengas permisos para hacerlo.

Te confirmo una vez mas que esto no es cierto, esto lo he comprobado en las portatiles y tambien en PC, y me crea el fichero en la raiz del juego, cuando intento hacer un fopen a una ruta que no existe, el fichero acaba por crearse de igual modo pero en la raiz (puedes hacer la prueba y veras), de todas formas con dir_open ya puedo controlar el problema como bien dices.

2 - Entonces como hacen las aplicaciones para escribir en la unidad de sistema de la Pandora (que es linux vamos) ?

3 - Queria pedir una sugerencia mas para Bennu, que se lleva pidiendo a gritos hace tiempo y que nuestros juegos estan sufriendo por ello: Necesitamos modo7 compatible con 16bits/32bits...

FreeYourMind

me pones un ejemplo del chmod para cambiar las propiedades de un fichero usando bennu ? gracias, karma

SplinterGU

#4
Quote from: FreeYourMind on June 02, 2011, 07:29:54 AM
1 - Sobre esta:

- los archivos no se crean si el path no existe, a menos que tu quieras crearlo en el raiz y tengas permisos para hacerlo.

Te confirmo una vez mas que esto no es cierto, esto lo he comprobado en las portatiles y tambien en PC, y me crea el fichero en la raiz del juego, cuando intento hacer un fopen a una ruta que no existe, el fichero acaba por crearse de igual modo pero en la raiz (puedes hacer la prueba y veras), de todas formas con dir_open ya puedo controlar el problema como bien dices.

2 - Entonces como hacen las aplicaciones para escribir en la unidad de sistema de la Pandora (que es linux vamos) ?

3 - Queria pedir una sugerencia mas para Bennu, que se lleva pidiendo a gritos hace tiempo y que nuestros juegos estan sufriendo por ello: Necesitamos modo7 compatible con 16bits/32bits...


1) no es cierto lo que dices, hay una confusion, si yo hago un fopen de "/lala/pepe.txt", nunca me va a crear pepe.txt en mel raiz, eso es imposible. ahora si vos haces fopen("/pepe.txt") o fopen("pepe.txt") estando en el raiz o fopen \lala\pepe.txt, entonces eso es otra cosa, pero eso no es que este mal, esta mal como le estas pasando los parametros, lo que hace la funcion esta perfecto.

2) las aplicaciones que escriben seguramente lo estan haciendo desde el usuario linux dueño de ese filesystem... te recomiendo que te leas unos documentos basicos de administracion de permisos linux/unix, ahi seguramente veras mas claro cuales son las posibles causas de que no puedas escribir en ciertos dispositivos donde otros si pueden.

3) tomo nota, gracias
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

SplinterGU

Quote from: FreeYourMind on June 02, 2011, 07:32:07 AM
me pones un ejemplo del chmod para cambiar las propiedades de un fichero usando bennu ? gracias, karma

chmod +w archivo
chmod -w archivo
chmod +r archivo
chmod +x archivo

w - escritura
r - lectura
x - ejecucion

+ activa
- desactiva
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

FreeYourMind

Gracias, pero yo pedia la linea de llamada en bennu exactamente de ejemplo

SplinterGU

#7
Quote from: FreeYourMind on June 02, 2011, 10:11:44 PM
Gracias, pero yo pedia la linea de llamada en bennu exactamente de ejemplo

ah, si, perdon, que attributo queres cambiar realmente?

si te sirve, aca tenes varios ejemplos de cosas en bennugd, entre ellos uno para usar exec.

si eso no te sirve, decime exactamente que atributo queres modificar y te paso las lineas de codigo.

disculpame por la confusion.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

FreeYourMind

Poner un fichero oculto por ejemplo, splinter lo del modo 7, creeme, hay mucha gente deseandolo, seria un avance muy importante que lleva tiempo en la lista de deseos

SplinterGU

en linux no hay attributos para ficheros ocultos, los ficheros se ocultan anteponiendo al nombre un punto ".", pero este es parte del nombre y no del attributo, o sea, si quiero ocultar "pepe.txt", se debe llamar ".pepe.txt", pero ese archivo no lo voy a poder acceder como "pepe.txt" sino como ".pepe.txt".

retiro que deberias leerte algun tuto basico de operacion unix.

con respecto al modo7, te lo dije enserio, tome nota en mi lista de pendientes.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

FreeYourMind

Ok y en windows como lo haria con bennu

SplinterGU

#11
Quote from: FreeYourMind on June 03, 2011, 11:36:03 PM
Ok y en windows como lo haria con bennu

no recuerdo bien los parametros, pero el comando es attrib.exe, creo que es attrib.exe +H archivo

si pones desde un cmd attrib.exe -? te tira el help.

juraria que habia puesto este link http://betatester.bennugd.org/snapshot/samples/ ahi tenes un ejemplo del exec.

el codigo seria algo asi

...
string args[1];
begin
...
args[0] = "+H";
args[1] = archivo;
exec(_P_WAIT, "attrib.exe", 2, &args);

por ahora es el unico metodo disponible.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

FreeYourMind


SplinterGU

Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Drumpi

Splinter, cuando te vayas a poner con el modo7, avisa, porque tengo que buscar la lista que hice hace tiempo de algunas cosillas que quedaron sin arreglar (y no las comenté por no tener tiempo de hacer un ejemplo) :P
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)