Ayuda con la funcion stat()

Alfred Zuñiga
01 de Octubre del 2011
Buenas, estoy haciendo un programa que permite conocer el tamaño del los archivos contenidos en un directorio. El código es el siguiente:

DIR *dirp;
dirp = opendir(argv[1]);
struct dirent *dirlei;


if(strcmp(argv[2],"-s")==0)
{
while((dirlei = readdir(dirp)) != NULL)
{
fprintf(stdout,
"%s ",dirlei->d_name);
struct stat mem;
if(stat(dirlei->d_name,&mem)!=EBADF)
{
fprintf(stdout,"(%d)n",mem.st_size);
}
}
closedir(dirp);
exit(0);
}

El problema es que cuando esta listando los directorios con sus respectivos tamaños solo lo hace bien desde el directorio donde estoy. Luego cuando le pongo la ruta de otro directorio no coloca los tamaños que deberían ser, sino que los elementos pueden tener un tamaño de 2048 o 191. Alguien tiene alguna idea de lo que podría estar fallando??? Esta mi bucle mal implementado??? 1000 Gracias!!!!!!!