30 #include "fdiostream.h" 44 fd(_fd), close(_close)
46 setp(buffer, buffer + (bufferSize - 1));
54 if (close) ::close(fd);
58 int fdoutbuf::flushBuffer()
60 int num = pptr() - pbase();
61 if (write(1, buffer, num) != num) {
76 if (flushBuffer() == EOF) {
87 if (flushBuffer() == EOF) {
97 return write(fd, s, num);
158 fd(_fd), close(_close)
160 setg(buffer + putBack,
168 if (close) ::close(fd);
174 if (gptr() < egptr()) {
175 DBG(std::cerr <<
"underflow, no read" << std::endl);
181 int numPutBack = gptr() - eback();
182 if (numPutBack > putBack) numPutBack = putBack;
189 memcpy(buffer + (putBack - numPutBack), gptr() - numPutBack, numPutBack);
192 int num = read(fd, buffer + putBack, bufferSize - putBack);
193 DBG(std::cerr <<
"underflow, read returns: " << num << std::endl);
199 setg(buffer + (putBack - numPutBack),
201 buffer + putBack + num);
206 DBG(std::cerr <<
"returning :" << c << std::endl);
220 fp(_fp), close(_close)
222 setg(buffer + putBack,
230 if (close) fclose(fp);
236 if (gptr() < egptr()) {
237 DBG(std::cerr <<
"underflow, no read" << std::endl);
243 int numPutBack = gptr() - eback();
244 if (numPutBack > putBack) numPutBack = putBack;
248 memcpy(buffer + (putBack - numPutBack), gptr() - numPutBack, numPutBack);
251 int num = fread(buffer + putBack, 1, bufferSize - putBack, fp);
252 DBG(std::cerr <<
"underflow, read returns: " << num << std::endl);
258 setg(buffer + (putBack - numPutBack),
260 buffer + putBack + num);
virtual std::streamsize xsputn(const char *s, std::streamsize num)
virtual int overflow(int c)
top level DAP object to house generic methods
fdoutbuf(int _fd, bool _close)
fpinbuf(FILE *_fp, bool _close)
fdinbuf(int _fd, bool close)