int nogo;
int errs;
int reportcols;
+ int list_fonts;
int input_charset;
int debug;
int backendbits, prebackbits;
paragraph *cfg, *cfg_tail;
void *pre_backend_data[16];
+ /*
+ * Use the specified locale everywhere. It'll be used for
+ * output of error messages, and as the default character set
+ * for input files if one is not explicitly specified.
+ *
+ * However, we need to use standard numeric formatting for
+ * output of things like PDF.
+ */
setlocale(LC_ALL, "");
+ setlocale(LC_NUMERIC, "C");
/*
* Set up initial (default) parameters.
nfiles = 0;
nogo = errs = FALSE;
reportcols = 0;
+ list_fonts = 0;
input_charset = CS_ASCII;
debug = 0;
backendbits = 0;
*/
while (--argc) {
char *p = *++argv;
- if (*p == '-') {
+ if (*p == '-' && p[1]) {
/*
* An option.
*/
/* do nothing */;
} else if (!strcmp(opt, "-input-charset")) {
if (!val) {
- errs = TRUE, error(err_optnoarg, opt);
+ errs = TRUE, err_optnoarg(opt);
} else {
int charset = charset_from_localenc(val);
if (charset == CS_NONE) {
- errs = TRUE, error(err_cmdcharset, val);
+ errs = TRUE, err_cmdcharset(val);
} else {
input_charset = charset;
}
!strcmp(opt, "-license")) {
licence();
nogo = TRUE;
+ } else if (!strcmp(opt, "-list-charsets")) {
+ listcharsets();
+ nogo = TRUE;
+ } else if (!strcmp(opt, "-list-fonts")) {
+ list_fonts = TRUE;
} else if (!strcmp(opt, "-precise")) {
reportcols = 1;
} else {
- errs = TRUE, error(err_nosuchopt, opt);
+ errs = TRUE, err_nosuchopt(opt);
}
}
p = NULL;
char opt[2];
opt[0] = c;
opt[1] = '\0';
- errs = TRUE, error(err_optnoarg, opt);
+ errs = TRUE, err_optnoarg(opt);
}
/*
* Now c is the option and p is the parameter.
*r = '\0';
/* XXX ad-hoc diagnostic */
if (!strcmp(s, "input-charset"))
- error(err_futileopt, "Cinput-charset",
+ err_futileopt("Cinput-charset",
"; use --input-charset");
cmdline_cfg_add(para, s);
r = s;
char opt[2];
opt[0] = c;
opt[1] = '\0';
- errs = TRUE, error(err_nosuchopt, opt);
+ errs = TRUE, err_nosuchopt(opt);
}
}
}
/*
* A non-option argument.
*/
- infiles[nfiles++] = p;
+ if (!strcmp(p, "-"))
+ infiles[nfiles++] = NULL; /* special case: read stdin */
+ else
+ infiles[nfiles++] = p;
}
}
/*
* Do the work.
*/
- if (nfiles == 0) {
- error(err_noinput);
+ if (nfiles == 0 && !list_fonts) {
+ err_noinput();
usage();
exit(EXIT_FAILURE);
}
idx = make_index();
sourceform = read_input(&in, idx);
+ if (list_fonts) {
+ listfonts();
+ exit(EXIT_SUCCESS);
+ }
if (!sourceform)
exit(EXIT_FAILURE);
printf("\"");
} else
printf("(no text)");
+ if (w->breaks)
+ printf(" [breaks]");
if (w->alt) {
printf(" alt = {\n");
dbg_prtwordlist(level+1, w->alt);