~mdw
/
sgt
/
halibut
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Revamp of the Halibut error handling mechanism.
[sgt/halibut]
/
main.c
diff --git
a/main.c
b/main.c
index
eb95fc3
..
405e6ef
100644
(file)
--- a/
main.c
+++ b/
main.c
@@
-43,6
+43,7
@@
int main(int argc, char **argv) {
int nogo;
int errs;
int reportcols;
int nogo;
int errs;
int reportcols;
+ int list_fonts;
int input_charset;
int debug;
int backendbits, prebackbits;
int input_charset;
int debug;
int backendbits, prebackbits;
@@
-68,6
+69,7
@@
int main(int argc, char **argv) {
nfiles = 0;
nogo = errs = FALSE;
reportcols = 0;
nfiles = 0;
nogo = errs = FALSE;
reportcols = 0;
+ list_fonts = 0;
input_charset = CS_ASCII;
debug = 0;
backendbits = 0;
input_charset = CS_ASCII;
debug = 0;
backendbits = 0;
@@
-83,7
+85,7
@@
int main(int argc, char **argv) {
*/
while (--argc) {
char *p = *++argv;
*/
while (--argc) {
char *p = *++argv;
- if (*p == '-') {
+ if (*p == '-'
&& p[1]
) {
/*
* An option.
*/
/*
* An option.
*/
@@
-126,11
+128,11
@@
int main(int argc, char **argv) {
/* do nothing */;
} else if (!strcmp(opt, "-input-charset")) {
if (!val) {
/* do nothing */;
} else if (!strcmp(opt, "-input-charset")) {
if (!val) {
- errs = TRUE, err
or(err_optnoarg,
opt);
+ errs = TRUE, err
_optnoarg(
opt);
} else {
int charset = charset_from_localenc(val);
if (charset == CS_NONE) {
} else {
int charset = charset_from_localenc(val);
if (charset == CS_NONE) {
- errs = TRUE, err
or(err_cmdcharset,
val);
+ errs = TRUE, err
_cmdcharset(
val);
} else {
input_charset = charset;
}
} else {
input_charset = charset;
}
@@
-148,10
+150,12
@@
int main(int argc, char **argv) {
} else if (!strcmp(opt, "-list-charsets")) {
listcharsets();
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 {
} else if (!strcmp(opt, "-precise")) {
reportcols = 1;
} else {
- errs = TRUE, err
or(err_nosuchopt,
opt);
+ errs = TRUE, err
_nosuchopt(
opt);
}
}
p = NULL;
}
}
p = NULL;
@@
-196,7
+200,7
@@
int main(int argc, char **argv) {
char opt[2];
opt[0] = c;
opt[1] = '\0';
char opt[2];
opt[0] = c;
opt[1] = '\0';
- errs = TRUE, err
or(err_optnoarg,
opt);
+ errs = TRUE, err
_optnoarg(
opt);
}
/*
* Now c is the option and p is the parameter.
}
/*
* Now c is the option and p is the parameter.
@@
-220,7
+224,7
@@
int main(int argc, char **argv) {
*r = '\0';
/* XXX ad-hoc diagnostic */
if (!strcmp(s, "input-charset"))
*r = '\0';
/* XXX ad-hoc diagnostic */
if (!strcmp(s, "input-charset"))
- err
or(err_futileopt,
"Cinput-charset",
+ err
_futileopt(
"Cinput-charset",
"; use --input-charset");
cmdline_cfg_add(para, s);
r = s;
"; use --input-charset");
cmdline_cfg_add(para, s);
r = s;
@@
-252,7
+256,7
@@
int main(int argc, char **argv) {
char opt[2];
opt[0] = c;
opt[1] = '\0';
char opt[2];
opt[0] = c;
opt[1] = '\0';
- errs = TRUE, err
or(err_nosuchopt,
opt);
+ errs = TRUE, err
_nosuchopt(
opt);
}
}
}
}
}
}
@@
-260,7
+264,10
@@
int main(int argc, char **argv) {
/*
* A non-option argument.
*/
/*
* A non-option argument.
*/
- infiles[nfiles++] = p;
+ if (!strcmp(p, "-"))
+ infiles[nfiles++] = NULL; /* special case: read stdin */
+ else
+ infiles[nfiles++] = p;
}
}
}
}
@@
-272,8
+279,8
@@
int main(int argc, char **argv) {
/*
* Do the work.
*/
/*
* Do the work.
*/
- if (nfiles == 0) {
- err
or(err_noinput
);
+ if (nfiles == 0
&& !list_fonts
) {
+ err
_noinput(
);
usage();
exit(EXIT_FAILURE);
}
usage();
exit(EXIT_FAILURE);
}
@@
-297,6
+304,10
@@
int main(int argc, char **argv) {
idx = make_index();
sourceform = read_input(&in, idx);
idx = make_index();
sourceform = read_input(&in, idx);
+ if (list_fonts) {
+ listfonts();
+ exit(EXIT_SUCCESS);
+ }
if (!sourceform)
exit(EXIT_FAILURE);
if (!sourceform)
exit(EXIT_FAILURE);
@@
-459,6
+470,8
@@
static void dbg_prtwordlist(int level, word *w) {
printf("\"");
} else
printf("(no text)");
printf("\"");
} else
printf("(no text)");
+ if (w->breaks)
+ printf(" [breaks]");
if (w->alt) {
printf(" alt = {\n");
dbg_prtwordlist(level+1, w->alt);
if (w->alt) {
printf(" alt = {\n");
dbg_prtwordlist(level+1, w->alt);