diff options
author | Bernhard Reutner-Fischer <rep.dot.nop@gmail.com> | 2008-10-14 15:16:20 +0000 |
---|---|---|
committer | Bernhard Reutner-Fischer <rep.dot.nop@gmail.com> | 2008-10-14 15:16:20 +0000 |
commit | b46830f8b2eed0cc9abf1e89f6771b498c88e798 (patch) | |
tree | 91de5eaf6d914b8695e1381a95078769ed7a3abb /extra/locale/gen_collate.c | |
parent | 6494060312de389feb65ad32bb411fcc64e821b7 (diff) |
- fix locale dependencies and make default locale generation less verbose.
The verbosity can be set to the previous level by passing V=2 to make.
Diffstat (limited to 'extra/locale/gen_collate.c')
-rw-r--r-- | extra/locale/gen_collate.c | 234 |
1 files changed, 148 insertions, 86 deletions
diff --git a/extra/locale/gen_collate.c b/extra/locale/gen_collate.c index 58464a2a8..44f6215b6 100644 --- a/extra/locale/gen_collate.c +++ b/extra/locale/gen_collate.c @@ -1,3 +1,12 @@ +/* + * Usage: + * gen_collate <INPUTDIR> [-o OUTPUTFILE] LOCALE ... + * + * Generate collation data from locales LOCALE. + * Reads all LOCALE from INPUTDIR and writes collation data to OUTPUTFILE. + * + * The output file defaults to "locales_collate.h". + */ /* TODO: * * add UNDEFINED at end if not specified @@ -24,6 +33,7 @@ #include <limits.h> #include <ctype.h> #include <assert.h> +#include <errno.h> #include <search.h> typedef struct { @@ -253,6 +263,14 @@ static void *root_sym = NULL; static size_t num_sym = 0; static size_t mem_sym = 0; +static const char *inputdir; +static size_t inputdir_len; +static unsigned verbose = 0; +enum { + VINFO = (1<<0), + VDETAIL = (1<<1), +}; + static void error_msg(const char *fmt, ...) __attribute__ ((noreturn, format (printf, 1, 2))); static void *xmalloc(size_t n); static char *xsymdup(const char *s); /* only allocate once... store in a tree */ @@ -294,6 +312,18 @@ enum { DT_RANGE = 0x10, }; +static int verbose_msg(const unsigned lvl, const char *fmt, ...) +{ + va_list arg; + int ret = 0; + + if (verbose & lvl) { + va_start(arg, fmt); + ret = vfprintf(stderr, fmt, arg); + va_end(arg); + } + return ret; +} static section_t *new_section(const char *name) { section_t *p; @@ -310,7 +340,7 @@ static section_t *new_section(const char *name) ++anonsection; } #warning devel code -/* fprintf(stderr, "section %s\n", name); */ +/* verbose_msg(VDETAIL, "section %s\n", name); */ p->name = xsymdup(name); p->itm_list = NULL; p->num_items = 0; @@ -328,7 +358,7 @@ static section_t *new_section(const char *name) p->rules[3] |= R_POSITION; cur_rule[3] |= R_POSITION; } -/* fprintf(stderr, "new section %s -- cur_num_weights = %d\n", p->name, cur_num_weights); */ +/* verbose_msg(VDETAIL, "new section %s -- cur_num_weights = %d\n", p->name, cur_num_weights); */ return p; } @@ -379,7 +409,7 @@ static void do_unrecognized(void) #if 1 error_msg("warning: unrecognized: %s", pos); #else -/* fprintf(stderr, "warning: unrecognized initial keyword \"%s\"\n", pos); */ +/* verbose_msg(VDETAIL, "warning: unrecognized initial keyword \"%s\"\n", pos); */ fprintf(stderr, "warning: unrecognized: %s", pos); if (end_of_token) { fprintf(stderr, "%c%s", end_of_token, pos_e+1); @@ -587,10 +617,10 @@ static void add_superset_weight(char *t) lli = new_ll_item(DT_REORDER, cur_section); lli->prev = lli->next = lli; insque(lli, comm_prev_ptr); -/* fprintf(stderr, " subsection -----------------------\n"); */ +/* verbose_msg(VDETAIL, " subsection -----------------------\n"); */ } -/* fprintf(stderr, " %s %s\n", t, ((weighted_item_t *)(comm_cur_ptr->data))->symbol); */ +/* verbose_msg(VDETAIL, " %s %s\n", t, ((weighted_item_t *)(comm_cur_ptr->data))->symbol); */ wi = add_weight(t); lli = new_ll_item(DT_WEIGHTED, wi); mark_reordered(wi->symbol); @@ -745,7 +775,7 @@ static void processfile(void) } if (cur_base == cur_col) { - fprintf(stderr, "Base: %15s", cur_col->name); + verbose_msg(VDETAIL, "Base: %15s", cur_col->name); } else { #if 1 if (!cur_col->undefined_idx) { @@ -794,20 +824,21 @@ static void processfile(void) } #endif - fprintf(stderr, " Der: %15s", cur_col->name); + verbose_msg(VDETAIL, " Der: %15s", cur_col->name); } { +#if 0 ll_item_t *p = cur_col->section_list; - - fprintf(stderr, "%6u weights", tnumnodes(cur_col->root_wi_index)); +#endif + verbose_msg(VDETAIL, "%6u weights", tnumnodes(cur_col->root_wi_index)); if (cur_base) { - fprintf(stderr, " %6u der %6u reor %6u starter - %u new stubs", + verbose_msg(VDETAIL, " %6u der %6u reor %6u starter - %u new stubs", tnumnodes(cur_base->root_derived_wi), tnumnodes(cur_base->root_wi_index_reordered), tnumnodes(cur_base->root_starter_char), ll_count(cur_col->section_list, DT_REORDER)); } - fprintf(stderr, "\n"); + verbose_msg(VDETAIL, "\n"); #if 0 while (p) { @@ -826,7 +857,7 @@ static void processfile(void) if ((*((section_t *)(p->data))->name != 'a') || (((section_t *)(p->data))->num_items > 0) ) { - fprintf(stderr, + verbose_msg(VDETAIL, /* "\t%-15s %zu\n", */ "\t%-15s %6u\n", ((section_t *)(p->data))->name, @@ -1089,18 +1120,35 @@ int main(int argc, char **argv) ll_item_t *lli; int i; int total; + char *output_file = "locale_collate.h"; + unsigned verbosity = 0; - if (argc < 2) { + if (argc < 3) { return EXIT_FAILURE; } - + --argc; + inputdir = strdup(*++argv); + inputdir_len = strlen(inputdir); init_locale_list(); while (--argc) { - p = (const deps_t *) bsearch(*++argv, deps, sizeof(deps)/sizeof(deps[0]), sizeof(deps[0]), dep_cmp); + ++argv; + if (!strcmp(*argv, "-o")) { + --argc; + if (*++argv == NULL) { + printf("-o <outfile> requires an argument\n"); + return EXIT_FAILURE; + } + output_file = strdup(*argv); + continue; + } else if (!strcmp(*argv, "-v")) { + verbosity++; + continue; + } + p = (const deps_t *) bsearch(*argv, deps, sizeof(deps)/sizeof(deps[0]), sizeof(deps[0]), dep_cmp); if (!p) { if (!strcmp("C", *argv)) { - printf("ignoring C locale\n"); + printf("ignoring %s locale\n", *argv); continue; } else { printf("%s not found\n", *argv); @@ -1125,10 +1173,10 @@ int main(int argc, char **argv) total = 0; for (i=0 ; i < BASE_MAX ; i++) { -/* printf("der_count[%2d] = %3d\n", i, der_count[i]); */ +/* printf("der_count[%2d] = %3d\n", i, der_count[i]); */ total += der_count[i]; } -/* printf("total = %d\n", total); */ +/* printf("total = %d\n", total); */ new_args[new_arg_count++] = "dummyprogramname"; for (i=0 ; i < BASE_MAX ; i++) { @@ -1143,11 +1191,16 @@ int main(int argc, char **argv) } while (lli != locale_list[i]); new_args[new_arg_count++] = "-f"; } + for (i=0; i < verbosity; i++) + new_args[new_arg_count++] = "-v"; -/* for (i=0 ; i < new_arg_count ; i++) { */ -/* printf("%3d: %s\n", i, new_args[i]); */ -/* } */ - + new_args[new_arg_count++] = "-o"; + new_args[new_arg_count++] = output_file; +/* + for (i=0 ; i < new_arg_count ; i++) { + printf("%3d: %s\n", i, new_args[i]); + } +*/ return old_main(new_arg_count, (char **) new_args); } @@ -1158,6 +1211,7 @@ static int old_main(int argc, char **argv) { int next_is_base = 0; int next_is_subset = 0; + char *output_file = NULL; superset = 0; @@ -1185,6 +1239,11 @@ static int old_main(int argc, char **argv) next_is_subset = 0; next_is_base = 2; superset = 0; + } else if (((*argv)[1] == 'o') && !(*argv)[2]) { /* output file */ + --argc; + output_file = *++argv; + } else if (((*argv)[1] == 'v') && !(*argv)[2]) { /* verbose */ + ++verbose; } else { error_msg("unrecognized option %s", *argv); } @@ -1198,7 +1257,7 @@ static int old_main(int argc, char **argv) cur_derived = cur_col; } pushfile(*argv); -/* fprintf(stderr, "processing file %s\n", *argv); */ +/* verbose_msg(VDETAIL, "processing file %s\n", *argv); */ processfile(); /* this does a popfile */ /* twalk(cur_col->root_colitem, print_colnode); */ @@ -1212,17 +1271,17 @@ static int old_main(int argc, char **argv) } } - fprintf(stderr, "success!\n"); - fprintf(stderr, + verbose_msg(VINFO, "success!\n"); + verbose_msg(VINFO, /* "num_sym=%zu mem_sym=%zu unique_weights=%zu\n", */ "num_sym=%u mem_sym=%u unique_weights=%u\n", num_sym, mem_sym, unique_weights); /* twalk(root_weight, print_weight_node); */ - fprintf(stderr, "num base locales = %d num derived locales = %d\n", + verbose_msg(VINFO, "num base locales = %d num derived locales = %d\n", base_locale_len, der_locale_len); - fprintf(stderr, + verbose_msg(VINFO, "override_len = %d multistart_len = %d weightstr_len = %d\n" "wcs2colidt_len = %d index2weight_len = %d index2ruleidx_len = %d\n" "ruletable_len = %d\n" @@ -1250,10 +1309,10 @@ static int old_main(int argc, char **argv) #endif { - FILE *fp = fopen("locale_collate.h", "w"); + FILE *fp = fopen(output_file, "w"); if (!fp) { - error_msg("cannot open output file!"); + error_msg("cannot open output file '%s'!", output_file); } dump_collate(fp); if (ferror(fp) || fclose(fp)) { @@ -1282,20 +1341,23 @@ static void error_msg(const char *fmt, ...) static void pushfile(char *filename) { - static char fbuf[PATH_MAX]; - - snprintf(fbuf, PATH_MAX, "collation/%s", filename); + char *inputfile; + size_t inputfile_len; if (fno >= MAX_FNO) { error_msg("file stack size exceeded"); } - if (!(fstack[++fno] = fopen(fbuf, "r"))) { + inputfile_len = inputdir_len + strlen(filename) + 2; + inputfile = xmalloc(inputfile_len); + memset(inputfile, 0, inputfile_len); + sprintf(inputfile, "%s/%s", inputdir, filename); + if (!(fstack[++fno] = fopen(inputfile, "r"))) { --fno; /* oops */ - error_msg("cannot open file %s", fbuf); + error_msg("cannot open file %s: %s", inputfile, strerror(errno)); } - fname[fno] = xsymdup(filename); + fname[fno] = xsymdup(inputfile); lineno[fno] = 0; } @@ -1452,11 +1514,11 @@ static void do_copy(void) *e = 0; ++s; if (cur_base && !strcmp(cur_base->name,s)) { -/* fprintf(stderr, "skipping copy of base file %s\n", s); */ +/* verbose_msg(VDETAIL, "skipping copy of base file %s\n", s); */ #warning need to update last in order and position or check return; } -/* fprintf(stderr, "full copy of %s\n", s); */ +/* verbose_msg(VDETAIL, "full copy of %s\n", s); */ pushfile(s); return; } @@ -1541,7 +1603,7 @@ static ll_item_t *find_section_list_item(const char *name, col_locale_t *loc) while (p) { #warning devel code /* if (!((p->data_type == DT_SECTION) || (p->data_type == DT_REORDER))) { */ -/* fprintf(stderr, "fsli = %d\n", p->data_type); */ +/* verbose_msg(VDETAIL, "fsli = %d\n", p->data_type); */ /* } */ assert((p->data_type == DT_SECTION) || (p->data_type == DT_REORDER)); if (!strcmp(name, ((section_t *)(p->data))->name)) { @@ -1685,11 +1747,11 @@ static void add_colitem(char *item, char *def) #warning devel code if (superset) { if (tfind(p, &cur_base->root_colitem, colitem_cmp)) { -/* fprintf(stderr, "skipping superset duplicate collating item \"%s\"\n", p->string); */ +/* verbose_msg(VDETAIL, "skipping superset duplicate collating item \"%s\"\n", p->string); */ del_colitem(p); return; /* } else { */ -/* fprintf(stderr, "superset: new collating item \"%s\" = %s\n", p->string, p->element); */ +/* verbose_msg(VDETAIL, "superset: new collating item \"%s\" = %s\n", p->string, p->element); */ } } @@ -1850,7 +1912,7 @@ static void do_order_start(void) cur_section = sect; -/* fprintf(stderr, "setting cur_num_weights to %d for %s\n", sect->num_rules, sect->name); */ +/* verbose_msg(VDETAIL, "setting cur_num_weights to %d for %s\n", sect->num_rules, sect->name); */ cur_num_weights = sect->num_rules; memcpy(cur_rule, sect->rules, MAX_COLLATION_WEIGHTS); } @@ -1923,7 +1985,7 @@ static void do_reorder_after(void) insque(l1, l2); l3 = find_ll_last(cur_col->section_list); - fprintf(stderr, "reorder_after %p %p %p %s\n", l1, l2, l3, cur_section->name); + verbose_msg(VDETAIL, "reorder_after %p %p %p %s\n", l1, l2, l3, cur_section->name); } #else insque(new_ll_item(DT_REORDER, cur_section), find_ll_last(cur_col->section_list)); @@ -1935,7 +1997,7 @@ static void do_reorder_after(void) #warning devel code -/* fprintf(stderr, "reorder -- %s %d\n", ((weighted_item_t *)(lli->data))->symbol, w->num_weights); */ +/* verbose_msg(VDETAIL, "reorder -- %s %d\n", ((weighted_item_t *)(lli->data))->symbol, w->num_weights); */ #warning hack to get around hu_HU reorder-after problem /* if (!w->num_weights) { */ @@ -1945,7 +2007,7 @@ static void do_reorder_after(void) /* memcpy(cur_rule, w->rule, MAX_COLLATION_WEIGHTS); */ /* } */ -/* fprintf(stderr, "reorder_after succeeded for %s\n", t); */ +/* verbose_msg(VDETAIL, "reorder_after succeeded for %s\n", t); */ } static void do_reorder_end(void) @@ -1986,9 +2048,9 @@ static void do_reorder_sections_after(void) lli = cur_base->section_list; do { -/* fprintf(stderr, "hmm -- |%s|%d|\n", ((section_t *)(lli->data))->name, lli->data_type); */ +/* verbose_msg(VDETAIL, "hmm -- |%s|%d|\n", ((section_t *)(lli->data))->name, lli->data_type); */ if (lli->data_type & DT_SECTION) { -/* fprintf(stderr, "checking |%s|%s|\n", ((section_t *)(lli->data))->name, t); */ +/* verbose_msg(VDETAIL, "checking |%s|%s|\n", ((section_t *)(lli->data))->name, t); */ if (!strcmp(((section_t *)(lli->data))->name, t)) { reorder_section_ptr = lli; return; @@ -2025,7 +2087,7 @@ static ll_item_t *new_ll_item(int data_type, void *data) static int sym_cmp(const void *n1, const void *n2) { -/* fprintf(stderr, "sym_cmp: |%s| |%s|\n", (const char *)n1, (const char *)n2); */ +/* verbose_msg(VDETAIL, "sym_cmp: |%s| |%s|\n", (const char *)n1, (const char *)n2); */ return strcmp((const char *) n1, (const char *) n2); } @@ -2039,9 +2101,9 @@ static char *xsymdup(const char *s) } ++num_sym; mem_sym += strlen(s) + 1; -/* fprintf(stderr, "xsymdup: alloc |%s| %p |%s| %p\n", *(char **)p, p, s, s); */ +/* verbose_msg(VDETAIL, "xsymdup: alloc |%s| %p |%s| %p\n", *(char **)p, p, s, s); */ /* } else { */ -/* fprintf(stderr, "xsymdup: found |%s| %p\n", *(char **)p, p); */ +/* verbose_msg(VDETAIL, "xsymdup: found |%s| %p\n", *(char **)p, p); */ } return *(char **) p; } @@ -2079,7 +2141,7 @@ static weight_t *register_weight(weight_t *w) } ++unique_weights; /* } else { */ -/* fprintf(stderr, "rw: found\n"); */ +/* verbose_msg(VDETAIL, "rw: found\n"); */ } return *(weight_t **)p; } @@ -2200,7 +2262,7 @@ static void add_final_col_index(const char *s) ci.element = NULL; /* don't care */ v = tfind(&ci, &cur_base->root_colitem, colitem_cmp); if (!v) { - fprintf(stderr, "%s NOT DEFINED!!!\n", s); + verbose_msg(VDETAIL, "%s NOT DEFINED!!!\n", s); } else { p = *((colitem_t **) v); if (p->element != NULL) { @@ -2347,11 +2409,11 @@ static ll_item_t *init_comm_ptr(void) #warning devel code /* { */ /* ll_item_t *p = comm_cur_ptr; */ -/* fprintf(stderr, "init_comm_ptr\n"); */ +/* verbose_msg(VDETAIL, "init_comm_ptr\n"); */ /* while (p != comm_cur_ptr) { */ /* if (p->data_type & DT_WEIGHTED) { */ -/* fprintf(stderr, "%s", ((weighted_item_t *)p)->symbol); */ +/* verbose_msg(VDETAIL, "%s", ((weighted_item_t *)p)->symbol); */ /* } */ /* p = p->next; */ /* } */ @@ -2359,7 +2421,7 @@ static ll_item_t *init_comm_ptr(void) assert(comm_cur_ptr); -/* fprintf(stderr, "init_comm_ptr -- %s %p %p %p %d\n", */ +/* verbose_msg(VDETAIL, "init_comm_ptr -- %s %p %p %p %d\n", */ /* ((weighted_item_t *)(comm_cur_ptr->data))->symbol, */ /* comm_cur_ptr, comm_cur_ptr->prev, comm_cur_ptr->next, */ /* ll_len(comm_cur_ptr)); */ @@ -2625,7 +2687,7 @@ static void finalize_base(void) for (s = cur_base->section_list ; s ; s = s->next) { #if 1 if (s->data_type & DT_REORDER) { /* a reordered section */ - fprintf(stderr, "pass1: reordered section %s - xxx\n", ((section_t *)(s->data))->name); + verbose_msg(VDETAIL, "pass1: reordered section %s - xxx\n", ((section_t *)(s->data))->name); lli = ((section_t *)(s->data))->itm_list; r = 0; if (lli) { @@ -2635,7 +2697,7 @@ static void finalize_base(void) if (r > mr) { mr = r; } - fprintf(stderr, "pass1: reordered section %s - %d\n", ((section_t *)(s->data))->name, r); + verbose_msg(VDETAIL, "pass1: reordered section %s - %d\n", ((section_t *)(s->data))->name, r); continue; } #endif @@ -2652,11 +2714,11 @@ static void finalize_base(void) lli->idx = i; assert(!rli); rli = lli; - fprintf(stderr, "range pre = %d after = ", i); + verbose_msg(VDETAIL, "range pre = %d after = ", i); i += ((range_item_t *)(lli->data))->length + 1; #warning check ko_kR and 9 /* ++i; */ - fprintf(stderr, "%d\n", i); + verbose_msg(VDETAIL, "%d\n", i); if (!index2weight_len_inc) { /* ko_KR hack */ final_index += ((range_item_t *)(lli->data))->length + 1; } @@ -2726,7 +2788,7 @@ static void finalize_base(void) /* cur_base->name, lli->idx, final_index_val(w->symbol), w->symbol); */ } else { -/* fprintf(stderr, "section: %s %d %d\n", ((section_t *)(s->data))->name, */ +/* verbose_msg(VDETAIL, "section: %s %d %d\n", ((section_t *)(s->data))->name, */ /* s->data_type, lli->data_type); */ /* assert(!(s->data_type & DT_REORDER)); */ /* assert(lli->data_type & DT_REORDER); */ @@ -2772,7 +2834,7 @@ static void finalize_base(void) mr = mi; for (cli = cur_base->derived_list ; cli ; cli = cli->next) { cl = (col_locale_t *)(cli->data); -/* fprintf(stderr, "pass3: %d %s\n", cli->data_type, cl->name); */ +/* verbose_msg(VDETAIL, "pass3: %d %s\n", cli->data_type, cl->name); */ /* fprintf(stdout, "pass3: %d %s\n", cli->data_type, cl->name); */ @@ -2790,7 +2852,7 @@ static void finalize_base(void) do { assert(!(lli->data_type & DT_RANGE)); if (lli->data_type & DT_WEIGHTED) { -/* fprintf(stderr, " %d %d %s\n", lli->data_type, lli->idx, ((weighted_item_t *)(lli->data))->symbol); */ +/* verbose_msg(VDETAIL, " %d %d %s\n", lli->data_type, lli->idx, ((weighted_item_t *)(lli->data))->symbol); */ add_final_col_index(((weighted_item_t *)(lli->data))->symbol); if (s->data_type & DT_REORDER) { continue; @@ -2850,10 +2912,10 @@ static void finalize_base(void) ++wcs2index_count; if ((tfind(buf, &cur_base->root_starter_char, sym_cmp)) != NULL) { wcs2index[i] = ++starter_index; -/* fprintf(stderr, "wcs2index[ %#06x ] = %d (starter)\n", i, wcs2index[i]); */ +/* verbose_msg(VDETAIL, "wcs2index[ %#06x ] = %d (starter)\n", i, wcs2index[i]); */ } else { wcs2index[i] = (int)(p->data); -/* fprintf(stderr, "wcs2index[ %#06x ] = %d\n", i, wcs2index[i]); */ +/* verbose_msg(VDETAIL, "wcs2index[ %#06x ] = %d\n", i, wcs2index[i]); */ } } else { if ((tfind(buf, &cur_base->root_starter_char, sym_cmp)) != NULL) { @@ -2898,7 +2960,7 @@ static void finalize_base(void) smallest = newopt(wcs2index, RANGE, n, &table); assert(t == smallest); wcs2colidt_len += smallest; -/* fprintf(stderr, "smallest = %d wcs2colidt_len = %d\n", smallest, wcs2colidt_len); */ +/* verbose_msg(VDETAIL, "smallest = %d wcs2colidt_len = %d\n", smallest, wcs2colidt_len); */ #if 0 { @@ -2919,15 +2981,15 @@ static void finalize_base(void) u >>= __LOCALE_DATA_WCctype_II_SHIFT; i0 = tbl->ii[u]; - fprintf(stderr, "i0 = %d\n", i0); + verbose_msg(VDETAIL, "i0 = %d\n", i0); i0 <<= __LOCALE_DATA_WCctype_II_SHIFT; i1 = tbl->ii[__LOCALE_DATA_WCctype_II_LEN + i0 + n]; /* i1 = tbl->ti[i0 + n]; */ - fprintf(stderr, "i1 = %d\n", i1); + verbose_msg(VDETAIL, "i1 = %d\n", i1); i1 <<= __LOCALE_DATA_WCctype_TI_SHIFT; /* return *(uint16_t *)(&(tbl->ii[__LOCALE_DATA_WCctype_II_LEN + __LOCALE_DATA_WCctype_TI_LEN + i1 + sc])); */ - fprintf(stderr, "i2 = %d\n", __LOCALE_DATA_WCctype_II_LEN + __LOCALE_DATA_WCctype_TI_LEN + i1 + sc); - fprintf(stderr, "val = %d\n", tbl->ii[__LOCALE_DATA_WCctype_II_LEN + __LOCALE_DATA_WCctype_TI_LEN + i1 + sc]); + verbose_msg(VDETAIL, "i2 = %d\n", __LOCALE_DATA_WCctype_II_LEN + __LOCALE_DATA_WCctype_TI_LEN + i1 + sc); + verbose_msg(VDETAIL, "val = %d\n", tbl->ii[__LOCALE_DATA_WCctype_II_LEN + __LOCALE_DATA_WCctype_TI_LEN + i1 + sc]); /* return tbl->ut[i1 + sc]; */ @@ -2944,7 +3006,7 @@ static void finalize_base(void) base_locale_array[base_locale_len].max_col_index = final_index; base_locale_array[base_locale_len].max_weight = max_weight; - fprintf(stderr, "%s: %6u invariant %6u varying %6u derived %6u total %6u max weight %6u wcs2\n", + verbose_msg(VDETAIL, "%s: %6u invariant %6u varying %6u derived %6u total %6u max weight %6u wcs2\n", cur_base->name, num_invariant, num_varying, tnumnodes(cur_base->root_derived_wi), final_index, max_weight, wcs2index_count); @@ -2960,7 +3022,7 @@ static void finalize_base(void) for (s = cur_base->section_list ; s ; s = s->next) { #if 1 if (s->data_type & DT_REORDER) { - fprintf(stderr, "1: skipping reordered section %s\n", ((section_t *)(s->data))->name); + verbose_msg(VDETAIL, "1: skipping reordered section %s\n", ((section_t *)(s->data))->name); continue; } #endif @@ -2988,7 +3050,7 @@ static void finalize_base(void) for (s = cur_base->section_list ; s ; s = s->next) { #if 1 if (s->data_type & DT_REORDER) { - fprintf(stderr, "2: skipping reordered section %s\n", ((section_t *)(s->data))->name); + verbose_msg(VDETAIL, "2: skipping reordered section %s\n", ((section_t *)(s->data))->name); continue; } #endif @@ -3015,7 +3077,7 @@ static void finalize_base(void) do_starter_lists(cur_base); -/* fprintf(stderr,"updated final_index = %d\n", final_index); */ +/* verbose_msg(VDETAIL,"updated final_index = %d\n", final_index); */ if (rli) { base_locale_array[base_locale_len].range_low @@ -3042,8 +3104,8 @@ static void finalize_base(void) && isupper(cur_base->name[4]) ) { - fprintf(stderr, "adding special derived for %s\n", cur_base->name); -/* fprintf(stderr,"updated final_index = %d\n", final_index); */ + verbose_msg(VDETAIL, "adding special derived for %s\n", cur_base->name); +/* verbose_msg(VDETAIL,"updated final_index = %d\n", final_index); */ assert(der_locale_len+1 < DER_LOCALE_LEN); @@ -3080,7 +3142,7 @@ static void finalize_base(void) ++der_locale_len; } else { - fprintf(stderr, "NOT adding special derived for %s\n", cur_base->name); + verbose_msg(VDETAIL, "NOT adding special derived for %s\n", cur_base->name); } /* now all the derived... */ @@ -3102,7 +3164,7 @@ static void finalize_base(void) } /* we do this in two passes... first all sequences, then all single reorders */ for (s = cl->section_list ; s ; s = s->next) { -/* fprintf(stderr, "doing section %s\n", ((section_t *)(s->data))->name); */ +/* verbose_msg(VDETAIL, "doing section %s\n", ((section_t *)(s->data))->name); */ h = lli = ((section_t *)(s->data))->itm_list; if (!lli) { /* fprintf(stdout, "EMPTY ITEM LIST IN SECTION %s\n", ((section_t *)(s->data))->name ); */ @@ -3195,7 +3257,7 @@ static void finalize_base(void) ++base_locale_len; /* if (tnumnodes(cur_base->root_starter_char)) { */ -/* fprintf(stderr, "starter nodes\n"); */ +/* verbose_msg(VDETAIL, "starter nodes\n"); */ /* twalk(cur_base->root_starter_char, print_starter_node); */ /* } */ } @@ -3287,7 +3349,7 @@ static void process_starter_node(const void *ptr, VISIT order, int level) if (++u16_starter < base_locale_array[base_locale_len].num_starters) { u16_buf[u16_starter] = u16_buf_len; } -/* fprintf(stderr, "ucode - %d %d\n", u16_buf[u16_starter-1], u16_buf_len); */ +/* verbose_msg(VDETAIL, "ucode - %d %d\n", u16_buf[u16_starter-1], u16_buf_len); */ } else { x.string = w->symbol; x.element = NULL; @@ -3299,7 +3361,7 @@ static void process_starter_node(const void *ptr, VISIT order, int level) assert(u16_buf[u16_buf_len-1]); assert(*s == '"'); n = is_ucode(++s); -/* fprintf(stderr, "s is |%s| with len %d (%d)\n", s, strlen(s), n); */ +/* verbose_msg(VDETAIL, "s is |%s| with len %d (%d)\n", s, strlen(s), n); */ assert(n); s += n; while (*s != '"') { @@ -3307,7 +3369,7 @@ static void process_starter_node(const void *ptr, VISIT order, int level) assert(n); strncpy(buf, s, n+1); buf[n] = 0; -/* fprintf(stderr, "buf is |%s| with len %d (%d)\n", buf, strlen(buf), n); */ +/* verbose_msg(VDETAIL, "buf is |%s| with len %d (%d)\n", buf, strlen(buf), n); */ u16_buf[u16_buf_len++] = final_index_val(buf); assert(u16_buf[u16_buf_len-1]); s += n; @@ -3331,7 +3393,7 @@ static void complete_starter_node(const void *ptr, VISIT order, int level) p = xmalloc(sizeof(weighted_item_t)); p->symbol = w.symbol; p->weight = NULL; -/* fprintf(stderr, "complete_starter_node: %s\n", *(const char **) ptr); */ +/* verbose_msg(VDETAIL, "complete_starter_node: %s\n", *(const char **) ptr); */ if (!tsearch(p, p_cl_root_starter_all, starter_all_cmp)) { error_msg("OUT OF MEMORY"); } @@ -3377,7 +3439,7 @@ static void do_starter_lists(col_locale_t *cl) x.element = NULL; p = tfind(&x, &cur_base->root_colitem, colitem_cmp); if (!p) { -/* fprintf(stderr, "Whoa... processing starters for %s and couldn't find %s\n", */ +/* verbose_msg(VDETAIL, "Whoa... processing starters for %s and couldn't find %s\n", */ /* cl->name, w->symbol); */ continue; } @@ -3426,13 +3488,13 @@ static void do_starter_lists(col_locale_t *cl) u16_starter = 0; u16_buf[0] = u16_buf_len = base_locale_array[base_locale_len].num_starters; twalk(cl->root_starter_all, process_starter_node); -/* fprintf(stderr, "s=%d n=%d\n", u16_starter, base_locale_array[base_locale_len].num_starters); */ +/* verbose_msg(VDETAIL, "s=%d n=%d\n", u16_starter, base_locale_array[base_locale_len].num_starters); */ assert(u16_starter == base_locale_array[base_locale_len].num_starters); #if 0 { int i; for (i=0 ; i < u16_buf_len ; i++) { - fprintf(stderr, "starter %2d: %d - %#06x\n", i, u16_buf[i], u16_buf[i]); + verbose_msg(VDETAIL, "starter %2d: %d - %#06x\n", i, u16_buf[i], u16_buf[i]); }} #endif @@ -3451,7 +3513,7 @@ static void do_starter_lists(col_locale_t *cl) der_locale_array[der_locale_len].multistart_offset = multistart_len; } multistart_len += u16_buf_len; -/* fprintf(stderr, "%s: multistart_len = %d u16_buf_len = %d\n", cl->name, multistart_len, u16_buf_len); */ +/* verbose_msg(VDETAIL, "%s: multistart_len = %d u16_buf_len = %d\n", cl->name, multistart_len, u16_buf_len); */ } else if (!(u16_buf_len > multistart_len)) { assert(mm); if (cl == cur_base) { @@ -3459,7 +3521,7 @@ static void do_starter_lists(col_locale_t *cl) } else { der_locale_array[der_locale_len].multistart_offset = ((uint16_t *)(mm)) - multistart_buffer; } -/* fprintf(stderr, "%s: memmem found a match with u16_buf_len = %d\n", cl->name, u16_buf_len); */ +/* verbose_msg(VDETAIL, "%s: memmem found a match with u16_buf_len = %d\n", cl->name, u16_buf_len); */ } } else { assert(!base_locale_array[base_locale_len].num_starters); |