author | Markus Bröker <mbroeker@largo.dyndns.tv> |
Thu, 16 Apr 2009 12:49:12 +0200 | |
changeset 46 | 4b9e1ac40246 |
parent 9 | c3fecc82ade6 |
child 77 | 49e0babccb23 |
permissions | -rw-r--r-- |
/** * test/demos/lsflib/src/md5recursive.c * Copyright (C) 2008 Markus Broeker */ #include <stdio.h> #include <stdlib.h> #include <dirent.h> #include <sys/types.h> #include <sys/stat.h> #include <unistd.h> #include <string.h> #include <lsf.h> void md5recursive (char *root, int recursive) { struct dirent *entry; DIR *directory; char *list; unsigned char *value; int i; if (!isDir (root)) return; if ((directory = opendir (root)) == NULL) { perror (root); return; } while ((entry = readdir (directory))) { list = (char *)malloc (strlen (root) + 1 + strlen (entry->d_name) + 1); if (list == NULL) { perror ("malloc"); return; } sprintf (list, "%s/%s", root, entry->d_name); if (!strcmp (entry->d_name, ".")) continue; if (!strcmp (entry->d_name, "..")) continue; if (isDir (list)) { fprintf (stderr, "Directory: %s\n", list); if (recursive) { md5recursive (list, recursive); } continue; } if ((value = md5sum (list)) == NULL) { continue; } for (i = 0; i < 16; i++) printf ("%02x", value[i]); printf (" %s\n", list); free (value); } free (list); closedir (directory); }