Lines Matching refs:fp

74 #define isoption(fp,c)	((fp)->flags&(1L<<((c)-'a')))
75 #define setoption(fp,c) ((fp)->flags|=(1L<<((c)-'a')))
76 #define clroption(fp,c) ((fp)->flags&=~(1L<<((c)-'a')))
79 outline(Fmt_t* fp)
81 register char* cp = fp->outbuf;
86 if (!fp->outp)
88 while (fp->outp[-1] == ' ')
89 fp->outp--;
90 *fp->outp = 0;
96 cp = &fp->outbuf[TABSZ*n];
101 cp = fp->outbuf;
102 fp->nwords = 0;
103 if (!isoption(fp, 'o'))
104 sfputr(fp->out, cp, '\n');
107 n = fp->indent;
115 sfputc(fp->out, ' ');
116 if (fp->quote)
118 if ((d = (fp->outp - cp)) <= 0)
120 else if ((c = fp->outp[-1]) == 'n' && d > 1 && fp->outp[-2] == '\\')
122 sfprintf(fp->out, "\"%s%s\"\n", cp, c == ']' || c == '{' || c == '}' ? "" : " ");
125 sfputr(fp->out, cp, '\n');
126 if (fp->nextdent)
128 fp->indent += fp->nextdent;
129 fp->endbuf -= fp->nextdent;
130 fp->nextdent = 0;
133 fp->outp = 0;
137 split(Fmt_t* fp, char* buf, int splice)
154 if ((*ep == 0 || *buf == '.') && !isoption(fp, 'o'))
158 outline(fp);
159 strcpy(fp->outbuf, buf);
160 fp->outp = fp->outbuf+prefix;
161 outline(fp);
164 if (fp->prefix < prefix && !isoption(fp, 'c'))
165 outline(fp);
166 if (!fp->outp || prefix < fp->prefix)
167 fp->prefix = prefix;
173 if (cp != ep && isoption(fp, 'u'))
189 if (n && isoption(fp, 'o'))
199 if (fp->nwords > 0 && &fp->outp[n] >= fp->endbuf && !fp->retain && !q)
200 outline(fp);
202 if (fp->nwords == 0)
204 if (fp->prefix)
205 memset(fp->outbuf, ' ', fp->prefix);
206 fp->outp = &fp->outbuf[fp->prefix];
211 memcpy(fp->outp, cp, n);
212 fp->outp += n;
213 fp->nwords++;
215 if (isoption(fp, 's') || *buf == 0)
216 outline(fp);
217 else if (fp->outp)
223 if (!isoption(fp, 'o') && strchr(".:!?", fp->outp[-1]))
224 *fp->outp++ = ' ';
225 if (!splice && !fp->retain && (!fp->quote || (fp->outp - fp->outbuf) < 2 || fp->outp[-2] != '\\' || fp->outp[-1] != 'n' && fp->outp[-1] != 't' && fp->outp[-1] != ' '))
226 *fp->outp++ = ' ';
231 dofmt(Fmt_t* fp)
245 while (cp || (cp = sfgetr(fp->in, '\n', 0)) && !(splice = 0) && (lp = cp + sfvalue(fp->in) - 1) || (cp = sfgetr(fp->in, '\n', SF_LASTR)) && (splice = 1) && (lp = cp + sfvalue(fp->in)))
247 if (isoption(fp, 'o'))
249 if (!isoption(fp, 'i'))
251 setoption(fp, 'i');
263 fp->indent = roundof(b, INDENT);
268 if (!isoption(fp, 'q') && cp < lp)
270 setoption(fp, 'q');
277 fp->quote = 1;
296 if (isoption(fp, 'o'))
374 if (fp->quote)
376 fp->section = 0;
408 fp->section = 1;
409 fp->retain = 0;
413 split(fp, buf, 0);
414 outline(fp);
418 else if (fp->section)
423 fp->retain = 1;
430 fp->section = 0;
453 if (fp->endbuf > (fp->outbuf + fp->indent + 2*INDENT))
454 fp->nextdent = 2*INDENT;
458 fp->section = 0;
462 if (fp->indent && (b || *(cp - 2) != 'f'))
466 fp->indent -= 2*INDENT;
467 fp->endbuf += 2*INDENT;
477 fp->section = 0;
482 fp->section = 0;
486 if (fp->retain)
494 split(fp, buf, 0);
497 fp->retain = 0;
498 if (fp->outp >= fp->endbuf)
499 outline(fp);
524 c = isoption(fp, 'o') ? 1 : TABSZ - (dp - buf) % TABSZ;
559 split(fp, buf, splice);