Creo que los que hacer remakes en Fenix deberían mirar esto:
[Copiado de Foros DIVSite, post de Josebita]
======================================================
Llevo un ratillo mirando el problema este de que en el Vista no
funciona Fenix.
Por lo que he leído en internet, creo el problema está en que la nueva
versión de Vista se ha vuelto bastante más restrictiva con los
argumentos que se le pasan a fopen();
Por lo que he visto, el compilador cuando quiere abrir un fichero,
llama a la función file_open(); del fichero "common/files.c", que
cambia las barras feas de directorio ("") por las barras bonitas ("/")
y llama a open_raw() del mismo fichero repetidas veces según un patrón
hasta que en alguna de ellas abre el fichero, o hasta que desiste y
suelta un error.
Por lo que he podido ver, llama a la función con el modo de apertura
"rb0", los dos caracteres primeros son el modo de apertura de sólo
lectura compatible con sistemas viejos y el "0" es un caracter interno
de Fenix que dice que el fichero no debe intentar abrirse como
comprimido.
Creo que el problema viene porque Windows Vista rechaza el modo "rb0",
en lugar de asumir que se debe tratar de "rb" unicamente, por lo que
he leído por seguridad.
He probado a hacer una pequeña rutina que elimina ese último "0" antes
de llamar a fopen, y creo que ya funciona.
El código no es ninguna maravilla, pero bueno, lo que importa es la
idea.
En resumen, lo que hay que hacer es cambiar la función open_raw del
fichero ese por:
Código:
static int open_raw (file * f, const char * filename, const char *
mode)
{
int i=0;
int j=0;
char openmode[5];
if (!strchr(mode,'0'))
{
f->type = F_GZFILE ;
f->gz = gzopen (filename, mode) ;
f->eof = 0 ;
if (f->gz) return 1 ;
}
//My chapuz
for(i=0; i+j<strlen(mode); i++) {
if(mode == '0')
j++;
openmode = mode[i+j];
}
while(i<strlen(openmode)) {
openmode = '?';
i++;
}
f->eof = 0 ;
f->type = F_FILE ;
f->fp = fopen (filename, openmode) ;
printf("Trying to open %s with mode %sn", filename, openmode);
if (f->fp) return 1 ;
return 0 ;
}
============================================================
Remakes en Fenix y Vista. Posible solución
Moderador: Sir Cilve Sinclair
-
- Nonamed
- Mensajes: 1067
- Registrado: Lun May 07, 2007 10:06 pm
Remakes en Fenix y Vista. Posible solución
Un saludo,
Gandulf
Gandulf
¿Quién está conectado?
Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 35 invitados