Merge __sFILEX into __FILE. Let __fpending handle the ungetc buffer
authorJoerg Sonnenberger <joerg@dragonflybsd.org>
Sat, 23 Jul 2005 23:14:44 +0000 (23:14 +0000)
committerJoerg Sonnenberger <joerg@dragonflybsd.org>
Sat, 23 Jul 2005 23:14:44 +0000 (23:14 +0000)
correctly.

17 files changed:
lib/libc/stdio/__fpending.c
lib/libc/stdio/_flock_stub.c
lib/libc/stdio/asprintf.c
lib/libc/stdio/findfp.c
lib/libc/stdio/fseek.c
lib/libc/stdio/local.h
lib/libc/stdio/priv_stdio.h
lib/libc/stdio/refill.c
lib/libc/stdio/snprintf.c
lib/libc/stdio/sprintf.c
lib/libc/stdio/sscanf.c
lib/libc/stdio/ungetc.c
lib/libc/stdio/vasprintf.c
lib/libc/stdio/vfprintf.c
lib/libc/stdio/vsnprintf.c
lib/libc/stdio/vsprintf.c
lib/libc/stdio/vsscanf.c

index fa2b68b..8c2e5ae 100644 (file)
  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $DragonFly: src/lib/libc/stdio/__fpending.c,v 1.1 2005/07/23 20:23:05 joerg Exp $
+ * $DragonFly: src/lib/libc/stdio/__fpending.c,v 1.2 2005/07/23 23:14:44 joerg Exp $
  */
 
 #include <stdio.h>
 
 #include "priv_stdio.h"
+#include "local.h"
 
 __ssize_t
 __fpending(FILE *fp)
 {
-       return(fp->pub._p - fp->_bf._base);
+       if (HASUB(fp))
+               return(fp->_up - fp->_bf._base);
+       else
+               return(fp->pub._p - fp->_bf._base);
 }
index 02c4816..c055a25 100644 (file)
@@ -30,7 +30,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/lib/libc/stdio/_flock_stub.c,v 1.3 1999/08/28 00:00:55 peter Exp $
- * $DragonFly: src/lib/libc/stdio/_flock_stub.c,v 1.9 2005/07/23 20:23:05 joerg Exp $
+ * $DragonFly: src/lib/libc/stdio/_flock_stub.c,v 1.10 2005/07/23 23:14:44 joerg Exp $
  *
  */
 
@@ -58,23 +58,21 @@ __weak_reference(__ftrylockfile, _ftrylockfile);
 __weak_reference(__funlockfile, funlockfile);
 __weak_reference(__funlockfile, _funlockfile);
 
-#define _lock _extra
-
 void
 __flockfile(FILE *fp)
 {
        pthread_t curthread = _pthread_self();
 
-       if (fp->_lock->fl_owner == curthread)
-               fp->_lock->fl_count++;
+       if (fp->fl_owner == curthread)
+               fp->fl_count++;
        else {
                /*
                 * Make sure this mutex is treated as a private
                 * internal mutex:
                 */
-               _pthread_mutex_lock(&fp->_lock->fl_mutex);
-               fp->_lock->fl_owner = curthread;
-               fp->_lock->fl_count = 1;
+               _pthread_mutex_lock(&fp->fl_mutex);
+               fp->fl_owner = curthread;
+               fp->fl_count = 1;
        }
 }
 
@@ -90,15 +88,15 @@ __ftrylockfile(FILE *fp)
        pthread_t curthread = _pthread_self();
        int     ret = 0;
 
-       if (fp->_lock->fl_owner == curthread)
-               fp->_lock->fl_count++;
+       if (fp->fl_owner == curthread)
+               fp->fl_count++;
        /*
         * Make sure this mutex is treated as a private
         * internal mutex:
         */
