1 /* @(#)strncpy.c 1.5 10/05/07 Copyright 2006-2010 J. Schilling */ 2 #include <schily/mconfig.h> 3 #ifndef lint 4 static UConst char sccsid[] = 5 "@(#)strncpy.c 1.5 10/05/07 Copyright 2006-2010 J. Schilling"; 6 #endif 7 /* 8 * strncpy() to be used if missing in libc 9 * 10 * Copyright (c) 2006-2010 J. Schilling 11 */ 12 /* 13 * The contents of this file are subject to the terms of the 14 * Common Development and Distribution License, Version 1.0 only 15 * (the "License"). You may not use this file except in compliance 16 * with the License. 17 * 18 * See the file CDDL.Schily.txt in this distribution for details. 19 * A copy of the CDDL is also available via the Internet at 20 * http://www.opensource.org/licenses/cddl1.txt 21 * 22 * When distributing Covered Code, include this CDDL HEADER in each 23 * file and include the License file CDDL.Schily.txt from this distribution. 24 */ 25 26 #include <schily/standard.h> 27 #include <schily/unistd.h> 28 #include <schily/libport.h> 29 30 #ifndef HAVE_STRNCPY 31 32 EXPORT char * strncpy(s1,s2,len)33strncpy(s1, s2, len) 34 register char *s1; 35 register const char *s2; 36 register size_t len; 37 { 38 char *ret = s1; 39 40 if (len == 0) 41 return (ret); 42 43 do { 44 if ((*s1++ = *s2++) == '\0') 45 break; 46 } while (--len > 0); 47 if (len > 0) { 48 while (--len > 0) 49 *s1++ = '\0'; 50 } 51 return (ret); 52 } 53 #endif /* HAVE_STRNCPY */ 54