Index: ChangeLog =================================================================== RCS file: /cvs/src/src/newlib/ChangeLog,v retrieving revision 1.1224 diff -p -u -r1.1224 ChangeLog --- ChangeLog 20 Nov 2008 20:23:24 -0000 1.1224 +++ ChangeLog 22 Nov 2008 02:34:19 -0000 @@ -1,3 +1,23 @@ +2008-11-21 Craig Howland + + * 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-20 Ken Werner * libc/machine/spu/sys/linux_syscalls.h: Additional syscall defines to Index: libc/stdlib/wcstoull_r.c =================================================================== RCS file: /cvs/src/src/newlib/libc/stdlib/wcstoull_r.c,v retrieving revision 1.1 diff -p -u -r1.1 wcstoull_r.c --- libc/stdlib/wcstoull_r.c 6 Jul 2007 20:03:28 -0000 1.1 +++ libc/stdlib/wcstoull_r.c 22 Nov 2008 02:34:19 -0000 @@ -45,11 +45,17 @@ #define _GNU_SOURCE #include <_ansi.h> #include +#include #include #include -#include #include +/* 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 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 } 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 } } if (any < 0) { - acc = ULONG_LONG_MAX; + acc = ULLONG_MAX; rptr->_errno = ERANGE; } else if (neg) acc = -acc; Index: libc/stdlib/wcstoull.c =================================================================== RCS file: /cvs/src/src/newlib/libc/stdlib/wcstoull.c,v retrieving revision 1.1 diff -p -u -r1.1 wcstoull.c --- libc/stdlib/wcstoull.c 6 Jul 2007 20:03:28 -0000 1.1 +++ libc/stdlib/wcstoull.c 22 Nov 2008 02:34:20 -0000 @@ -16,7 +16,7 @@ ANSI_SYNOPSIS wchar_t **<[ptr]>, int <[base]>); TRAD_SYNOPSIS - #include + #include unsigned long long wcstoull(<[s]>, <[ptr]>, <[base]>) wchar_t *<[s]>; wchar_t **<[ptr]>; @@ -40,8 +40,9 @@ to convert the subject string into an un 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 RETURNS +<> returns <<0>> and sets <> to <> if the value of +<[base]> is not supported. + <> returns the converted value, if any. If no conversion was made, <<0>> is returned. -<> returns <> if the magnitude of the converted +<> returns <> if the magnitude of the converted value is too large, and sets <> to <>. PORTABILITY @@ -119,10 +123,7 @@ PORTABILITY */ #include <_ansi.h> -#include -#include -#include -#include +#include #include #ifndef _REENT_ONLY Index: libc/stdio/vasnprintf.c =================================================================== RCS file: /cvs/src/src/newlib/libc/stdio/vasnprintf.c,v retrieving revision 1.3 diff -p -u -r1.3 vasnprintf.c --- libc/stdio/vasnprintf.c 14 Apr 2008 21:14:55 -0000 1.3 +++ libc/stdio/vasnprintf.c 22 Nov 2008 02:34:20 -0000 @@ -11,6 +11,7 @@ #include #include #include +#include "local.h" char * _DEFUN(_vasnprintf_r, (ptr, buf, lenp, fmt, ap), Index: libc/stdio/local.h =================================================================== RCS file: /cvs/src/src/newlib/libc/stdio/local.h,v retrieving revision 1.23 diff -p -u -r1.23 local.h --- libc/stdio/local.h 14 Apr 2008 21:14:55 -0000 1.23 +++ libc/stdio/local.h 22 Nov 2008 02:34:20 -0000 @@ -59,6 +59,7 @@ extern _VOID _EXFUN(__smakebuf_r,(stru 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: libc/include/stdio.h =================================================================== RCS file: /cvs/src/src/newlib/libc/include/stdio.h,v retrieving revision 1.49 diff -p -u -r1.49 stdio.h --- libc/include/stdio.h 23 Apr 2008 11:13:24 -0000 1.49 +++ libc/include/stdio.h 22 Nov 2008 02:34:20 -0000 @@ -383,7 +383,9 @@ size_t _EXFUN(_fread_r, (struct _reent * 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: libc/include/reent.h =================================================================== RCS file: /cvs/src/src/newlib/libc/include/reent.h,v retrieving revision 1.8 diff -p -u -r1.8 reent.h --- libc/include/reent.h 27 Mar 2008 23:28:17 -0000 1.8 +++ libc/include/reent.h 22 Nov 2008 02:34:20 -0000 @@ -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 _ree 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: libc/posix/namespace.h =================================================================== RCS file: /cvs/src/src/newlib/libc/posix/namespace.h,v retrieving revision 1.1 diff -p -u -r1.1 namespace.h --- libc/posix/namespace.h 31 Oct 2008 21:03:41 -0000 1.1 +++ libc/posix/namespace.h 22 Nov 2008 02:34:20 -0000 @@ -112,7 +112,7 @@ #define socket _socket #define socketpair _socketpair #define wait4 _wait4 -#define write _write +/*#define write _write*/ #define writev _writev Index: libc/reent/renamer.c =================================================================== RCS file: /cvs/src/src/newlib/libc/reent/renamer.c,v retrieving revision 1.1 diff -p -u -r1.1 renamer.c --- libc/reent/renamer.c 18 Sep 2007 19:32:43 -0000 1.1 +++ libc/reent/renamer.c 22 Nov 2008 02:34:20 -0000 @@ -30,15 +30,14 @@ INDEX ANSI_SYNOPSIS #include int _rename_r(struct _reent *<[ptr]>, - int <[fd]>, int <[cmd]>, <[arg]>); + const char *<[old]>, const char *<[new]>); TRAD_SYNOPSIS #include - 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 <>. It Index: libc/locale/ldpart.c =================================================================== RCS file: /cvs/src/src/newlib/libc/locale/ldpart.c,v retrieving revision 1.3 diff -p -u -r1.3 ldpart.c --- libc/locale/ldpart.c 13 May 2003 09:19:14 -0000 1.3 +++ libc/locale/ldpart.c 22 Nov 2008 02:34:20 -0000 @@ -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;