- case BODY:
- compnum = -1;
- if (! outnum) {
- state = FILEEOF; /* stop now if scan cmd */
- goto finished;
- }
- if (putc ('\n', scnout) == EOF) DIEWRERR();
- FPUTS (tmpbuf);
- /*
- * performance hack: some people like to run "inc" on
- * things like net.sources or large digests. We do a
- * copy directly into the output buffer rather than
- * going through an intermediate buffer.
- *
- * We need the amount of data m_getfld found & don't
- * want to do a strlen on the long buffer so there's
- * a hack in m_getfld to save the amount of data it
- * returned in the global "msg_count".
- */
-body:;
- while (state == BODY) {
-#ifdef LINUX_STDIO
- if (scnout->_IO_write_ptr == scnout->_IO_write_end) {
-#elif defined(__DragonFly__)
- if (((struct __FILE_public *)scnout)->_w <= 0) {
-#else
- if (scnout->_cnt <= 0) {
-#endif
- if (fflush(scnout) == EOF)
- DIEWRERR ();
- }
-#ifdef LINUX_STDIO
- state = m_getfld(state, name, scnout->_IO_write_ptr,
- (long)scnout->_IO_write_ptr-(long)scnout->_IO_write_end , inb);
- scnout->_IO_write_ptr += msg_count;
-#elif defined(__DragonFly__)
- state = m_getfld( state, name, ((struct __FILE_public *)scnout)->_p, -(((struct __FILE_public *)scnout)->_w), inb );
- ((struct __FILE_public *)scnout)->_w -= msg_count;
- ((struct __FILE_public *)scnout)->_p += msg_count;
-#else
- state = m_getfld( state, name, scnout->_ptr, -(scnout->_cnt), inb );
- scnout->_cnt -= msg_count;
- scnout->_ptr += msg_count;
-#endif
- }