-       else if (_pthread_mutex_trylock(&fp->_lock->fl_mutex) == 0) {
-               fp->_lock->fl_owner = curthread;
-               fp->_lock->fl_count = 1;
+       else if (_pthread_mutex_trylock(&fp->fl_mutex) == 0) {
+               fp->fl_owner = curthread;
+               fp->fl_count = 1;
        }
        else
                ret = -1;
@@ -113,26 +111,26 @@ __funlockfile(FILE *fp)
        /*
         * Check if this file is owned by the current thread:
         */
-       if (fp->_lock->fl_owner == curthread) {
+       if (fp->fl_owner == curthread) {
                /*
                 * Check if this thread has locked the FILE
                 * more than once:
                 */
-               if (fp->_lock->fl_count > 1)
+               if (fp->fl_count > 1)
                        /*
                         * Decrement the count of the number of
                         * times the running thread has locked this
                         * file:
                         */
-                       fp->_lock->fl_count--;
+                       fp->fl_count--;
                else {
                        /*
                         * The running thread will release the
                         * lock now:
                         */
-                       fp->_lock->fl_count = 0;
-                       fp->_lock->fl_owner = NULL;
-                       _pthread_mutex_unlock(&fp->_lock->fl_mutex);
+                       fp->fl_count = 0;
+                       fp->fl_owner = NULL;
+                       _pthread_mutex_unlock(&fp->fl_mutex);
                }
        }
 }
index e700cf3..e2d6c2a 100644 (file)
@@ -27,7 +27,7 @@
  * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
  * $FreeBSD: src/lib/libc/stdio/asprintf.c,v 1.6 1999/08/28 00:00:55 peter Exp $
- * $DragonFly: src/lib/libc/stdio/asprintf.c,v 1.6 2005/07/23 20:23:05 joerg Exp $
+ * $DragonFly: src/lib/libc/stdio/asprintf.c,v 1.7 2005/07/23 23:14:44 joerg Exp $
  */
 
 #include <stdio.h>
@@ -44,7 +44,6 @@ asprintf(char **str, char const *fmt, ...)
        int ret;
        va_list ap;
        FILE f;
-       struct __sFILEX ext;
 
        f.pub._fileno = -1;
        f.pub._flags = __SWR | __SSTR | __SALC;
@@ -55,8 +54,10 @@ asprintf(char **str, char const *fmt, ...)
                return (-1);
        }
        f._bf._size = f.pub._w = 127;           /* Leave room for the NUL */
-       f._extra = &ext;
-       INITEXTRA(&f);
+       f._up = NULL;
+       f.fl_mutex = PTHREAD_MUTEX_INITIALIZER;
+       f.fl_owner = NULL;
+       f.fl_count = 0;
        va_start(ap, fmt);
        ret = __vfprintf(&f, fmt, ap);          /* Use unlocked __vfprintf */
        va_end(ap);
index ec6638d..8e283ae 100644 (file)
@@ -35,7 +35,7 @@
  *
  * @(#)findfp.c        8.2 (Berkeley) 1/4/94
  * $FreeBSD: src/lib/libc/stdio/findfp.c,v 1.7.2.3 2001/08/17 02:56:31 peter Exp $
- * $DragonFly: src/lib/libc/stdio/findfp.c,v 1.8 2005/07/23 20:23:06 joerg Exp $
+ * $DragonFly: src/lib/libc/stdio/findfp.c,v 1.9 2005/07/23 23:14:44 joerg Exp $
  */
 
 #include <sys/param.h>
@@ -57,17 +57,14 @@ int __sdidinit;
 
 #define        std(flags, file) \
        {{0,flags,file,0,0,0},{NULL, 0},__sF+file,__sclose,__sread,__sseek,__swrite, \
-        {NULL,0}, __sFX + file, 0, {0,0,0}, {0}, {NULL,0}, 0,0 }
+        {NULL,0}, 0, {0,0,0}, {0}, {NULL,0}, 0,0, NULL, PTHREAD_MUTEX_INITIALIZER, NULL, 0 }
 /*      p flags file r w _bf  cookie      close    read    seek    write */
-/*     _ub _extra */
+/*     _ub */
 
                                /* the usual - (stdin + stdout + stderr) */
 static FILE usual[FOPEN_MAX - 3];
