chiark / gitweb /
allow nonexistent charset db
authorIan Jackson <ian@liberator.relativity.greenend.org.uk>
Fri, 5 Jun 2009 23:17:27 +0000 (00:17 +0100)
committerIan Jackson <ian@liberator.relativity.greenend.org.uk>
Fri, 5 Jun 2009 23:17:27 +0000 (00:17 +0100)
pctb/ocr.c
pctb/show-thing.tcl

index 48c25c0..bb95767 100644 (file)
@@ -63,12 +63,19 @@ static void readdb(OcrReader *rd) {
   char lbuf[100];
   FILE *db;
 
+  for (ctxi=0; ctxi<NCONTEXTS; ctxi++)
+    cleardb_node(&rd->contexts[ctxi]);
+
   char *dbfname=0;
   asprintf(&dbfname,"%s/charset-%d.txt",get_vardir(),rd->h);
   eassert(dbfname);
   
-  db= fopen(dbfname,"r");  eassert(db);
+  db= fopen(dbfname,"r");
   free(dbfname);
+  if (!db) {
+    eassert(errno==ENOENT);
+    return;
+  }
 
   FGETSLINE(db,lbuf);
   eassert(!strcmp(lbuf,"# ypp-sc-tools pctb font v1"));
@@ -77,9 +84,6 @@ static void readdb(OcrReader *rd) {
   eassert(r==1);
   eassert(h==rd->h);
 
-  for (ctxi=0; ctxi<NCONTEXTS; ctxi++)
-    cleardb_node(&rd->contexts[ctxi]);
-
   for (;;) {
     FGETSLINE(db,lbuf);
     if (!lbuf || lbuf[0]=='#') continue;
index d71c36e..980a8a4 100755 (executable)
@@ -387,6 +387,7 @@ proc read_database {} {
     global database database_header rows database_fn
     catch { unset database }
     set database_fn ./charset-$rows.txt
+    if {![file exists $database_fn]} return
     set f [open $database_fn r]
     if {[string compare [db_getsl $f] $database_header]} { error "$l ?" }
     if {([db_getsl $f])+0 != $rows} { error "wrong h ?" }