Lines Matching refs:fp
41 * Expand the ungetc buffer `in place'. That is, adjust fp->_p when
47 __submore(FILE *fp)
52 if (_UB(fp)._base == fp->_ubuf) {
58 _UB(fp)._base = p;
59 _UB(fp)._size = BUFSIZ;
60 p += BUFSIZ - sizeof(fp->_ubuf);
61 for (i = sizeof(fp->_ubuf); --i >= 0;)
62 p[i] = fp->_ubuf[i];
63 fp->_p = p;
66 i = _UB(fp)._size;
67 p = realloc(_UB(fp)._base, i << 1);
72 fp->_p = p + i;
73 _UB(fp)._base = p;
74 _UB(fp)._size = i << 1;
79 ungetc(int c, FILE *fp)
85 FLOCKFILE(fp);
86 _SET_ORIENTATION(fp, -1);
87 if ((fp->_flags & __SRD) == 0) {
92 if ((fp->_flags & __SRW) == 0) {
93 error: FUNLOCKFILE(fp);
96 if (fp->_flags & __SWR) {
97 if (__sflush(fp))
99 fp->_flags &= ~__SWR;
100 fp->_w = 0;
101 fp->_lbfsize = 0;
103 fp->_flags |= __SRD;
111 if (HASUB(fp)) {
112 if (fp->_r >= _UB(fp)._size && __submore(fp))
114 *--fp->_p = c;
115 inc_ret: fp->_r++;
116 FUNLOCKFILE(fp);
119 fp->_flags &= ~__SEOF;
126 if (fp->_bf._base != NULL && fp->_p > fp->_bf._base &&
127 fp->_p[-1] == c) {
128 fp->_p--;
136 fp->_ur = fp->_r;
137 fp->_up = fp->_p;
138 _UB(fp)._base = fp->_ubuf;
139 _UB(fp)._size = sizeof(fp->_ubuf);
140 fp->_ubuf[sizeof(fp->_ubuf) - 1] = c;
141 fp->_p = &fp->_ubuf[sizeof(fp->_ubuf) - 1];
142 fp->_r = 1;
143 FUNLOCKFILE(fp);