[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