Lines Matching refs:fp
54 * Expand the ungetc buffer `in place'. That is, adjust fp->_p when
60 __submore(fp)
61 FILE *fp;
66 _DIAGASSERT(fp != NULL);
68 if (_UB(fp)._base == fp->_ubuf) {
74 _UB(fp)._base = p;
75 _UB(fp)._size = BUFSIZ;
76 p += BUFSIZ - sizeof(fp->_ubuf);
77 for (i = sizeof(fp->_ubuf); --i >= 0;)
78 p[i] = fp->_ubuf[i];
79 fp->_p = p;
82 i = _UB(fp)._size;
83 p = realloc(_UB(fp)._base, (size_t)(i << 1));
88 fp->_p = p + i;
89 _UB(fp)._base = p;
90 _UB(fp)._size = i << 1;
95 ungetc(c, fp)
97 FILE *fp;
100 _DIAGASSERT(fp != NULL);
106 FLOCKFILE(fp);
107 _SET_ORIENTATION(fp, -1);
108 if ((fp->_flags & __SRD) == 0) {
113 if ((fp->_flags & __SRW) == 0) {
114 FUNLOCKFILE(fp);
117 if (fp->_flags & __SWR) {
118 if (__sflush(fp)) {
119 FUNLOCKFILE(fp);
122 fp->_flags &= ~__SWR;
123 fp->_w = 0;
124 fp->_lbfsize = 0;
126 fp->_flags |= __SRD;
134 if (HASUB(fp)) {
135 if (fp->_r >= _UB(fp)._size && __submore(fp)) {
136 FUNLOCKFILE(fp);
139 *--fp->_p = c;
140 fp->_r++;
141 FUNLOCKFILE(fp);
144 fp->_flags &= ~__SEOF;
151 if (fp->_bf._base != NULL && fp->_p > fp->_bf._base &&
152 fp->_p[-1] == c) {
153 fp->_p--;
154 fp->_r++;
155 FUNLOCKFILE(fp);
163 fp->_ur = fp->_r;
164 fp->_up = fp->_p;
165 _UB(fp)._base = fp->_ubuf;
166 _UB(fp)._size = sizeof(fp->_ubuf);
167 fp->_ubuf[sizeof(fp->_ubuf) - 1] = c;
168 fp->_p = &fp->_ubuf[sizeof(fp->_ubuf) - 1];
169 fp->_r = 1;
170 FUNLOCKFILE(fp);