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
path: root/newlib
diff options
context:
space:
mode:
authorJeff Johnston <jjohnstn@redhat.com>2004-05-03 21:27:56 +0400
committerJeff Johnston <jjohnstn@redhat.com>2004-05-03 21:27:56 +0400
commit20b0251ab3d62281dc4213a9a930883bcbf57cd5 (patch)
treef375be2cfd8f8538d0e608d18a7dd48ca8cfaecd /newlib
parent1e98729b2a230b271b4a5f56f80ca56e32d790a7 (diff)
2004-05-03 Artem B. Bityuckiy <abitytsky@softminecorp.com>
* libc/include/stdio.h (_ungetc_r): New prototype. * libc/stdio/ungetc.c (_ungetc_r): New reentrant function. (__submore): Add reentrant struct pointer argument. (ungetc): Change to call _ungetc_r.
Diffstat (limited to 'newlib')
-rw-r--r--newlib/ChangeLog7
-rw-r--r--newlib/libc/include/stdio.h1
-rw-r--r--newlib/libc/stdio/ungetc.c26
3 files changed, 28 insertions, 6 deletions
diff --git a/newlib/ChangeLog b/newlib/ChangeLog
index 6c2c4c4eb..b9a55a4f2 100644
--- a/newlib/ChangeLog
+++ b/newlib/ChangeLog
@@ -1,3 +1,10 @@
+2004-05-03 Artem B. Bityuckiy <abitytsky@softminecorp.com>
+
+ * libc/include/stdio.h (_ungetc_r): New prototype.
+ * libc/stdio/ungetc.c (_ungetc_r): New reentrant function.
+ (__submore): Add reentrant struct pointer argument.
+ (ungetc): Change to call _ungetc_r.
+
2004-04-28 Artem B. Bityuckiy <abitytsky@softminecorp.com>
* libc/stdio/local.h (_fwalk_reent): Specify prototype of
diff --git a/newlib/libc/include/stdio.h b/newlib/libc/include/stdio.h
index 94e437d39..576de35dd 100644
--- a/newlib/libc/include/stdio.h
+++ b/newlib/libc/include/stdio.h
@@ -298,6 +298,7 @@ int _EXFUN(_sscanf_r, (struct _reent *, const char *, const char *, ...));
char * _EXFUN(_tempnam_r, (struct _reent *, const char *, const char *));
FILE * _EXFUN(_tmpfile_r, (struct _reent *));
char * _EXFUN(_tmpnam_r, (struct _reent *, char *));
+int _EXFUN(_ungetc_r, (struct _reent *, int, FILE *));
int _EXFUN(_vasprintf_r, (struct _reent *, char **, const char *, __VALIST));
int _EXFUN(_vfprintf_r, (struct _reent *, FILE *, const char *, __VALIST));
int _EXFUN(_vprintf_r, (struct _reent *, const char *, __VALIST));
diff --git a/newlib/libc/stdio/ungetc.c b/newlib/libc/stdio/ungetc.c
index 4380cc2da..9ccd02766 100644
--- a/newlib/libc/stdio/ungetc.c
+++ b/newlib/libc/stdio/ungetc.c
@@ -20,6 +20,7 @@ static char sccsid[] = "%W% (Berkeley) %G%";
#endif /* LIBC_SCCS and not lint */
#include <_ansi.h>
+#include <reent.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
@@ -34,7 +35,8 @@ static char sccsid[] = "%W% (Berkeley) %G%";
/*static*/
int
-_DEFUN(__submore, (fp),
+_DEFUN(__submore, (rptr, fp),
+ struct _reent *rptr _AND
register FILE *fp)
{
register int i;
@@ -45,7 +47,7 @@ _DEFUN(__submore, (fp),
/*
* Get a new buffer (rather than expanding the old one).
*/
- if ((p = (unsigned char *) _malloc_r (_REENT, (size_t) BUFSIZ)) == NULL)
+ if ((p = (unsigned char *) _malloc_r (rptr, (size_t) BUFSIZ)) == NULL)
return EOF;
fp->_ub._base = p;
fp->_ub._size = BUFSIZ;
@@ -56,7 +58,7 @@ _DEFUN(__submore, (fp),
return 0;
}
i = fp->_ub._size;
- p = (unsigned char *) _realloc_r (_REENT, (_PTR) (fp->_ub._base), i << 1);
+ p = (unsigned char *) _realloc_r (rptr, (_PTR) (fp->_ub._base), i << 1);
if (p == NULL)
return EOF;
_CAST_VOID memcpy ((_PTR) (p + i), (_PTR) p, (size_t) i);
@@ -67,8 +69,9 @@ _DEFUN(__submore, (fp),
}
int
-_DEFUN(ungetc, (c, fp),
- int c _AND
+_DEFUN(_ungetc_r, (rptr, c, fp),
+ struct _reent *rptr _AND
+ int c _AND
register FILE *fp)
{
if (c == EOF)
@@ -118,7 +121,7 @@ _DEFUN(ungetc, (c, fp),
if (HASUB (fp))
{
- if (fp->_r >= fp->_ub._size && __submore (fp))
+ if (fp->_r >= fp->_ub._size && __submore (rptr, fp))
{
_funlockfile (fp);
return EOF;
@@ -158,3 +161,14 @@ _DEFUN(ungetc, (c, fp),
_funlockfile (fp);
return c;
}
+
+#ifndef _REENT_ONLY
+int
+_DEFUN(ungetc, (c, fp),
+ int c _AND
+ register FILE *fp)
+{
+ return _ungetc_r (_REENT, c, fp);
+}
+#endif /* !_REENT_ONLY */
+