2009-08-17 Craig Howland <howland@LGSInnovations.com>
* libc/string/wcsncpy.c (wcsncpy):  Re-write function based on small
        version of strncpy() (fixing two bugs).
			
			
This commit is contained in:
		| @@ -1,3 +1,8 @@ | |||||||
|  | 2009-08-17  Craig Howland <howland@LGSInnovations.com> | ||||||
|  |  | ||||||
|  | 	* libc/string/wcsncpy.c (wcsncpy):  Re-write function based on small | ||||||
|  | 	version of strncpy() (fixing two bugs). | ||||||
|  |  | ||||||
| 2009-08-13  Corinna Vinschen  <corinna@vinschen.de> | 2009-08-13  Corinna Vinschen  <corinna@vinschen.de> | ||||||
|  |  | ||||||
| 	* libc/stdio/mktemp.c (mkdtemp): Fix typo in function name. | 	* libc/stdio/mktemp.c (mkdtemp): Fix typo in function name. | ||||||
|   | |||||||
| @@ -13,11 +13,13 @@ TRAD_SYNOPSIS | |||||||
| 	size_t <[n]>; | 	size_t <[n]>; | ||||||
|  |  | ||||||
| DESCRIPTION | DESCRIPTION | ||||||
| 	The <<wcsncpy>> function copies not more than n wide-character codes | 	The <<wcsncpy>> function copies not more than <[n]> wide-character codes | ||||||
| 	(wide-character codes that follow a null wide-character code are not | 	(wide-character codes that follow a null wide-character code are not | ||||||
| 	copied) from the array pointed to by <[s2]> to the array pointed to | 	copied) from the array pointed to by <[s2]> to the array pointed to | ||||||
| 	by <[s1]>. If copying takes place between objects that overlap, the | 	by <[s1]>. If copying takes place between objects that overlap, the | ||||||
| 	behaviour is undefined. | 	behaviour is undefined.  Note that if <[s1]> contains more than <[n]> | ||||||
|  | 	wide characters before its terminating null, the result is not | ||||||
|  | 	null-terminated. | ||||||
|  |  | ||||||
| 	If the array pointed to by <[s2]> is a wide-character string that is | 	If the array pointed to by <[s2]> is a wide-character string that is | ||||||
| 	shorter than <[n]> wide-character codes, null wide-character codes are | 	shorter than <[n]> wide-character codes, null wide-character codes are | ||||||
| @@ -29,41 +31,11 @@ RETURNS | |||||||
| 	indicate an error.  | 	indicate an error.  | ||||||
|  |  | ||||||
| PORTABILITY | PORTABILITY | ||||||
| <<wcsncpy>> is ISO/IEC 9899/AMD1:1995 (ISO C). | ISO/IEC 9899; POSIX.1. | ||||||
|  |  | ||||||
| No supporting OS subroutines are required. | No supporting OS subroutines are required. | ||||||
| */ | */ | ||||||
|  |  | ||||||
| /*	$NetBSD: wcsncpy.c,v 1.1 2000/12/23 23:14:36 itojun Exp $	*/ |  | ||||||
|  |  | ||||||
| /*- |  | ||||||
|  * Copyright (c)1999 Citrus Project, |  | ||||||
|  * All rights reserved. |  | ||||||
|  * |  | ||||||
|  * Redistribution and use in source and binary forms, with or without |  | ||||||
|  * modification, are permitted provided that the following conditions |  | ||||||
|  * are met: |  | ||||||
|  * 1. Redistributions of source code must retain the above copyright |  | ||||||
|  *    notice, this list of conditions and the following disclaimer. |  | ||||||
|  * 2. Redistributions in binary form must reproduce the above copyright |  | ||||||
|  *    notice, this list of conditions and the following disclaimer in the |  | ||||||
|  *    documentation and/or other materials provided with the distribution. |  | ||||||
|  * |  | ||||||
|  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND |  | ||||||
|  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |  | ||||||
|  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |  | ||||||
|  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE |  | ||||||
|  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |  | ||||||
|  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS |  | ||||||
|  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |  | ||||||
|  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |  | ||||||
|  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |  | ||||||
|  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |  | ||||||
|  * SUCH DAMAGE. |  | ||||||
|  * |  | ||||||
|  *	citrus Id: wcsncpy.c,v 1.1 1999/12/29 21:47:45 tshiozak Exp |  | ||||||
|  */ |  | ||||||
|  |  | ||||||
| #include <_ansi.h> | #include <_ansi.h> | ||||||
| #include <wchar.h> | #include <wchar.h> | ||||||
|  |  | ||||||
| @@ -73,18 +45,14 @@ _DEFUN (wcsncpy, (s1, s2, n), | |||||||
| 	_CONST wchar_t * s2 _AND | 	_CONST wchar_t * s2 _AND | ||||||
| 	size_t n) | 	size_t n) | ||||||
| { | { | ||||||
|   wchar_t *p; |   wchar_t *dscan=s1; | ||||||
|   _CONST wchar_t *q; |  | ||||||
|  |  | ||||||
|   *s1 = '\0'; |   while(n > 0) | ||||||
|   p = s1; |  | ||||||
|   q = s2; |  | ||||||
|   while (n && *q) |  | ||||||
|     { |     { | ||||||
|       *p++ = *q++; |       --n; | ||||||
|       n--; |       if((*dscan++ = *s2++) == L'\0')  break; | ||||||
|     } |     } | ||||||
|   *p = '\0'; |   while(n-- > 0)  *dscan++ = L'\0'; | ||||||
|  |  | ||||||
|   return s1; |   return s1; | ||||||
| } | } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user