DEBUG_DEFINE_DEBUGF(ocr)
-#define dbassert(x) \
- ((x) ? (void)0 : \
- fatal("Error in character set database.\n" \
- " Requirement not met: %s:%d: %s", __FILE__,__LINE__, #x))
-
-#define FGETSLINE (fgetsline(db,lbuf,sizeof(lbuf)))
+#define FGETSLINE (dbfile_getsline(lbuf,sizeof(lbuf),__FILE__,__LINE__))
static void cleardb_node(DatabaseNode *n) {
int i;
DatabaseNode *current, *additional;
char chrs[MAXGLYPHCHRS+1];
Pixcol cv;
- int r,j,ctxi;
+ int j,ctxi;
int h, endsword;
char lbuf[100];
- FILE *db;
for (ctxi=0; ctxi<NCONTEXTS; ctxi++)
cleardb_node(&rd->contexts[ctxi]);
asprintf(&dbfname,"%s/charset-%d.txt",get_vardir(),rd->h);
sysassert(dbfname);
- db= fopen(dbfname,"r");
- free(dbfname);
- if (!db) {
- sysassert(errno==ENOENT);
- return;
- }
+ if (!dbfile_open(dbfname))
+ goto x;
FGETSLINE;
dbassert(!strcmp(lbuf,"# ypp-sc-tools pctb font v1"));
- r= fscanf(db, "%d", &h);
- dbassert(r==1);
+ dbassert( dbfile_scanf("%d", &h) == 1);
dbassert(h==rd->h);
for (;;) {
FGETSLINE;
- if (!lbuf || lbuf[0]=='#') continue;
+ if (!lbuf[0] || lbuf[0]=='#') continue;
if (!strcmp(lbuf,".")) break;
for (ctxi=0; ctxi<NCONTEXTS; ctxi++)
found_ctx:
for (nchrs=0;;) {
- int c= fgetc(db); sysassert(!ferror(db)); dbassert(c!=EOF);
+ int c= fgetc(dbfile); sysassert(!ferror(dbfile)); dbassert(c!=EOF);
if (c=='\n') { dbassert(nchrs); break; }
dbassert(nchrs<MAXGLYPHCHRS);
if (c=='\\') {
unsigned cr;
- c= fgetc(db); sysassert(!ferror(db)); dbassert(c=='x');
- r= fscanf(db, "%2x", &cr); sysassert(!ferror(db)); dbassert(r==1);
+ c= fgetc(dbfile); sysassert(!ferror(dbfile)); dbassert(c=='x');
+ dbassert( dbfile_scanf("%2x", &cr) == 1);
assert(cr>0 && cr<=255);
c= cr;
}
strcpy(current->s, chrs);
current->endsword= endsword;
}
- sysassert(!ferror(db));
- sysassert(!fclose(db));
+ x:
+ dbfile_close();
+ free(dbfname);
}
static void cu_pr_ctxmap(unsigned ctxmap) {