annotate sbr/printsw.c @ 0:bce86c4163a3

Initial revision
author kono
date Mon, 18 Apr 2005 23:46:02 +0900
parents
children 441a2190cfae
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
bce86c4163a3 Initial revision
kono
parents:
diff changeset
1 /* printsw.c - print switches */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
2
bce86c4163a3 Initial revision
kono
parents:
diff changeset
3 #include "../h/mh.h"
bce86c4163a3 Initial revision
kono
parents:
diff changeset
4
bce86c4163a3 Initial revision
kono
parents:
diff changeset
5
bce86c4163a3 Initial revision
kono
parents:
diff changeset
6 void printsw (substr, swp, prefix)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
7 register char *substr,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
8 *prefix;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
9 register struct swit *swp;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
10 {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
11 int len,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
12 optno;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
13 register int i;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
14 register char *cp,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
15 *cp1,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
16 *sp;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
17 char buf[128];
bce86c4163a3 Initial revision
kono
parents:
diff changeset
18
bce86c4163a3 Initial revision
kono
parents:
diff changeset
19 len = strlen (substr);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
20 for (; swp -> sw; swp++) {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
21 if (!*substr || /* null matches all strings */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
22 (ssequal (substr, swp -> sw) && len >= swp -> minchars)) {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
23 optno = 0;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
24 if (sp = (&swp[1]) -> sw) /* next switch */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
25 if (!*substr && sp[0] == 'n' && sp[1] == 'o' &&
bce86c4163a3 Initial revision
kono
parents:
diff changeset
26 strcmp (&sp[2], swp -> sw) == 0 && (
bce86c4163a3 Initial revision
kono
parents:
diff changeset
27 ((&swp[1]) -> minchars == 0 && swp -> minchars == 0) ||
bce86c4163a3 Initial revision
kono
parents:
diff changeset
28 ((&swp[1]) -> minchars == (swp -> minchars) + 2)))
bce86c4163a3 Initial revision
kono
parents:
diff changeset
29 optno++;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
30 if (swp -> minchars > 0) {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
31 cp = buf;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
32 *cp++ = '(';
bce86c4163a3 Initial revision
kono
parents:
diff changeset
33 if (optno) {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
34 (void) strcpy (cp, "[no]");
bce86c4163a3 Initial revision
kono
parents:
diff changeset
35 cp += strlen (cp);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
36 }
bce86c4163a3 Initial revision
kono
parents:
diff changeset
37 for (cp1 = swp -> sw, i = 0; i < swp -> minchars; i++)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
38 *cp++ = *cp1++;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
39 *cp++ = ')';
bce86c4163a3 Initial revision
kono
parents:
diff changeset
40 while (*cp++ = *cp1++);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
41 printf (" %s%s\n", prefix, buf);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
42 }
bce86c4163a3 Initial revision
kono
parents:
diff changeset
43 else
bce86c4163a3 Initial revision
kono
parents:
diff changeset
44 if (swp -> minchars == 0)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
45 printf (optno ? " %s[no]%s\n" : " %s%s\n",
bce86c4163a3 Initial revision
kono
parents:
diff changeset
46 prefix, swp -> sw);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
47 if (optno)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
48 swp++; /* skip -noswitch */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
49 }
bce86c4163a3 Initial revision
kono
parents:
diff changeset
50 }
bce86c4163a3 Initial revision
kono
parents:
diff changeset
51 }