Last active
December 30, 2015 10:59
-
-
Save hfm/7819509 to your computer and use it in GitHub Desktop.
libbsd/src/strlspy.c, https://www.opensource.apple.com/source/Libc/Libc-262/ppc/gen/strcpy.c?txt, https://www.opensource.apple.com/source/Libc/Libc-262/ppc/gen/strncpy.c?txt
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| /* | |
| * Copyright (c) 1999 Apple Computer, Inc. All rights reserved. | |
| * | |
| * @APPLE_LICENSE_HEADER_START@ | |
| * | |
| * The contents of this file constitute Original Code as defined in and | |
| * are subject to the Apple Public Source License Version 1.1 (the | |
| * "License"). You may not use this file except in compliance with the | |
| * License. Please obtain a copy of the License at | |
| * http://www.apple.com/publicsource and read it before using this file. | |
| * | |
| * This Original Code and all software distributed under the License are | |
| * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER | |
| * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, | |
| * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, | |
| * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the | |
| * License for the specific language governing rights and limitations | |
| * under the License. | |
| * | |
| * @APPLE_LICENSE_HEADER_END@ | |
| */ | |
| /* Copyright (c) 1992, 1997 NeXT Software, Inc. All rights reserved. | |
| * | |
| * File: libc/gen/ppc/strcpy.c | |
| * | |
| * This file contains machine dependent code for string copy | |
| * | |
| * HISTORY | |
| * 24-Jan-1997 Umesh Vaishampayan (umeshv@NeXT.com) | |
| * Ported to PPC. | |
| * 24-Nov-92 Derek B Clegg (dclegg@next.com) | |
| * Created. | |
| */ | |
| #import <string.h> | |
| /* XXX This routine should be optimized. */ | |
| /* ANSI sez: | |
| * The `strcpy' function copies the string pointed to by `s2' (including | |
| * the terminating null character) into the array pointed to by `s1'. | |
| * If copying takes place between objects that overlap, the behavior | |
| * is undefined. | |
| * The `strcpy' function returns the value of `s1'. [4.11.2.3] | |
| */ | |
| char * | |
| strcpy(char *s1, const char *s2) | |
| { | |
| char *s = s1; | |
| while ((*s++ = *s2++) != 0) | |
| ; | |
| return (s1); | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| /* $OpenBSD: strlcpy.c,v 1.10 2005/08/08 08:05:37 espie Exp $ */ | |
| /* | |
| * Copyright (c) 1998 Todd C. Miller <Todd.Miller@courtesan.com> | |
| * | |
| * Permission to use, copy, modify, and distribute this software for any | |
| * purpose with or without fee is hereby granted, provided that the above | |
| * copyright notice and this permission notice appear in all copies. | |
| * | |
| * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES | |
| * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | |
| * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR | |
| * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | |
| * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | |
| * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | |
| * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | |
| */ | |
| #include <sys/types.h> | |
| #include <string.h> | |
| /* | |
| * Copy src to string dst of size siz. At most siz-1 characters | |
| * will be copied. Always NUL terminates (unless siz == 0). | |
| * Returns strlen(src); if retval >= siz, truncation occurred. | |
| */ | |
| size_t | |
| strlcpy(char *dst, const char *src, size_t siz) | |
| { | |
| char *d = dst; | |
| const char *s = src; | |
| size_t n = siz; | |
| /* Copy as many bytes as will fit */ | |
| if (n != 0) { | |
| while (--n != 0) { | |
| if ((*d++ = *s++) == '\0') | |
| break; | |
| } | |
| } | |
| /* Not enough room in dst, add NUL and traverse rest of src */ | |
| if (n == 0) { | |
| if (siz != 0) | |
| *d = '\0'; /* NUL-terminate dst */ | |
| while (*s++) | |
| ; | |
| } | |
| return(s - src - 1); /* count does not include NUL */ | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| /* | |
| * Copyright (c) 1999 Apple Computer, Inc. All rights reserved. | |
| * | |
| * @APPLE_LICENSE_HEADER_START@ | |
| * | |
| * The contents of this file constitute Original Code as defined in and | |
| * are subject to the Apple Public Source License Version 1.1 (the | |
| * "License"). You may not use this file except in compliance with the | |
| * License. Please obtain a copy of the License at | |
| * http://www.apple.com/publicsource and read it before using this file. | |
| * | |
| * This Original Code and all software distributed under the License are | |
| * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER | |
| * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, | |
| * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, | |
| * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the | |
| * License for the specific language governing rights and limitations | |
| * under the License. | |
| * | |
| * @APPLE_LICENSE_HEADER_END@ | |
| */ | |
| /* Copyright (c) 1992, 1997 NeXT Software, Inc. All rights reserved. | |
| * | |
| * File: libc/gen/ppc/strncpy.c | |
| * | |
| * This file contains machine dependent code for string copy | |
| * | |
| * HISTORY | |
| * 24-Jan-1997 Umesh Vaishampayan (umeshv@NeXT.com) | |
| * Ported to PPC. | |
| * 24-Nov-92 Derek B Clegg (dclegg@next.com) | |
| * Created. | |
| */ | |
| #import <string.h> | |
| /* This routine should be optimized. */ | |
| /* ANSI sez: | |
| * The `strncpy' function copies not more than `n' characters (characters | |
| * that follow a null character are not copied) from the array pointed to | |
| * by `s2' to the array pointed to by `s1'. If copying takes place between | |
| * objects that overlap, the behavior is undefined. | |
| * If the array pointed to by `s2' is a string that is shorter than `n' | |
| * characters, null characters are appended to the copy in the array | |
| * pointed to by `s1', until `n' characters in all have been written. | |
| * The `strncpy' function returns the value of `s1'. [4.11.2.4] | |
| */ | |
| char * | |
| strncpy(char *s1, const char *s2, size_t n) | |
| { | |
| char *s = s1; | |
| while (n > 0 && *s2 != '\0') { | |
| *s++ = *s2++; | |
| --n; | |
| } | |
| while (n > 0) { | |
| *s++ = '\0'; | |
| --n; | |
| } | |
| return s1; | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment