Hola a todos, envió esta consulta a esta lista aun sabiendo que no es una pregunta referente a C++ ya que me tiene bastante loco y no consigo encontrar el error.<br><br>Estoy haciendo unas pruebas con glibc-2.0 y bueno me puse a hacer un pequeño programa para escanear un directorio, sin pretensiones, solo unas pruebas.<br>
El caso es que una vez acabado el programa puedo escanear mi directorio /home pero si introduzco cualquier otro directorio por ejemplo /usr no me imprime nada , como digo es un programa de prueba y solo escanea el primer directorio , no entra en los demás.<br>
<br>Aquí envió el código a ver si alguien me puede decir cual es el error.<br><br><br> #include <glib.h><br>#include <stdio.h><br>#include <string.h><br>#include <stdlib.h><br><br>int main ( int argc ,char *argv[] )<br>
{<br><br><br>//variables<br>GDir *dir = NULL;<br>GDir *new_dir = NULL;<br>gchar *name_dir = NULL;<br>gchar *name_sub_dir = NULL;<br>GError *error = NULL;<br>gchar *path = NULL;<br>
<br>//comprobar argumentos<br>if (argc < 2 )<br> {<br> printf ( "Usaje:\nNombre del programa lib_1 " );<br> printf ( "seguido del argumento ( directorio a escanear ).\n" );<br> return;<br>
}<br><br>path = ( gchar * ) malloc ( sizeof ( argv ) );<br>strcpy ( path ,argv[1] );<br><br>//abrir directorio y comprobar errores<br>dir = g_dir_open ( path, 0, &error );<br>if ( error )<br> {<br> printf ( "%s", error->message );<br>
g_clear_error ( &error );<br> return -1;<br> }<br><br>//mientras name_dir contenga algun valor <br>do <br> {<br> name_dir = g_dir_read_name ( dir );<br> if ( g_file_test ( name_dir, G_FILE_TEST_IS_DIR ) )<br>
{<br> printf ( "%s\n", name_dir );<br> new_dir = g_dir_open ( name_dir, 0, &error );<br> if ( error )<br> {<br> printf ( "%s", error->message );<br>
g_clear_error ( &error );<br> return -1;<br> }<br> //mientras name_sub_dir contenga algun valor <br> do<br> {<br> name_sub_dir = g_dir_read_name ( new_dir );<br>
if ( g_file_test ( name_sub_dir, G_FILE_TEST_IS_DIR ) || name_sub_dir != NULL )<br> {<br> printf ( "\t%s\n", name_sub_dir );<br> }<br> }while ( name_sub_dir );<br>
} <br> } while ( name_dir );<br>free ( path );<br>return 0;<br>}<br><br>Como digo si arranco el programa con:<br><br>$./lib_1 /home/sergio<br><br>me muestra los directorios que hay incluidos los ocultos y los archivos pero si le pongo:<br>
<br>$./lib_1 /usr<br><br>no muestra nada , debugeando veo que la variable path recoge bien el valor pero que en la linea if ( g_file_test ( name_dir, G_FILE_TEST_IS_DIR ) )<br>no devuelve true nunca aunque la variable name_dir contenga un directorio y eso es lo que no entiendo porque con /home/sergio si funciona y porque con /usr no.<br>
<br>Por cierto utilizo linux para compilar:<br><br>gcc -g `pkg-config --cflags --libs glib-2.0` lib_1.c -o lib_1<br><br>Pues nada mas si alguien me explica el error lo agradecería mucho.<br><br>Saludos.<br><br><br>PD. Magnifica lista por cierto.<br>
<br><br>