Loading...
--- /dev/null
+++ Libc/Libc-262/ppc/gen/strncpy.c
@@ -0,0 +1,61 @@
+/*
+ * 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;
+}