Buenas, estoy programando un rato pero me ha surgido un problema.
El programa consiste en que, dados dos ficheros o dos directorios, imprima por pantalla un mensaje diciendo si los ficheros tienen el mismo tamaño en bytes, o los directorios tienen el mismo número de entradas.
La parte de los ficheros esta solucionada, el problema lo tengo a la hora de contar los directorios, extrañamente para un mismo directorio me dice que tiene entradas distintas (ej: > contarentradas $HOME $HOME --> Me dice que tienen distinto nº de entradas).
El código referente a esa parte del programa es el siguiente:
void tratar_directorios(char dir1[], char dir2[])
{
int entradas1;
int entradas2;
if((entradas1 = contar_entradas(dir1)) == (entradas2= contar_entradas(dir2)))
{
printf("Los directorios tienen el mismo número de entradas: %ld\n", entradas1);
}
else
{
printf("Los directorios no tienen el mismo número de entradas\n");
printf("%s:%ld\n", dir1, entradas1);
printf("%s:%ld\n", dir2, entradas2);
}
}
int contar_entradas(char dir[])
{
int numero;
DIR *directorio;
struct dirent *entradas;
directorio = opendir(dir);
if(directorio == NULL)
{
printf("Error abriendo el directorio\n");
exit(-1);
}
entradas = readdir(directorio);
while(entradas != NULL)
{
numero++;
entradas = readdir(directorio);
}
closedir(directorio);
return numero;
}
No se donde esta el problema, a ver si algún erudito me ilumina.
Otra cosa, ¿hay alguna forma de saber el nombre de un fichero o directorio a partir de su información "struct stat ..." ?
No se si me explico, imaginemos que por lo que sea tengo una variable "struct stat buffer", ¿puedo saber a partir de ella el nombre del archivo cuya información está contenida en la variable?