19 - regprint - print a regexp for debugging
20 == void regprint(regex_t *r, FILE *d);
27 struct re_guts *g = r->re_g;
32 fprintf(d, "%ld states", (long)g->nstates);
33 fprintf(d, ", first %ld last %ld", (long)g->firststate,
36 fprintf(d, ", USEBOL");
38 fprintf(d, ", USEEOL");
42 fprintf(d, ", nsub=%ld", (long)g->nsub);
44 fprintf(d, ", must(%ld) `%*s'", (long)g->mlen, (int)g->mlen,
47 fprintf(d, ", backrefs");
49 fprintf(d, ", nplus %ld", (long)g->nplus);
55 - s_print - print the strip for debugging
56 == static void s_print(struct re_guts *g, FILE *d);
71 # define GAP() { if (offset % 5 == 0) { \
84 if (OP(g->strip[0]) != OEND)
85 fprintf(d, "missing initial OEND!\n");
86 for (s = &g->strip[1]; !done; s++) {
94 if (strchr("\\|()^$.[+*?{}!<> ", (char)opnd) != NULL)
95 fprintf(d, "\\%c", (char)opnd);
97 fprintf(d, "%s", regchar((char)opnd));
115 fprintf(d, "[(%ld)", (long)opnd);
119 for (i = 0; i < g->csetsize+1; i++) /* +1 flushes */
120 if (CHIN(cs, i) && i < g->csetsize) {
122 fprintf(d, "%s", regchar(i));
137 fprintf(d, "(\\<%ld>", (long)opnd);
140 fprintf(d, "<%ld>\\)", (long)opnd);
144 if (OP(*(s+opnd)) != O_PLUS)
145 fprintf(d, "<%ld>", (long)opnd);
148 if (OP(*(s-opnd)) != OPLUS_)
149 fprintf(d, "<%ld>", (long)opnd);
154 if (OP(*(s+opnd)) != O_QUEST)
155 fprintf(d, "<%ld>", (long)opnd);
158 if (OP(*(s-opnd)) != OQUEST_)
159 fprintf(d, "<%ld>", (long)opnd);
163 fprintf(d, "((<%ld>", (long)opnd);
166 fprintf(d, "<%ld>))", (long)opnd);
170 if (OP(*(s+opnd)) != OOR2)
171 fprintf(d, "<%ld>", (long)opnd);
174 if (OP(*(s-opnd)) != OOR1 && OP(*(s-opnd)) != OCH_)
175 fprintf(d, "<%ld>", (long)opnd);
180 if (OP(*(s+opnd)) != OOR2 && OP(*(s+opnd)) != O_CH)
181 fprintf(d, "<%ld>", (long)opnd);
184 if (OP(*(s-opnd)) != OOR1)
185 fprintf(d, "<%ld>", (long)opnd);
189 fprintf(d, "!%d(%d)!", OP(*s), opnd);
198 - regchar - make a character printable
199 == static char *regchar(int ch);
201 static char * /* -> representation */
207 if (isprint(ch) || ch == ' ')
208 sprintf(buf, "%c", ch);
210 sprintf(buf, "\\%o", ch);