OSDN Git Service

2008-11-24 Craig Howland <howland@LGSInnovations.com>
authorjjohnstn <jjohnstn>
Mon, 24 Nov 2008 21:27:33 +0000 (21:27 +0000)
committerjjohnstn <jjohnstn>
Mon, 24 Nov 2008 21:27:33 +0000 (21:27 +0000)
        * libc/stdlib/wcstoull_r.c:  Add EINVAL return for bad base value,
        include wchar.h for prototype, remove extraneous includes, use
        C99/POSIX ULLONG_MAX (but allow for poor limits.h).
        * libc/stdlib/wcstoull.c:  Fix usage comments (mistakes and to add
        base value check noted above), remove extraneous includes.
        * libc/stdio/asnprintf.c:  Add #include "local.h" to get function
        prototype for _svfprintf_r().
        * libc/stdio/vasnprintf.c:  Ditto.
        * libc/stdio/local.h:  Add function prototype for __submore().
        * libc/include/stdio.h:  Add function prototypes for _fseeko_r and
        _ftello_r.
        * libc/posix/namespace.h:  Commented out define for write to
        eliminate write() prototype being missing for collate.c (which is
        the only file that presently includes namespace.h).
        * libc/include/reent.h:  Added _rename_r.
        * libc/reent/renamer.c:  Corrected function prototypes in synopses.
        * libc/locale/ldpart.c:  Use struct stat64 when calling fstat64.

newlib/ChangeLog
newlib/libc/include/reent.h
newlib/libc/include/stdio.h
newlib/libc/locale/ldpart.c
newlib/libc/posix/namespace.h
newlib/libc/reent/renamer.c
newlib/libc/stdio/local.h
newlib/libc/stdio/vasnprintf.c
newlib/libc/stdlib/wcstoull.c
newlib/libc/stdlib/wcstoull_r.c

index 37e1d6e..01f3477 100644 (file)
@@ -1,3 +1,23 @@
+2008-11-24  Craig Howland  <howland@LGSInnovations.com>
+
+       * libc/stdlib/wcstoull_r.c:  Add EINVAL return for bad base value,
+       include wchar.h for prototype, remove extraneous includes, use
+       C99/POSIX ULLONG_MAX (but allow for poor limits.h).
+       * libc/stdlib/wcstoull.c:  Fix usage comments (mistakes and to add
+       base value check noted above), remove extraneous includes.
+       * libc/stdio/asnprintf.c:  Add #include "local.h" to get function
+       prototype for _svfprintf_r().
+       * libc/stdio/vasnprintf.c:  Ditto.
+       * libc/stdio/local.h:  Add function prototype for __submore().
+       * libc/include/stdio.h:  Add function prototypes for _fseeko_r and
+       _ftello_r.
+       * libc/posix/namespace.h:  Commented out define for write to
+       eliminate write() prototype being missing for collate.c (which is
+       the only file that presently includes namespace.h).
+       * libc/include/reent.h:  Added _rename_r.
+       * libc/reent/renamer.c:  Corrected function prototypes in synopses.
+       * libc/locale/ldpart.c:  Use struct stat64 when calling fstat64.
+
 2008-11-24  Jeff Johnston  <jjohnstn@redhat.com>
 
        * libc/search/hash_func.c: Comment out unused static hash functions.
index dfd0c9a..9430e75 100644 (file)
@@ -118,6 +118,7 @@ struct timezone;
 #define _lseek_r(__reent, __fdes, __off, __w)     lseek(__fdes, __off, __w)
 #define _open_r(__reent, __path, __flag, __m)     open(__path, __flag, __m)
 #define _read_r(__reent, __fd, __buff, __cnt)     read(__fd, __buff, __cnt)
+#define _rename_r(__reent, __old, __new)         rename(__old, __new)
 #define _sbrk_r(__reent, __incr)                  sbrk(__incr)
 #define _stat_r(__reent, __path, __buff)          stat(__path, __buff)
 #define _times_r(__reent, __time)                 times(__time)
