112
117
static void handle_confline (char *, FILE *);
113
118
static void makedoc (FILE *, FILE *);
114
119
static void pretty_default (char *, size_t, const char *, int);
115
static int sgml_fputc (int, FILE *);
116
static int sgml_fputs (const char *, FILE *);
120
static int sgml_fputc (int, FILE *, int);
121
static int sgml_fputs (const char *, FILE *, int);
117
122
static int sgml_id_fputs (const char *, FILE *);
119
124
int main (int argc, char *argv[])
584
589
if (*v < ' ' || *v & 0x80)
586
591
char_to_escape (buff, (unsigned int) *v);
587
sgml_fputs (buff, out);
592
sgml_fputs (buff, out, 1);
590
sgml_fputc ((unsigned int) *v, out);
595
sgml_fputc ((unsigned int) *v, out, 1);
594
static int sgml_fputc (int c, FILE *out)
599
static int sgml_fputc (int c, FILE *out, int full)
603
/* the bare minimum for escaping */
598
604
case '<': return fputs ("<", out);
599
605
case '>': return fputs (">", out);
600
case '$': return fputs ("$", out);
601
case '_': return fputs ("_", out);
602
case '%': return fputs ("%", out);
603
606
case '&': return fputs ("&", out);
604
case '\\': return fputs ("\", out);
605
case '"': return fputs (""", out);
606
case '[': return fputs ("[", out);
607
case ']': return fputs ("]", out);
608
case '~': return fputs ("˜", out);
607
/* map to entities, fall-through to raw if !full */
608
case '$': if (full) return fputs ("$", out);
609
case '_': if (full) return fputs ("_", out);
610
case '%': if (full) return fputs ("%", out);
611
case '\\': if (full) return fputs ("\", out);
612
case '"': if (full) return fputs (""", out);
613
case '[': if (full) return fputs ("[", out);
614
case ']': if (full) return fputs ("]", out);
615
case '~': if (full) return fputs ("˜", out);
616
case '|': if (full) return fputs ("|", out);
617
case '^': if (full) return fputs ("ˆ", out);
609
618
default: return fputc (c, out);
613
static int sgml_fputs (const char *s, FILE *out)
622
static int sgml_fputs (const char *s, FILE *out, int full)
616
if (sgml_fputc ((unsigned int) *s, out) == EOF)
625
if (sgml_fputc ((unsigned int) *s, out, full) == EOF)
697
711
fputs ("\n<sect2 id=\"", out);
698
712
sgml_id_fputs(varname, out);
699
713
fputs ("\">\n<title>", out);
700
sgml_fputs (varname, out);
714
sgml_fputs (varname, out, 1);
701
715
fprintf (out, "</title>\n<literallayout>Type: %s", type2human (type));
703
718
if (type == DT_STR || type == DT_RX || type == DT_ADDR || type == DT_PATH)
705
fputs ("\nDefault: "", out);
706
sgml_print_strval (val, out);
707
fputs (""</literallayout>\n", out);
722
fputs ("\nDefault: <quote><literal>", out);
723
sgml_print_strval (val, out);
724
fputs ("</literal></quote>", out);
728
fputs ("\nDefault: (empty)", out);
730
fputs ("</literallayout>\n", out);
710
733
fprintf (out, "\nDefault: %s</literallayout>\n", val);
733
756
** - .dt starts a term in a definition list.
734
757
** - .dd starts a definition in a definition list.
735
758
** - .de on a line finishes a definition list.
759
** - .il on a line starts an itemzied list
760
** - .dd starts an item in an itemized list
761
** - .ie on a line finishes an itemized list
736
762
** - .ts on a line starts a "tscreen" environment (name taken from SGML).
737
763
** - .te on a line finishes this environment.
738
764
** - .pp on a line starts a paragraph.
766
792
if (docstat & (D_DL))
767
793
docstat = print_it (SP_END_DL, NULL, out, docstat);
769
if (docstat & (D_EM | D_BF))
795
if (docstat & (D_EM | D_BF | D_TT))
770
796
docstat = print_it (SP_END_FT, NULL, out, docstat);
772
798
docstat = print_it (SP_END_SECT, NULL, out, docstat);
1008
1070
if (docstat & D_EM) fputs ("</emphasis>", out);
1009
1071
if (docstat & D_BF) fputs ("</emphasis>", out);
1010
docstat &= ~(D_EM|D_BF);
1072
if (docstat & D_TT) fputs ("</literal>", out);
1073
docstat &= ~(D_EM|D_BF|D_TT);
1013
1076
case SP_START_BF:
1015
1078
fputs ("<emphasis role=\"bold\">", out);
1016
1079
docstat |= D_BF;
1080
docstat &= ~(D_EM|D_TT);
1020
1083
case SP_START_EM:
1022
1085
fputs ("<emphasis>", out);
1023
1086
docstat |= D_EM;
1087
docstat &= ~(D_BF|D_TT);
1092
fputs ("<literal>", out);
1094
docstat &= ~(D_BF|D_EM);
1027
1097
case SP_NEWLINE:
1089
1169
docstat |= D_DD;
1090
fputs ("</term>\n<listitem><para>", out);
1171
fputs("</term>\n", out);
1172
fputs ("<listitem><para>", out);
1093
1175
case SP_END_DD:
1095
1177
docstat &= ~D_DD;
1096
fputs ("</para></listitem></varlistentry>\n", out);
1178
fputs ("</para></listitem>", out);
1180
fputs("</varlistentry>\n", out);
1099
1183
case SP_END_DL:
1112
1213
if (docstat & D_TAB)
1214
sgml_fputs (str, out, 0);
1115
sgml_fputs (str, out);
1221
if (!strncmp (str, "``", 2))
1223
fputs ("<quote>", out);
1226
else if (!strncmp (str, "''", 2))
1228
fputs ("</quote>", out);
1232
sgml_fputc (*str, out, 1);
1183
1303
return print_it (SP_START_DL, NULL, out, docstat);
1184
1304
else if (!strncmp (l, ".de", 3))
1185
1305
return print_it (SP_END_DL, NULL, out, docstat);
1306
else if (!strncmp (l, ".il", 3))
1307
return print_it (SP_START_IL, NULL, out, docstat);
1308
else if (!strncmp (l, ".ie", 3))
1309
return print_it (SP_END_IL, NULL, out, docstat);
1186
1310
else if (!strncmp (l, ". ", 2))
1210
1334
docstat = print_it (SP_START_BF, NULL, out, docstat);
1337
else if (!strncmp (s, "\\fC", 3))
1339
docstat = commit_buff (buff, &d, out, docstat);
1340
docstat = print_it (SP_START_TT, NULL, out, docstat);
1213
1343
else if (!strncmp (s, "\\fP", 3))
1215
1345
docstat = commit_buff (buff, &d, out, docstat);
1230
1360
else if (!strncmp (s, ".dd", 3))
1362
if ((docstat & D_IL) && (docstat & D_DD))
1364
docstat = commit_buff (buff, &d, out, docstat);
1365
docstat = print_it (SP_END_DD, NULL, out, docstat);
1232
1367
docstat = commit_buff (buff, &d, out, docstat);
1233
1368
docstat = print_it (SP_DD, NULL, out, docstat);