Vereis tengo que escribir en un fichero de texto la salida que genera el comando propio de linux md5sum (suma de verificacion nombre de fichero) pero realizando dicho programa en C. Hasta ahora recorro bien el directorio y demas pero el problema viene a la hora de sacar la suma que siendo sinceros no tengo ni idea de como hacerlo, aqui os pongo el codigo de lo que llevo de programa (el programa genera el fichero pero en la 1ª columna pone cosas raras en vez de la suma).
#include <ftw.h>
#include <stdio.h>
#include <sys/stat.h>
#include <string.h>
#define MD5_STRING_LENGTH 32
char nomfich[150]; //Variable global donde meteremos el nombre del fichero
unsigned char md5sum(const unsigned char *d, unsigned long n, unsigned char *md)
{
return "f76eb1aa49433d52476cd3dcbc3794";
}
int list(const char *nombre, const struct stat *status, int type) //Funcion que pinta en el fichero
{
FILE *F;
F=fopen(nomfich,"a+t");
unsigned char suma[MD5_STRING_LENGTH + 1];
if(type == FTW_F) //Si es fichero normal
{
md5sum(nombre,strlen(nombre),suma); //Mandamos a md5sum nombre de ficher, el tamaño de la cadena y la variable suma
fprintf(F,"%s\t./%s\n",suma,nombre); //Pintamos la suma devuelta y el nombre del fichero
}
close(F);
return 0;
}
int main(int argc, char *argv[]) { //argv es el nombre del directorio que le mandamos
char *extension=".md5sum";
if(argc == 1) //Sino se especifica directorio salimos
{
printf("No se ha especificado directorio\n");
exit (0);
}
strcpy(nomfich,argv[1]); //Copiamos el nombre del directorio en la cadena global nomfich
strcat(nomfich,extension); // Añadimos la extension a la cadena
ftw(argv[1],list, 1); //Si se ha especificado le mandamos la ruta del directorio
return 0;
}