Lines Matching refs:fp
50 * Expand the ungetc buffer `in place'. That is, adjust fp->_p when
56 __submore(FILE *fp)
61 if (fp->_ub._base == fp->_ubuf) {
67 fp->_ub._base = p;
68 fp->_ub._size = BUFSIZ;
69 p += BUFSIZ - sizeof(fp->_ubuf);
70 for (i = sizeof(fp->_ubuf); --i >= 0;)
71 p[i] = fp->_ubuf[i];
72 fp->_p = p;
75 i = fp->_ub._size;
76 p = realloc(fp->_ub._base, (size_t)(i << 1));
81 fp->_p = p + i;
82 fp->_ub._base = p;
83 fp->_ub._size = i << 1;
91 ungetc(int c, FILE *fp)
97 FLOCKFILE(fp);
98 ORIENT(fp, -1);
99 ret = __ungetc(c, fp);
100 FUNLOCKFILE(fp);
108 __ungetc(int c, FILE *fp)
113 if ((fp->_flags & __SRD) == 0) {
118 if ((fp->_flags & __SRW) == 0)
120 if (fp->_flags & __SWR) {
121 if (__sflush(fp))
123 fp->_flags &= ~__SWR;
124 fp->_w = 0;
125 fp->_lbfsize = 0;
127 fp->_flags |= __SRD;
135 if (HASUB(fp)) {
136 if (fp->_r >= fp->_ub._size && __submore(fp))
138 *--fp->_p = c;
139 fp->_r++;
142 fp->_flags &= ~__SEOF;
149 if (fp->_bf._base != NULL && fp->_p > fp->_bf._base &&
150 fp->_p[-1] == c) {
151 fp->_p--;
152 fp->_r++;
160 fp->_ur = fp->_r;
161 fp->_up = fp->_p;
162 fp->_ub._base = fp->_ubuf;
163 fp->_ub._size = sizeof(fp->_ubuf);
164 fp->_ubuf[sizeof(fp->_ubuf) - 1] = c;
165 fp->_p = &fp->_ubuf[sizeof(fp->_ubuf) - 1];
166 fp->_r = 1;