<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -76,7 +76,7 @@ libdfsch_la_SOURCES = src/dfsch.c dfsch/dfsch.h src/internal.h\
 	src/hash.c dfsch/hash.h 	\
 	src/promise.c dfsch/promise.h 	\
 	src/number.c dfsch/number.h src/bignum.c dfsch/bignum.h	\
-	src/strings.c dfsch/strings.h 	src/udata.h src/udata.c\
+	src/strings.c dfsch/strings.h 	udata.h udata.c\
 	src/object.c dfsch/object.h	\
 	src/weak.c dfsch/weak.h		\
 	src/format.c dfsch/format.h	\
@@ -90,6 +90,17 @@ libdfsch_la_SOURCES = src/dfsch.c dfsch/dfsch.h src/internal.h\
 	src/generic.c dfsch/generic.h	\
 	src/mkhash.c dfsch/mkhash.h
 
+noinst_PROGRAMS=udata-gen
+BUILT_SOURCES=udata.c udata.h
+strings.o: udata.h
+udata.h: udata-gen src/UnicodeData.txt
+	./udata-gen header $(srcdir)/src/UnicodeData.txt udata.h
+udata.c: udata-gen src/UnicodeData.txt
+	./udata-gen data $(srcdir)/src/UnicodeData.txt udata.c
+
+udata_gen_SOURCES=src/udata-gen.c
+udata_gen_LDADD= -lgc
+
 libdfsch_la_LDFLAGS = -version-info 5:0:0
 libdfsch_la_LIBADD =  -lgc -lpthread -ldl -lm
 </diff>
      <filename>Makefile.am</filename>
    </modified>
    <modified>
      <diff>@@ -203,14 +203,7 @@ void compact_tables(){
 }
 
 
-void emit_tables(){
-  uint32_t i;
-  int j;
-  int k;
-  FILE* f;
-
-  f = fopen(&quot;udata.h&quot;, &quot;w&quot;);
-
+void emit_header(FILE* f){
   fprintf(f, 
           &quot;/* \n&quot;
           &quot; * This file is automatically generated from UnicodeData.txt\n&quot;
@@ -243,10 +236,14 @@ void emit_tables(){
           &quot;extern unsigned char dfsch__udata_tables[][%d];\n&quot;, SECOND_SIZE);
   fprintf(f, 
           &quot;extern udata_entry_t dfsch__udata_properties[];&quot;);
+  
+}
 
-  fclose(f);
+void emit_tables(FILE* f){
+  uint32_t i;
+  int j;
+  int k;
 
-  f = fopen(&quot;udata.c&quot;, &quot;w&quot;);
   fprintf(f, 
           &quot;/* \n&quot;
           &quot; * This file is automatically generated from UnicodeData.txt\n&quot;
@@ -288,18 +285,43 @@ void emit_tables(){
             distinct[i].title_offset);
   }
   fprintf(f, &quot;};\n&quot;);
-  fclose(f);
 }
 
 int main(int argc, char**argv){
   char buf[1024];
-  init_database();
-  fprintf(stderr, &quot;Parsing...&quot;);  
-  while(fgets(buf, 1024, stdin)){
-    process_line(parse_line(buf));
+  FILE* in;
+  FILE* out;
+
+  if (argc == 4){
+    in = fopen(argv[2], &quot;r&quot;);
+    if (!in){
+      perror(argv[2]);
+      return 1;
+    }
+    out = fopen(argv[3], &quot;w&quot;);
+    if (!out){
+      perror(argv[3]);
+      return 1;
+    }
+    if (strcmp(argv[1], &quot;data&quot;) == 0){
+      init_database();
+      fprintf(stderr, &quot;Parsing...&quot;);  
+      while(fgets(buf, 1024, in)){
+        process_line(parse_line(buf));
+      }
+      fprintf(stderr, &quot;done\n&quot;);
+      compact_props();
+      compact_tables();
+      emit_tables(out);
+      fclose(out);
+      return 0;
+    } else if (strcmp(argv[1], &quot;header&quot;) == 0){
+      emit_header(out);
+      fclose(out);
+      return 0;
+    }
   }
-  fprintf(stderr, &quot;done\n&quot;);
-  compact_props();
-  compact_tables();
-  emit_tables();
+   
+  fprintf(stderr, &quot;usage: %s header|data &lt;input-file&gt; &lt;output-file&gt;\n&quot;, argv[0]);
+  return 1;
 }</diff>
      <filename>src/udata-gen.c</filename>
    </modified>
  </modified>
  <removed type="array">
    <removed>
      <filename>src/udata.c</filename>
    </removed>
    <removed>
      <filename>src/udata.h</filename>
    </removed>
  </removed>
  <parents type="array">
    <parent>
      <id>68b4f8dc35bb105d37e31ef2942c5d6b2d9b656b</id>
    </parent>
  </parents>
  <author>
    <name>Ales Hakl</name>
    <email>ales@hakl.net</email>
  </author>
  <url>http://github.com/adh/dfsch/commit/5d0e7385f4ae8f55a24d7082a6656a62f1b5432e</url>
  <id>5d0e7385f4ae8f55a24d7082a6656a62f1b5432e</id>
  <committed-date>2009-11-12T05:50:12-08:00</committed-date>
  <authored-date>2009-11-12T05:50:12-08:00</authored-date>
  <message>integrate unicode data processing into buildsystem</message>
  <tree>ea143bdf8402c286078a01c0487d81e4fa1145e6</tree>
  <committer>
    <name>Ales Hakl</name>
    <email>ales@hakl.net</email>
  </committer>
</commit>