-static struct __sFILEX usual_extra[FOPEN_MAX - 3];
 static struct glue uglue = { NULL, FOPEN_MAX - 3, usual };
 
-static struct __sFILEX __sFX[3];
-
 FILE __sF[3] = {
        std(__SRD, STDIN_FILENO),               /* stdin */
        std(__SWR, STDOUT_FILENO),              /* stdout */
@@ -109,24 +106,18 @@ moreglue(int n)
 {
        struct glue *g;
        static FILE empty;
-       static struct __sFILEX emptyx;
        FILE *p;
-       struct __sFILEX *fx;
 
-       g = (struct glue *)malloc(sizeof(*g) + ALIGNBYTES + n * sizeof(FILE) +
-           n * sizeof(struct __sFILEX));
+       g = (struct glue *)malloc(sizeof(*g) + ALIGNBYTES + n * sizeof(FILE));
        if (g == NULL)
                return (NULL);
        p = (FILE *)ALIGN(g + 1);
-       fx = (struct __sFILEX *)&p[n];
        g->next = NULL;
        g->niobs = n;
        g->iobs = p;
        while (--n >= 0) {
                *p = empty;
-               p->_extra = fx;
-               *p->_extra = emptyx;
-               p++, fx++;
+               p++;
        }
        return (g);
 }
@@ -174,6 +165,10 @@ found:
        fp->_ub._size = 0;
        fp->_lb._base = NULL;   /* no line buffer */
        fp->_lb._size = 0;
+       fp->_up = NULL;
+       fp->fl_mutex = PTHREAD_MUTEX_INITIALIZER;
+       fp->fl_owner = NULL;
+       fp->fl_count = 0;
        /* fp->_lock = NULL; */
        return (fp);
 }
