summaryrefslogtreecommitdiff
path: root/math/mkdb.c
diff options
context:
space:
mode:
Diffstat (limited to 'math/mkdb.c')
-rw-r--r--math/mkdb.c31
1 files changed, 27 insertions, 4 deletions
diff --git a/math/mkdb.c b/math/mkdb.c
index f4a6469..759a012 100644
--- a/math/mkdb.c
+++ b/math/mkdb.c
@@ -30,6 +30,7 @@
void twiddle(void);
void walk(char **);
+void fillauthor(char *);
void
twiddle(void)
@@ -55,8 +56,6 @@ walk(char **fname)
printf("Scanning: ");
- db_open(O_CREAT|O_RDWR);
-
// db_wipe();
while ((ftp = fts_read(fts)) != NULL) {
@@ -119,20 +118,44 @@ walk(char **fname)
}
}
- db_close();
fts_close(fts);
printf("done\n");
}
+void
+fillauthor(char *fname)
+{
+ FILE *fd;
+ struct author a;
+ char buf[BUFSIZ], *p, *key;
+ char sep[] = ":\n";
+
+ fd = fopen(fname, "r");
+
+ while ((p = fgets(buf, sizeof(buf), fd)) != NULL) {
+ if (*p == '#')
+ continue;
+ key = strsep(&p, sep);
+ a.name = strsep(&p, sep);
+ a.mail = strsep(&p, sep);
+ db_putauthor(&a, key);
+ }
+
+ fclose(fd);
+}
+
+
int
main(int argc, char **argv)
{
-
if (argc != 2)
return -1;
+ db_open(O_CREAT|O_RDWR);
+ fillauthor(AUTHORDATA);
walk(&argv[1]);
+ db_close();
return 0;
}