PDA

Ver la versión completa : Listar directorio



Nathrezim
02/08/2010, 17:18
Buenas, estoy intentando listar el contenido de un directorio y me encuentro en un dilema, estoy usando el SDK oficial de Windows y no hay una librería que haga esto, bueno, si la hay, hay 2 una para el entorno de windows y otra para la wiz.

¿Sabe alguien si hay alguna función que haga este trabajo en los dos entornos? no me gustaría tener que depurar en la wiz, es un infierno.

Franxis
02/08/2010, 18:34
static void game_list_init(void)
{
DIR *d=opendir("isos");
if (d)
{
struct dirent *actual=readdir(d);
while(actual)
{
if (((strstr(actual->d_name,".bin")!=NULL) ||
(strstr(actual->d_name,".img")!=NULL) ||
(strstr(actual->d_name,".mdf")!=NULL) ||
(strstr(actual->d_name,".iso")!=NULL)) &&
(strstr(actual->d_name,".cfg")==NULL))
{
strcpy(games[game_num_avail],"isos/");
strcat(games[game_num_avail],actual->d_name);
game_num_avail++;
}
actual=readdir(d);
}
closedir(d);
}
d=opendir("exec");
if (d)
{
struct dirent *actual=readdir(d);
while(actual)
{
if (strstr(actual->d_name,".exe")!=NULL)
{
strcpy(games[game_num_avail],"exec/");
strcat(games[game_num_avail],actual->d_name);
game_num_avail++;
}
actual=readdir(d);
}
closedir(d);
}
}

Nathrezim
02/08/2010, 19:06
Con la biblioteca dirent.h ¿verdad? gracias monstruo.

saboteur
09/08/2010, 19:38
Parece que yo me he encontrado con el mismo problema, aunque di con la solución rápidamente. El caso es que a mí esto me funciona al compilar en Windows y al compilar para GP2X. Cuando compilo para Wiz me peta.

Es muy extraño, porque si desde un programa creo un directorio y leo el contenido, funciona perfectamente. Pero si el directorio ya está creado y leo el contenido, en cuanto llega a la instrucción readdir() se cuelga.

No sé si es un tema de permisos (que en FAT no debería haber) o da algún tipo de error que no puedo localizar.

Estoy compilando con las opciones: -lSDL_mixer -lSDL_ttf -lfreetype -lsmpeg -lvorbisidec -lz -lSDL -lpthread, y en "Escape from Minos" me funcionan perfectamente.

No uso el SDK oficial porque los programas compilados en Windows no funcionan.

¿Alguien tiene alguna idea de por dónde mirar? Repito, en Windows y GP2X funciona sin problemas... en Wiz no.

< - >
Bueno... después de un montón de días comiéndome la cabeza, resulta que el readdir() peta cuando el directorio está escrito con mayúsculas :confused: Con minúsculas funciona sin problemas.

Al menos he arreglado la idiotez esta. A ver si acabo el programa.