--- /dev/null
+diff -ruN djbdns-1.05.orig/tinydns-data.c djbdns-1.05/tinydns-data.c
+--- djbdns-1.05.orig/tinydns-data.c Mon Jan 22 03:51:44 2001
++++ djbdns-1.05/tinydns-data.c Mon Jan 29 18:12:47 2001
+@@ -159,11 +159,7 @@
+ die_datatmp();
+ }
+
+-buffer b;
+-char bspace[1024];
+-
+ static stralloc line;
+-int match = 1;
+ unsigned long linenum = 0;
+
+ #define NUMFIELDS 15
+@@ -181,7 +177,7 @@
+ strerr_die4x(111,FATAL,"unable to parse data line ",strnum,why);
+ }
+
+-int main()
++int load(const char *fname)
+ {
+ int fddata;
+ int i;
+@@ -196,20 +192,18 @@
+ char type[2];
+ char soa[20];
+ char buf[4];
++ int match;
++ buffer b;
++ char bspace[1024];
+
+- umask(022);
+-
+- fddata = open_read("data");
++ fddata = open_read(fname);
+ if (fddata == -1)
+- strerr_die2sys(111,FATAL,"unable to open data: ");
++ strerr_die4sys(111,FATAL,"unable to open ",fname,": ");
+ defaultsoa_init(fddata);
+
+ buffer_init(&b,buffer_unixread,fddata,bspace,sizeof bspace);
+
+- fdcdb = open_trunc("data.tmp");
+- if (fdcdb == -1) die_datatmp();
+- if (cdb_make_start(&cdb,fdcdb) == -1) die_datatmp();
+-
++ match = 1;
+ while (match) {
+ ++linenum;
+ if (getln(&b,&line,&match,'\n') == -1)
+@@ -444,6 +438,21 @@
+ default:
+ syntaxerror(": unrecognized leading character");
+ }
++ }
++ close(fddata);
++}
++
++main(int argc, char **argv)
++{
++ umask(022);
++ fdcdb = open_trunc("data.tmp");
++ if (fdcdb == -1) die_datatmp();
++ if (cdb_make_start(&cdb,fdcdb) == -1) die_datatmp();
++
++ if (argc == 1)
++ load("data");
++ while(--argc) {
++ load(argv[argc]);
+ }
+
+ if (cdb_make_finish(&cdb) == -1) die_datatmp();