@@ -229,14 +224,8 @@ _cleanup(void)
 void
 __sinit(void)
 {
-       int     i;
-
        THREAD_LOCK();
        if (__sdidinit == 0) {
-               /* Set _extra for the usual suspects. */
-               for (i = 0; i < FOPEN_MAX - 3; i++)
-                       usual[i]._extra = &usual_extra[i];
-
                /* Make sure we clean up on exit. */
                __cleanup = _cleanup;           /* conservative */
                __sdidinit = 1;
index 60db812..afdf199 100644 (file)
@@ -35,7 +35,7 @@
  *
  * @(#)fseek.c 8.3 (Berkeley) 1/2/94
  * $FreeBSD: src/lib/libc/stdio/fseek.c,v 1.9.2.1 2001/03/05 10:56:58 obrien Exp $
- * $DragonFly: src/lib/libc/stdio/fseek.c,v 1.8 2005/07/23 20:23:06 joerg Exp $
+ * $DragonFly: src/lib/libc/stdio/fseek.c,v 1.9 2005/07/23 23:14:44 joerg Exp $
  */
 
 #include "namespace.h"
@@ -197,7 +197,7 @@ _fseeko(FILE *fp, off_t offset, int whence)
         */
        if (HASUB(fp)) {
                curoff += fp->pub._r;   /* kill off ungetc */
-               n = fp->_extra->_up - fp->_bf._base;
+               n = fp->_up - fp->_bf._base;
                curoff -= n;
                n += fp->_ur;
        } else {
index afc5f21..63be29b 100644 (file)
  *     @(#)local.h     8.3 (Berkeley) 7/3/94
  *
  * $FreeBSD: src/lib/libc/stdio/local.h,v 1.1.1.2.6.1 2001/03/05 11:27:49 obrien Exp $
- * $DragonFly: src/lib/libc/stdio/local.h,v 1.7 2005/07/23 20:23:06 joerg Exp $
+ * $DragonFly: src/lib/libc/stdio/local.h,v 1.8 2005/07/23 23:14:44 joerg Exp $
  */
 
 #include <sys/types.h> /* for off_t */
-#include <pthread.h>
 
 #ifndef _MACHINE_STDINT_H_
 #include <machine/stdint.h>    /* __size_t */
@@ -70,14 +69,6 @@ extern int   __vfprintf(FILE *, const char *, __va_list);
 
 extern int     __sdidinit;
 
-/* hold a buncha junk that would grow the ABI */
-struct __sFILEX {
-       unsigned char   *_up;   /* saved _p when _p is doing ungetc data */
-       pthread_mutex_t fl_mutex;       /* used for MT-safety */
-       pthread_t       fl_owner;       /* current owner */
-       int             fl_count;       /* recursive lock count */
-};
-
 /*
  * Return true iff the given FILE cannot be written now.
  */
@@ -104,11 +95,3 @@ struct __sFILEX {
        free((char *)(fp)->_lb._base); \
        (fp)->_lb._base = NULL; \
 }
-
-#define        INITEXTRA(fp) { \
-       (fp)->_extra->_up = NULL; \
-       (fp)->_extra->fl_mutex = PTHREAD_MUTEX_INITIALIZER; \
-       (fp)->_extra->fl_owner = NULL; \
-       (fp)->_extra->fl_count = 0; \
-}
-
index 3a100ab..4082dbe 100644 (file)
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $DragonFly: src/lib/libc/stdio/priv_stdio.h,v 1.1 2005/07/23 20:23:06 joerg Exp $
+ * $DragonFly: src/lib/libc/stdio/priv_stdio.h,v 1.2 2005/07/23 23:14:44 joerg Exp $
  */
 
 #ifndef _LIBC_PRIV_STDIO_H_
 #define _LIBC_PRIV_STDIO_H_
 
+#include <pthread.h>
+
 /* stdio buffers */
 struct __sbuf {
        unsigned char *_base;
        int     _size;
 };
 
-struct __sFILEX;
-
 /*
  * _ub, _up, and _ur are used when ungetc() pushes back more characters
  * than fit in the current _bf, or when ungetc() pushes back a character
@@ -65,7 +65,6 @@ struct __FILE {
 
        /* separate buffer for long sequences of ungetc() */
        struct  __sbuf _ub;     /* ungetc buffer */
-       struct  __sFILEX *_extra;
        int     _ur;            /* saved _r when _r is counting ungetc data */
 
        /* tricks to meet minimum requirements even when malloc() fails */
@@ -78,6 +77,11 @@ struct __FILE {
        /* Unix stdio files get aligned to block boundaries on fseek() */
        int     _blksize;       /* stat.st_blksize (may be != _bf._size) */
        fpos_t  _offset;        /* current lseek offset (see WARNING) */
+
+       unsigned char   *_up;   /* saved _p when _p is doing ungetc data */
+       pthread_mutex_t fl_mutex;       /* used for MT-safety */
+       pthread_t       fl_owner;       /* current owner */
+       int             fl_count;       /* recursive lock count */
 };
 
 /*
index 008a750..28ce6bf 100644 (file)
@@ -35,7 +35,7 @@
  *
  * @(#)refill.c        8.1 (Berkeley) 6/4/93
  * $FreeBSD: src/lib/libc/stdio/refill.c,v 1.8.2.1 2001/03/05 11:27:49 obrien Exp $
- * $DragonFly: src/lib/libc/stdio/refill.c,v 1.8 2005/07/23 20:23:06 joerg Exp $
+ * $DragonFly: src/lib/libc/stdio/refill.c,v 1.9 2005/07/23 23:14:44 joerg Exp $
  */
 
 #include <errno.h>
@@ -100,7 +100,7 @@ __srefill(FILE *fp)
                if (HASUB(fp)) {
                        FREEUB(fp);
                        if ((fp->pub._r = fp->_ur) != 0) {
-                               fp->pub._p = fp->_extra->_up;
+                               fp->pub._p = fp->_up;
                                return (0);
                        }
                }
index 917baa2..29adcfb 100644 (file)
@@ -35,7 +35,7 @@
  *
  * @(#)snprintf.c      8.1 (Berkeley) 6/4/93
  * $FreeBSD: src/lib/libc/stdio/snprintf.c,v 1.12 1999/08/28 00:01:16 peter Exp $
- * $DragonFly: src/lib/libc/stdio/snprintf.c,v 1.5 2005/07/23 20:23:06 joerg Exp $
+ * $DragonFly: src/lib/libc/stdio/snprintf.c,v 1.6 2005/07/23 23:14:44 joerg Exp $
  */
 
 #include <limits.h>
@@ -52,7 +52,6 @@ snprintf(char *str, size_t n, char const *fmt, ...)
        int ret;
        va_list ap;
        FILE f;
-       struct __sFILEX ext;
 
        on = n;
        if (n != 0)
@@ -64,8 +63,10 @@ snprintf(char *str, size_t n, char const *fmt, ...)
        f.pub._flags = __SWR | __SSTR;
        f._bf._base = f.pub._p = (unsigned char *)str;
        f._bf._size = f.pub._w = n;
-       f._extra = &ext;
-       INITEXTRA(&f);
+       f._up = NULL;
+       f.fl_mutex = PTHREAD_MUTEX_INITIALIZER;
+       f.fl_owner = NULL;
+       f.fl_count = 0;
        ret = __vfprintf(&f, fmt, ap);          /* Use unlocked __vfprintf */
        if (on > 0)
                *f.pub._p = '\0';
index 59ac99c..8a8999e 100644 (file)
@@ -35,7 +35,7 @@
  *
  * @(#)sprintf.c       8.1 (Berkeley) 6/4/93
  * $FreeBSD: src/lib/libc/stdio/sprintf.c,v 1.6 1999/08/28 00:01:17 peter Exp $
- * $DragonFly: src/lib/libc/stdio/sprintf.c,v 1.5 2005/07/23 20:23:06 joerg Exp $
+ * $DragonFly: src/lib/libc/stdio/sprintf.c,v 1.6 2005/07/23 23:14:44 joerg Exp $
  */
 
 #include <stdio.h>
@@ -51,14 +51,15 @@ sprintf(char *str, char const *fmt, ...)
        int ret;
        va_list ap;
        FILE f;
-       struct __sFILEX ext;
 
        f.pub._fileno = -1;
        f.pub._flags = __SWR | __SSTR;
        f._bf._base = f.pub._p = (unsigned char *)str;
        f._bf._size = f.pub._w = INT_MAX;
-       f._extra = &ext;
-       INITEXTRA(&f);
+       f._up = NULL;
+       f.fl_mutex = PTHREAD_MUTEX_INITIALIZER;
+       f.fl_owner = NULL;
+       f.fl_count = 0;
        va_start(ap, fmt);
        ret = __vfprintf(&f, fmt, ap);          /* Use unlocked __vfprintf */
        va_end(ap);
index 69d0a6c..ac5dcd7 100644 (file)
@@ -35,7 +35,7 @@
  *
  * @(#)sscanf.c        8.1 (Berkeley) 6/4/93
  * $FreeBSD: src/lib/libc/stdio/sscanf.c,v 1.6 1999/08/28 00:01:17 peter Exp $
- * $DragonFly: src/lib/libc/stdio/sscanf.c,v 1.6 2005/07/23 20:23:06 joerg Exp $
+ * $DragonFly: src/lib/libc/stdio/sscanf.c,v 1.7 2005/07/23 23:14:44 joerg Exp $
  */
 
 #include <stdio.h>
@@ -61,7 +61,6 @@ sscanf(const char *str, char const *fmt, ...)
        int ret;
        va_list ap;
        FILE f;
-       struct __sFILEX ext;
 
        f.pub._fileno = -1;
        f.pub._flags = __SRD;
@@ -70,8 +69,10 @@ sscanf(const char *str, char const *fmt, ...)
        f._read = eofread;
        f._ub._base = NULL;
        f._lb._base = NULL;
-       f._extra = &ext;
-       INITEXTRA(&f);
+       f._up = NULL;
+       f.fl_mutex = PTHREAD_MUTEX_INITIALIZER;
+       f.fl_owner = NULL;
+       f.fl_count = 0;
        va_start(ap, fmt);
        ret = __svfscanf(&f, fmt, ap);
        va_end(ap);
index 3a5f1dc..3643e02 100644 (file)
@@ -35,7 +35,7 @@
  *
  * @(#)ungetc.c        8.2 (Berkeley) 11/3/93
  * $FreeBSD: src/lib/libc/stdio/ungetc.c,v 1.7.2.1 2001/03/05 11:27:49 obrien Exp $
- * $DragonFly: src/lib/libc/stdio/ungetc.c,v 1.6 2005/07/23 20:23:06 joerg Exp $
+ * $DragonFly: src/lib/libc/stdio/ungetc.c,v 1.7 2005/07/23 23:14:44 joerg Exp $
  */
 
 #include "namespace.h"
@@ -165,7 +165,7 @@ __ungetc(int c, FILE *fp)
         * Initially, we will use the `reserve' buffer.
         */
        fp->_ur = fp->pub._r;
-       fp->_extra->_up = fp->pub._p;
+       fp->_up = fp->pub._p;
        fp->_ub._base = fp->_ubuf;
        fp->_ub._size = sizeof(fp->_ubuf);
        fp->_ubuf[sizeof(fp->_ubuf) - 1] = c;
index d3e503f..864501e 100644 (file)
@@ -27,7 +27,7 @@
  * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
  * $FreeBSD: src/lib/libc/stdio/vasprintf.c,v 1.11 1999/08/28 00:01:19 peter Exp $
- * $DragonFly: src/lib/libc/stdio/vasprintf.c,v 1.6 2005/07/23 20:23:06 joerg Exp $
+ * $DragonFly: src/lib/libc/stdio/vasprintf.c,v 1.7 2005/07/23 23:14:44 joerg Exp $
  */
 
 #include <stdio.h>
@@ -43,7 +43,6 @@ vasprintf(char **str, const char *fmt, va_list ap)
 {
        int ret;
        FILE f;
-       struct __sFILEX ext;
 
        f.pub._fileno = -1;
        f.pub._flags = __SWR | __SSTR | __SALC;
@@ -54,8 +53,10 @@ vasprintf(char **str, const char *fmt, va_list ap)
                return (-1);
        }
        f._bf._size = f.pub._w = 127;           /* Leave room for the NULL */
-       f._extra = &ext;
-       INITEXTRA(&f);
+       f._up = NULL;
+       f.fl_mutex = PTHREAD_MUTEX_INITIALIZER;
+       f.fl_owner = NULL;
+       f.fl_count = 0;
        ret = __vfprintf(&f, fmt, ap);
        *f.pub._p = '\0';
        f._bf._base = reallocf(f._bf._base, f._bf._size + 1);
index 23fd956..c4a5ed3 100644 (file)
@@ -35,7 +35,7 @@
  *
  * @(#)vfprintf.c      8.1 (Berkeley) 6/4/93
  * $FreeBSD: src/lib/libc/stdio/vfprintf.c,v 1.34 2001/12/13 19:45:41 phantom Exp $
- * $DragonFly: src/lib/libc/stdio/vfprintf.c,v 1.10 2005/07/23 20:23:06 joerg Exp $
+ * $DragonFly: src/lib/libc/stdio/vfprintf.c,v 1.11 2005/07/23 23:14:44 joerg Exp $
  */
 
 /*
@@ -157,7 +157,11 @@ __sbprintf(FILE *fp, const char *fmt, va_list ap)
        fake.pub._fileno = fp->pub._fileno;
        fake._cookie = fp->_cookie;
        fake._write = fp->_write;
-       fake._extra = fp->_extra;
+
+       fake._up = fp->_up;
+       fake.fl_mutex = fp->fl_mutex;
+       fake.fl_owner = fp->fl_owner;
+       fake.fl_count = fp->fl_count;
 
        /* set up the buffer */
        fake._bf._base = fake.pub._p = buf;
index df48183..abb28c2 100644 (file)
@@ -35,7 +35,7 @@
  *
  * @(#)vsnprintf.c     8.1 (Berkeley) 6/4/93
  * $FreeBSD: src/lib/libc/stdio/vsnprintf.c,v 1.12.2.1 2002/09/23 06:58:17 maxim Exp $
- * $DragonFly: src/lib/libc/stdio/vsnprintf.c,v 1.6 2005/07/23 20:23:06 joerg Exp $
+ * $DragonFly: src/lib/libc/stdio/vsnprintf.c,v 1.7 2005/07/23 23:14:44 joerg Exp $
  */
 
 #include <limits.h>
@@ -52,7 +52,6 @@ vsnprintf(char *str, size_t n, const char *fmt, va_list ap)
        int ret;
        char dummy;
        FILE f;
-       struct __sFILEX ext;
 
        on = n;
        if (n != 0)
@@ -68,8 +67,10 @@ vsnprintf(char *str, size_t n, const char *fmt, va_list ap)
        f.pub._flags = __SWR | __SSTR;
        f._bf._base = f.pub._p = (unsigned char *)str;
        f._bf._size = f.pub._w = n;
-       f._extra = &ext;
-       INITEXTRA(&f);
+       f._up = NULL;
+       f.fl_mutex = PTHREAD_MUTEX_INITIALIZER;
+       f.fl_owner = NULL;
+       f.fl_count = 0;
        ret = __vfprintf(&f, fmt, ap);
        if (on > 0)
                *f.pub._p = '\0';
index 823fc9f..8963799 100644 (file)
@@ -35,7 +35,7 @@
  *
  * @(#)vsprintf.c      8.1 (Berkeley) 6/4/93
  * $FreeBSD: src/lib/libc/stdio/vsprintf.c,v 1.6 1999/08/28 00:01:21 peter Exp $
- * $DragonFly: src/lib/libc/stdio/vsprintf.c,v 1.6 2005/07/23 20:23:06 joerg Exp $
+ * $DragonFly: src/lib/libc/stdio/vsprintf.c,v 1.7 2005/07/23 23:14:44 joerg Exp $
  */
 
 #include <stdio.h>
@@ -50,14 +50,15 @@ vsprintf(char *str, const char *fmt, va_list ap)
 {
        int ret;
        FILE f;
-       struct __sFILEX ext;
 
        f.pub._fileno = -1;
        f.pub._flags = __SWR | __SSTR;
        f._bf._base = f.pub._p = (unsigned char *)str;
        f._bf._size = f.pub._w = INT_MAX;
-       f._extra = &ext;
-       INITEXTRA(&f);
+       f._up = NULL;
+       f.fl_mutex = PTHREAD_MUTEX_INITIALIZER;
+       f.fl_owner = NULL;
+       f.fl_count = 0;
        ret = __vfprintf(&f, fmt, ap);
        *f.pub._p = 0;
        return (ret);
index bfe0db9..2726c67 100644 (file)
@@ -35,7 +35,7 @@
  *
  * @(#)vsscanf.c       8.1 (Berkeley) 6/4/93
  * $FreeBSD: src/lib/libc/stdio/vsscanf.c,v 1.7 1999/08/28 00:01:22 peter Exp $
- * $DragonFly: src/lib/libc/stdio/vsscanf.c,v 1.7 2005/07/23 20:23:06 joerg Exp $
+ * $DragonFly: src/lib/libc/stdio/vsscanf.c,v 1.8 2005/07/23 23:14:44 joerg Exp $
  */
 
 #include <stdio.h>
@@ -60,7 +60,6 @@ int
 vsscanf(const char *str, const char *fmt, va_list ap)
 {
        FILE f;
-       struct __sFILEX ext;
 
        f.pub._fileno = -1;
        f.pub._flags = __SRD;
@@ -69,7 +68,9 @@ vsscanf(const char *str, const char *fmt, va_list ap)
        f._read = eofread;
        f._ub._base = NULL;
        f._lb._base = NULL;
-       f._extra = &ext;
-       INITEXTRA(&f);
+       f._up = NULL;
+       f.fl_mutex = PTHREAD_MUTEX_INITIALIZER;
+       f.fl_owner = NULL;
+       f.fl_count = 0;
        return (__svfscanf(&f, fmt, ap));
 }