* sbr/discard.c, sbr/m_getfld.c, uip/scansbr.c: Add support for
authorEric Gillespie <epg@pretzelnet.org>
Fri, 8 Aug 2008 23:45:24 +0000 (23:45 +0000)
committerEric Gillespie <epg@pretzelnet.org>
Fri, 8 Aug 2008 23:45:24 +0000 (23:45 +0000)
DragonFlyBSD stdio (from NetBSD pkgsrc).

ChangeLog
sbr/discard.c
sbr/m_getfld.c
uip/scansbr.c

index 7dc5491..0b0c883 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2008-08-08  Eric Gillespie  <epg@pretzelnet.org>
+
+       * sbr/discard.c, sbr/m_getfld.c, uip/scansbr.c: Add support for
+       DragonFlyBSD stdio (from NetBSD pkgsrc).
+
 2008-08-05  Eric Gillespie  <epg@pretzelnet.org>
 
        * uip/folder.c: chdir(nmhdir) in main rather than in dodir, which
index 7c132ce..55c160b 100644 (file)
@@ -55,7 +55,7 @@ discard (FILE *io)
 # endif
 #endif
 
-#ifdef _FSTDIO
+#if defined(_FSTDIO) || defined(__DragonFly__)
     fpurge (io);
 #else
 # ifdef LINUX_STDIO
index 59b8682..c542d52 100644 (file)
@@ -266,6 +266,9 @@ m_getfld (int state, unsigned char *name, unsigned char *buf,
                bp = sp = (unsigned char *) iob->_IO_read_ptr - 1;
                j = (cnt = ((long) iob->_IO_read_end -
                        (long) iob->_IO_read_ptr)  + 1) < i ? cnt : i;
+#elif defined(__DragonFly__)
+               bp = sp = (unsigned char *) ((struct __FILE_public *)iob)->_p - 1;
+               j = (cnt = ((struct __FILE_public *)iob)->_r+1) < i ? cnt : i;
 #else
                bp = sp = (unsigned char *) iob->_ptr - 1;
                j = (cnt = iob->_cnt+1) < i ? cnt : i;
@@ -278,6 +281,8 @@ m_getfld (int state, unsigned char *name, unsigned char *buf,
 #ifdef LINUX_STDIO
                    iob->_IO_read_ptr = iob->_IO_read_end;
                    if (__underflow(iob) == EOF) {
+#elif defined(__DragonFly__)
+                   if (__srget(iob) == EOF) {
 #else
                    if (_filbuf(iob) == EOF) {
 #endif
@@ -291,6 +296,9 @@ m_getfld (int state, unsigned char *name, unsigned char *buf,
                } else {
 #ifdef LINUX_STDIO
                    iob->_IO_read_ptr = bp + 1;
+#elif defined(__DragonFly__)
+                   ((struct __FILE_public *)iob)->_p = bp + 1;
+                   ((struct __FILE_public *)iob)->_r = cnt - 1;
 #else
                    iob->_ptr = bp + 1;
                    iob->_cnt = cnt - 1;
@@ -335,6 +343,9 @@ m_getfld (int state, unsigned char *name, unsigned char *buf,
 #ifdef LINUX_STDIO
                cnt = (long) iob->_IO_read_end - (long) iob->_IO_read_ptr;
                bp = (unsigned char *) --iob->_IO_read_ptr;
+#elif defined(__DragonFly__)
+               cnt = ((struct __FILE_public *)iob)->_r++;
+               bp = (unsigned char *) --((struct __FILE_public *)iob)->_p;
 #else
                cnt = iob->_cnt++;
                bp = (unsigned char *) --iob->_ptr;
@@ -349,6 +360,11 @@ m_getfld (int state, unsigned char *name, unsigned char *buf,
                        j = ep - (unsigned char *) iob->_IO_read_ptr;
                        memcpy (cp, iob->_IO_read_ptr, j);
                        iob->_IO_read_ptr = ep;
+#elif defined(__DragonFly__)
+                       j = ep - (unsigned char *) ((struct __FILE_public *)iob)->_p;
+                       memcpy (cp, ((struct __FILE_public *)iob)->_p, j);
+                       ((struct __FILE_public *)iob)->_p = ep;
+                       ((struct __FILE_public *)iob)->_r -= j;
 #else
                        j = ep - (unsigned char *) iob->_ptr;
                        memcpy (cp, iob->_ptr, j);
@@ -368,6 +384,9 @@ m_getfld (int state, unsigned char *name, unsigned char *buf,
 #ifdef LINUX_STDIO
                c += bp - (unsigned char *) iob->_IO_read_ptr;
                memcpy( cp, iob->_IO_read_ptr, c);
+#elif defined(__DragonFly__)
+               c += bp - (unsigned char *) ((struct __FILE_public *)iob)->_p;
+               memcpy( cp, ((struct __FILE_public *)iob)->_p, c);
 #else
                c += bp - (unsigned char *) iob->_ptr;
                memcpy( cp, iob->_ptr, c);
@@ -378,6 +397,9 @@ m_getfld (int state, unsigned char *name, unsigned char *buf,
                    /* the dest buffer is full */
 #ifdef LINUX_STDIO
                    iob->_IO_read_ptr += c;
+#elif defined(__DragonFly__)
+                   ((struct __FILE_public *)iob)->_r -= c;
+                   ((struct __FILE_public *)iob)->_p += c;
 #else
                    iob->_cnt -= c;
                    iob->_ptr += c;
@@ -397,6 +419,9 @@ m_getfld (int state, unsigned char *name, unsigned char *buf,
                iob->_IO_read_ptr = iob->_IO_read_end;
                c = __underflow(iob);
                iob->_IO_read_ptr++;    /* NOT automatic! */
+#elif defined(__DragonFly__)
+               *cp++ =j = *(((struct __FILE_public *)iob)->_p + c);
+               c = __srget(iob);
 #else
                *cp++ = j = *(iob->_ptr + c);
                c = _filbuf(iob);
@@ -406,6 +431,9 @@ m_getfld (int state, unsigned char *name, unsigned char *buf,
                    if (c != EOF) {
 #ifdef LINUX_STDIO
                        --iob->_IO_read_ptr;
+#elif defined(__DragonFly__)
+                       --((struct __FILE_public *)iob)->_p;
+                       ++((struct __FILE_public *)iob)->_r;
 #else
                        --iob->_ptr;
                        ++iob->_cnt;
@@ -429,6 +457,9 @@ m_getfld (int state, unsigned char *name, unsigned char *buf,
 #ifdef LINUX_STDIO
            bp = (unsigned char *) --iob->_IO_read_ptr;
            cnt = (long) iob->_IO_read_end - (long) iob->_IO_read_ptr;
+#elif defined(__DragonFly__)
+           bp = (unsigned char *) --((struct __FILE_public *)iob)->_p;
+           cnt = ++((struct __FILE_public *)iob)->_r;
 #else
            bp = (unsigned char *) --iob->_ptr;
            cnt = ++iob->_cnt;
@@ -491,6 +522,9 @@ m_getfld (int state, unsigned char *name, unsigned char *buf,
            memcpy( buf, bp, c );
 #ifdef LINUX_STDIO
            iob->_IO_read_ptr += c;
+#elif defined(__DragonFly__)
+           ((struct __FILE_public *)iob)->_r -= c;
+           ((struct __FILE_public *)iob)->_p += c;
 #else
            iob->_cnt -= c;
            iob->_ptr += c;
index 6a9278b..df18258 100644 (file)
@@ -256,6 +256,8 @@ 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
@@ -266,6 +268,10 @@ body:;
                    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;