@@ -147,6 +148,7 @@ extern int _link_r _PARAMS ((struct _reent *, const char *, const char *));
 extern _off_t _lseek_r _PARAMS ((struct _reent *, int, _off_t, int));
 extern int _open_r _PARAMS ((struct _reent *, const char *, int, int));
 extern _ssize_t _read_r _PARAMS ((struct _reent *, int, void *, size_t));
+extern int _rename_r _PARAMS ((struct _reent *, const char *, const char *));
 extern void *_sbrk_r _PARAMS ((struct _reent *, ptrdiff_t));
 extern int _stat_r _PARAMS ((struct _reent *, const char *, struct stat *));
 extern _CLOCK_T_ _times_r _PARAMS ((struct _reent *, struct tms *));
index 1ef102f..b62bc85 100644 (file)
@@ -382,7 +382,9 @@ size_t      _EXFUN(_fread_r, (struct _reent *, _PTR, size_t _size, size_t _n, FILE *)
 int    _EXFUN(_fscanf_r, (struct _reent *, FILE *, const char *, ...)
                _ATTRIBUTE ((__format__ (__scanf__, 3, 4))));
 int    _EXFUN(_fseek_r, (struct _reent *, FILE *, long, int));
+int    _EXFUN(_fseeko_r,(struct _reent *, FILE *, _off_t, int));
 long   _EXFUN(_ftell_r, (struct _reent *, FILE *));
+_off_t _EXFUN(_ftello_r,(struct _reent *, FILE *));
 size_t _EXFUN(_fwrite_r, (struct _reent *, const _PTR , size_t _size, size_t _n, FILE *));
 int    _EXFUN(_getc_r, (struct _reent *, FILE *));
 int    _EXFUN(_getc_unlocked_r, (struct _reent *, FILE *));
index a284b9d..5955322 100644 (file)
@@ -57,7 +57,11 @@ __part_load_locale(const char *name,
        char                    *p;
        const char              *plim;
        char                     filename[PATH_MAX];
+#ifdef __USE_INTERNAL_STAT64
+       struct stat64            st;
+#else
        struct stat              st;
+#endif
        size_t                   namesize;
        size_t                   bufsize;
        int                      save_using_locale;
index 159b8e3..807349b 100644 (file)
 #define                socket                          _socket
 #define                socketpair                      _socketpair
 #define                wait4                           _wait4
-#define                write                           _write
+/*#define              write                           _write*/
 #define                writev                          _writev
 
 
index 0467ae9..4d2d256 100644 (file)
@@ -30,15 +30,14 @@ INDEX
 ANSI_SYNOPSIS
        #include <reent.h>
        int _rename_r(struct _reent *<[ptr]>,
-                    int <[fd]>, int <[cmd]>, <[arg]>);
+               const char *<[old]>, const char *<[new]>);
 
 TRAD_SYNOPSIS
        #include <reent.h>
-       int _rename_r(<[ptr]>, <[fd]>, <[cmd]>, <[arg]>)
+       int _rename_r(<[ptr]>, <[old]>, <[new]>)
        struct _reent *<[ptr]>;
-       int <[fd]>;
-       int <[cmd]>;
-       int <[arg]>;
+       char *<[old]>;
+       char *<[new]>;
 
 DESCRIPTION
        This is a reentrant version of <<rename>>.  It
index 5dc2e62..71d579e 100644 (file)
@@ -59,6 +59,7 @@ extern _VOID   _EXFUN(__smakebuf_r,(struct _reent *, FILE *));
 extern int    _EXFUN(_fwalk,(struct _reent *, int (*)(FILE *)));
 extern int    _EXFUN(_fwalk_reent,(struct _reent *, int (*)(struct _reent *, FILE *)));
 struct _glue * _EXFUN(__sfmoreglue,(struct _reent *,int n));
+extern int _EXFUN(__submore, (struct _reent *, FILE *));
 
 #ifdef __LARGE64_FILES
 extern _fpos64_t _EXFUN(__sseek64,(struct _reent *, void *, _fpos64_t, int));
index 2dda30a..cab89be 100644 (file)
@@ -11,6 +11,7 @@
 #include <stdarg.h>
 #include <limits.h>
 #include <errno.h>
+#include "local.h"
 
 char *
 _DEFUN(_vasnprintf_r, (ptr, buf, lenp, fmt, ap),
index 861009b..76caadf 100644 (file)
@@ -16,7 +16,7 @@ ANSI_SYNOPSIS
                               wchar_t **<[ptr]>, int <[base]>);
 
 TRAD_SYNOPSIS
-       #include <stdlib.h>
+       #include <wchar.h>
         unsigned long long wcstoull(<[s]>, <[ptr]>, <[base]>)
         wchar_t *<[s]>;
         wchar_t **<[ptr]>;
@@ -40,8 +40,9 @@ to convert the subject string into an unsigned long long integer, and returns th
 result.
 
 If the value of <[base]> is zero, the subject string is expected to look
-like a normal C integer constant (save that no optional sign is permitted):
-a possible <<0x>> indicating hexadecimal radix, and a number.
+like a normal C integer constant:  an optional sign (<<+>> or <<->>),
+a possible <<0x>> indicating hexadecimal radix or a possible <0> indicating
+octal radix, and a number.
 If <[base]> is between 2 and 36, the expected form of the subject is a
 sequence of digits (which may include letters, depending on the
 base) representing an integer in the radix specified by <[base]>.
@@ -73,10 +74,13 @@ extra argument <[reent]> is a pointer to a reentrancy structure.
 
 
 RETURNS
+<<wcstoull>> returns <<0>> and sets <<errno>> to <<EINVAL>> if the value of
+<[base]> is not supported.
+
 <<wcstoull>> returns the converted value, if any. If no conversion was
 made, <<0>> is returned.
 
-<<wcstoull>> returns <<ULONG_LONG_MAX>> if the magnitude of the converted
+<<wcstoull>> returns <<ULLONG_MAX>> if the magnitude of the converted
 value is too large, and sets <<errno>> to <<ERANGE>>.
 
 PORTABILITY
@@ -119,10 +123,7 @@ PORTABILITY
  */
 
 #include <_ansi.h>
-#include <limits.h>
-#include <wctype.h>
-#include <errno.h>
-#include <stdlib.h>
+#include <wchar.h>
 #include <reent.h>
 
 #ifndef _REENT_ONLY
index 81dd320..abad681 100644 (file)
 #define _GNU_SOURCE
 #include <_ansi.h>
 #include <limits.h>
+#include <wchar.h>
 #include <wctype.h>
 #include <errno.h>
-#include <stdlib.h>
 #include <reent.h>
 
+/* Make up for older non-compliant limits.h.  (This is a C99/POSIX function,
+ * and both require ULLONG_MAX in limits.h.)  */
+#if !defined(ULLONG_MAX)
+# define ULLONG_MAX    ULONG_LONG_MAX
+#endif
+
 /*
  * Convert a wide string to an unsigned long long integer.
  *
@@ -69,6 +75,10 @@ _DEFUN (_wcstoull_r, (rptr, nptr, endptr, base),
        register unsigned long long cutoff;
        register int neg = 0, any, cutlim;
 
+       if(base < 0  ||  base == 1  ||  base > 36)  {
+               rptr->_errno = EINVAL;
+               return(0ULL);
+       }
        /*
         * See strtol for comments as to the logic used.
         */
@@ -88,8 +98,8 @@ _DEFUN (_wcstoull_r, (rptr, nptr, endptr, base),
        }
        if (base == 0)
                base = c == L'0' ? 8 : 10;
-       cutoff = (unsigned long long)ULONG_LONG_MAX / (unsigned long long)base;
-       cutlim = (unsigned long long)ULONG_LONG_MAX % (unsigned long long)base;
+       cutoff = (unsigned long long)ULLONG_MAX / (unsigned long long)base;
+       cutlim = (unsigned long long)ULLONG_MAX % (unsigned long long)base;
        for (acc = 0, any = 0;; c = *s++) {
                if (iswdigit(c))
                        c -= L'0';
@@ -108,7 +118,7 @@ _DEFUN (_wcstoull_r, (rptr, nptr, endptr, base),
                }
        }
        if (any < 0) {
-               acc = ULONG_LONG_MAX;
+               acc = ULLONG_MAX;
                rptr->_errno = ERANGE;
        } else if (neg)
                acc = -acc;