diff options
author | Ulrich Drepper <drepper@redhat.com> | 2003-02-01 20:53:16 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2003-02-01 20:53:16 +0000 |
commit | 38e68573bc08179bb9418038e7c2db7e576eaea5 (patch) | |
tree | fac3119a1783cc465b6ff578da410897c4163c00 /wcsmbs/wcscpy.c | |
parent | 4a7d6545ce1611c0a320f3210d46d5bd3a03b260 (diff) | |
download | glibc-38e68573bc08179bb9418038e7c2db7e576eaea5.zip glibc-38e68573bc08179bb9418038e7c2db7e576eaea5.tar.gz glibc-38e68573bc08179bb9418038e7c2db7e576eaea5.tar.bz2 |
Update.
2003-02-01 Ulrich Drepper <drepper@redhat.com>
* time/tzfile.c (__tzfile_compute): Change return value type to
void. Adjust return statements.
* include/time.h (__tzfile_compute): Adjust prototype.
2003-02-01 Jim Meyering <jim@meyering.net>
* time/tzset.c (__tz_convert): Remove dead code; __tzfile_compute
always returns 1.
2003-01-31 Steven Munroe <sjmunroe@us.ibm.com>
* sysdeps/unix/sysv/linux/powerpc/powerpc64/fe_nomask.c
[!__ASSUME_NEW_PRCTL_SYSCALL]: Noop prctl syscall and set ENOSYS.
2003-01-31 Steven Munroe <sjmunroe@us.ibm.com>
* sysdeps/unix/sysv/linux/powerpc/powerpc64/getcontext.S
[!__ASSUME_NEW_RT_SIGRETURN_SYSCALL]: Generate ENOSYS stub.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/makecontext.S
[!__ASSUME_NEW_RT_SIGRETURN_SYSCALL]: Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/setcontext.S
[!__ASSUME_NEW_RT_SIGRETURN_SYSCALL]: Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/swapcontext.S
[!__ASSUME_NEW_RT_SIGRETURN_SYSCALL]: Likewise.
2003-01-31 Steven Munroe <sjmunroe@us.ibm.com>
* sysdeps/unix/sysv/linux/configure.in: Change arch_minimum_kernel
back to 2.4.19 for powerpc64.
* sysdeps/unix/sysv/linux/kernel-features.h
(__ASSUME_NEW_PRCTL_SYSCALL): Define for powerpc64.
(__ASSUME_NEW_RT_SIGRETURN_SYSCALL): Define for powerpc64.
2003-02-01 Ulrich Drepper <drepper@redhat.com>
* wcsmbs/wcscpy.c (wcscpy): Add alternative implementation for
platforms with strange alignment requirements on wchar_t.
Diffstat (limited to 'wcsmbs/wcscpy.c')
-rw-r--r-- | wcsmbs/wcscpy.c | 35 |
1 files changed, 25 insertions, 10 deletions
diff --git a/wcsmbs/wcscpy.c b/wcsmbs/wcscpy.c index aeb8abb..2e52a6c 100644 --- a/wcsmbs/wcscpy.c +++ b/wcsmbs/wcscpy.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc. +/* Copyright (C) 1995, 1996, 1997, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995. @@ -17,10 +17,8 @@ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -#include <wchar.h> - -#define __need_ptrdiff_t #include <stddef.h> +#include <wchar.h> /* Copy SRC to DEST. */ @@ -29,16 +27,33 @@ wcscpy (dest, src) wchar_t *dest; const wchar_t *src; { - wchar_t *wcp = (wchar_t *) src; wint_t c; - const ptrdiff_t off = dest - src - 1; + wchar_t *wcp; - do + if (__alignof__ (wchar_t) >= sizeof (wchar_t)) + { + const ptrdiff_t off = dest - src - 1; + + wcp = (wchar_t *) src; + + do + { + c = *wcp++; + wcp[off] = c; + } + while (c != L'\0'); + } + else { - c = *wcp++; - wcp[off] = c; + wcp = dest; + + do + { + c = *src++; + *wcp++ = c; + } + while (c != L'\0'); } - while (c != L'\0'); return dest; } |