Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff Johnston <jjohnstn@redhat.com>2004-01-15 22:12:17 +0300
committerJeff Johnston <jjohnstn@redhat.com>2004-01-15 22:12:17 +0300
commit6a150987938abfef78f72d0bf4ed6b427b25e040 (patch)
tree949b48479d75f080146cb875ce6231395e6df4db
parentd4c437af3e23285bc9aa0ef19b1dcf02aee87a93 (diff)
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.
-rw-r--r--newlib/ChangeLog11
-rw-r--r--newlib/libc/stdio/fclose.c5
-rw-r--r--newlib/libc/stdio/findfp.c4
-rw-r--r--newlib/libc/stdio/freopen.c4
-rw-r--r--newlib/libc/stdio/vfprintf.c3
5 files changed, 27 insertions, 0 deletions
diff --git a/newlib/ChangeLog b/newlib/ChangeLog
index 5927e5701..4d84d5062 100644
--- a/newlib/ChangeLog
+++ b/newlib/ChangeLog
@@ -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>
* libc/ctype/iswctype.c, include/sys/reent.h, libc/stdlib/a64l.c:
diff --git a/newlib/libc/stdio/fclose.c b/newlib/libc/stdio/fclose.c
index b8cd51dc1..630cd4192 100644
--- a/newlib/libc/stdio/fclose.c
+++ b/newlib/libc/stdio/fclose.c
@@ -50,6 +50,7 @@ Required OS subroutines: <<close>>, <<fstat>>, <<isatty>>, <<lseek>>,
#include <stdio.h>
#include <stdlib.h>
#include "local.h"
+#include <sys/lock.h>
/*
* Close a file.
@@ -84,5 +85,9 @@ _DEFUN (fclose, (fp),
FREELB (fp);
fp->_flags = 0; /* release this FILE for reuse */
_funlockfile(fp);
+#ifndef __SINGLE_THREAD__
+ __lock_close_recursive (*(_LOCK_RECURSIVE_T *)&fp->_lock);
+#endif
+
return (r);
}
diff --git a/newlib/libc/stdio/findfp.c b/newlib/libc/stdio/findfp.c
index 2a907bb6d..efbb62561 100644
--- a/newlib/libc/stdio/findfp.c
+++ b/newlib/libc/stdio/findfp.c
@@ -114,6 +114,10 @@ found:
fp->_ub._size = 0;
fp->_lb._base = NULL; /* no line buffer */
fp->_lb._size = 0;
+#ifndef __SINGLE_THREAD__
+ memset (&fp->_lock, 0, sizeof(fp->_lock));
+#endif
+
return fp;
}
diff --git a/newlib/libc/stdio/freopen.c b/newlib/libc/stdio/freopen.c
index 9010adcf7..6d54789da 100644
--- a/newlib/libc/stdio/freopen.c
+++ b/newlib/libc/stdio/freopen.c
@@ -71,6 +71,7 @@ Supporting OS subroutines required: <<close>>, <<fstat>>, <<isatty>>,
#include <fcntl.h>
#include <stdlib.h>
#include "local.h"
+#include <sys/lock.h>
/*
* 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 */
ptr->_errno = e; /* restore in case _close clobbered */
_funlockfile(fp);
+#ifndef __SINGLE_THREAD__
+ __lock_close_recursive (*(_LOCK_RECURSIVE_T *)&fp->_lock);
+#endif
return NULL;
}
diff --git a/newlib/libc/stdio/vfprintf.c b/newlib/libc/stdio/vfprintf.c
index 7015740e0..c13a7f70f 100644
--- a/newlib/libc/stdio/vfprintf.c
+++ b/newlib/libc/stdio/vfprintf.c
@@ -252,6 +252,9 @@ __sbprintf(fp, fmt, ap)
fake._bf._base = fake._p = buf;
fake._bf._size = fake._w = sizeof(buf);
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 */
ret = VFPRINTF(&fake, fmt, ap);