[C con Clase] Error glibc y escaneo de directorios.

Programante programante en gmail.com
Sab Ene 23 23:27:48 CET 2010


Sergio escribió:
> 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.
>
> 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.
> 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.
>
> Aquí envió el código a ver si alguien me puede decir cual es el error.
>
>
>  #include <glib.h>
> #include <stdio.h>
> #include <string.h>
> #include <stdlib.h>
>
> int main ( int argc ,char *argv[] )
> {
>
>
> //variables
> GDir   *dir        = NULL;
> GDir   *new_dir        = NULL;
> gchar  *name_dir    = NULL;
> gchar  *name_sub_dir    = NULL;
> GError *error        = NULL;
> gchar  *path        = NULL;
>
> //comprobar argumentos
> if (argc < 2 )
>     {
>     printf ( "Usaje:\nNombre del programa lib_1 " );
Es la primera vez que veo la palabra "Usaje" en un programa.

>     printf ( "seguido del argumento ( directorio a escanear ).\n" );
>     return;
>     }
>
> path = ( gchar * ) malloc ( sizeof ( argv ) );
Esto es incorrecto. sizeof argv será el tamaño de un puntero (4 - 8 bytes)

> strcpy ( path ,argv[1] );
Pero le estás copiando una cadena.


Como estás corrompiendo memoria podría tener que ver con que g_file_test
no retorne.
Existe un paquete de símbolos de la glibc, por si quieres meterte dentro
depurando (será algo así como glibc-gdb).





Más información sobre la lista de distribución Cconclase