2004-01-15 Thomas Pfaff <tpfaff@gmx.net>
* libc/stdio/fclose.c: Include sys/lock.h. (fclose): Destroy lock when file is closed. * libc/stdio/findfp.c (__sfp): Initialize file pointers _lock member. * libc/stdio/freopen.c: Include sys/lock.h. (_freopen_r): Destroy lock when file is closed. * libc/stdio/vfprintf.c (__sbprintf): Initialize file pointers _lock member.
This commit is contained in:
parent
d4c437af3e
commit
6a15098793
|
@ -1,3 +1,14 @@
|
||||||
|
2004-01-15 Thomas Pfaff <tpfaff@gmx.net>
|
||||||
|
|
||||||
|
* libc/stdio/fclose.c: Include sys/lock.h.
|
||||||
|
(fclose): Destroy lock when file is closed.
|
||||||
|
* libc/stdio/findfp.c (__sfp): Initialize file pointers _lock
|
||||||
|
member.
|
||||||
|
* libc/stdio/freopen.c: Include sys/lock.h.
|
||||||
|
(_freopen_r): Destroy lock when file is closed.
|
||||||
|
* libc/stdio/vfprintf.c (__sbprintf): Initialize file pointers
|
||||||
|
_lock member.
|
||||||
|
|
||||||
2004-01-08 Joel Sherrill <joel@oarcorp.com>
|
2004-01-08 Joel Sherrill <joel@oarcorp.com>
|
||||||
|
|
||||||
* libc/ctype/iswctype.c, include/sys/reent.h, libc/stdlib/a64l.c:
|
* libc/ctype/iswctype.c, include/sys/reent.h, libc/stdlib/a64l.c:
|
||||||
|
|
|
@ -50,6 +50,7 @@ Required OS subroutines: <<close>>, <<fstat>>, <<isatty>>, <<lseek>>,
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include "local.h"
|
#include "local.h"
|
||||||
|
#include <sys/lock.h>
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Close a file.
|
* Close a file.
|
||||||
|
@ -84,5 +85,9 @@ _DEFUN (fclose, (fp),
|
||||||
FREELB (fp);
|
FREELB (fp);
|
||||||
fp->_flags = 0; /* release this FILE for reuse */
|
fp->_flags = 0; /* release this FILE for reuse */
|
||||||
_funlockfile(fp);
|
_funlockfile(fp);
|
||||||
|
#ifndef __SINGLE_THREAD__
|
||||||
|
__lock_close_recursive (*(_LOCK_RECURSIVE_T *)&fp->_lock);
|
||||||
|
#endif
|
||||||
|
|
||||||
return (r);
|
return (r);
|
||||||
}
|
}
|
||||||
|
|
|
@ -114,6 +114,10 @@ found:
|
||||||
fp->_ub._size = 0;
|
fp->_ub._size = 0;
|
||||||
fp->_lb._base = NULL; /* no line buffer */
|
fp->_lb._base = NULL; /* no line buffer */
|
||||||
fp->_lb._size = 0;
|
fp->_lb._size = 0;
|
||||||
|
#ifndef __SINGLE_THREAD__
|
||||||
|
memset (&fp->_lock, 0, sizeof(fp->_lock));
|
||||||
|
#endif
|
||||||
|
|
||||||
return fp;
|
return fp;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -71,6 +71,7 @@ Supporting OS subroutines required: <<close>>, <<fstat>>, <<isatty>>,
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include "local.h"
|
#include "local.h"
|
||||||
|
#include <sys/lock.h>
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Re-direct an existing, open (probably) file to some other file.
|
* Re-direct an existing, open (probably) file to some other file.
|
||||||
|
@ -150,6 +151,9 @@ _DEFUN (_freopen_r, (ptr, file, mode, fp),
|
||||||
fp->_flags = 0; /* set it free */
|
fp->_flags = 0; /* set it free */
|
||||||
ptr->_errno = e; /* restore in case _close clobbered */
|
ptr->_errno = e; /* restore in case _close clobbered */
|
||||||
_funlockfile(fp);
|
_funlockfile(fp);
|
||||||
|
#ifndef __SINGLE_THREAD__
|
||||||
|
__lock_close_recursive (*(_LOCK_RECURSIVE_T *)&fp->_lock);
|
||||||
|
#endif
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -252,6 +252,9 @@ __sbprintf(fp, fmt, ap)
|
||||||
fake._bf._base = fake._p = buf;
|
fake._bf._base = fake._p = buf;
|
||||||
fake._bf._size = fake._w = sizeof(buf);
|
fake._bf._size = fake._w = sizeof(buf);
|
||||||
fake._lbfsize = 0; /* not actually used, but Just In Case */
|
fake._lbfsize = 0; /* not actually used, but Just In Case */
|
||||||
|
#ifndef __SINGLE_THREAD__
|
||||||
|
memset (&fake._lock, 0, sizeof(fake._lock));
|
||||||
|
#endif
|
||||||
|
|
||||||
/* do the work, then copy any error status */
|
/* do the work, then copy any error status */
|
||||||
ret = VFPRINTF(&fake, fmt, ap);
|
ret = VFPRINTF(&fake, fmt, ap);
|
||||||
|
|
Loading…
Reference in New Issue