in dotnet/tools/md5sum/main.c [22:70]
int main(int argc, char **argv)
{
/* Usage: md5sum paramFile */
FILE* fp;
char buf[16*1024], *line, *output;
unsigned char c[MD5_DIGEST_LENGTH];
MD5_CTX mdContext;
int i;
if (argc != 2)
{
printf("Usage: %s paramFile\n", argv[0]);
return -1;
}
if ((fp = fopen(argv[1], "r")) == NULL)
{
printf("Can't open %s\n", argv[1]);
return -1;
}
output = fgets(buf, sizeof(buf), fp);
if (output == NULL)
{
printf("File %s is empty\n", argv[1]);
return -1;
}
output = strdup(buf);
output[strlen(output)-1] = '\0';
MD5_Init(&mdContext);
while (fgets(buf, sizeof(buf), fp) != NULL)
{
buf[strlen(buf) - 1] = '\0';
sumFile(buf, &mdContext);
}
MD5_Final (c,&mdContext);
fclose(fp);
fp = fopen(output, "w");
if (fp == NULL)
{
printf("Can't open %s\n", argv[1]);
return -1;
}
for(i = 0; i < MD5_DIGEST_LENGTH; i++) fprintf(fp, "%02x", c[i]);
fclose (fp);
return 0;
}