stdalign tests: Skip the test when compiled by Sun C.
[gnulib.git] / lib / stpncpy.c
index 243cbc7..8cd49cc 100644 (file)
@@ -1,11 +1,12 @@
-/* Copyright (C) 1993, 1995-1997, 2002-2003 Free Software Foundation, Inc.
+/* Copyright (C) 1993, 1995-1997, 2002-2003, 2005-2007, 2009-2011 Free Software
+ * Foundation, Inc.
 
    NOTE: The canonical source of this file is maintained with the GNU C Library.
    Bugs can be reported to bug-glibc@gnu.org.
 
 
    NOTE: The canonical source of this file is maintained with the GNU C Library.
    Bugs can be reported to bug-glibc@gnu.org.
 
-   This program is free software; you can redistribute it and/or modify it
+   This program is free software: you can redistribute it and/or modify it
    under the terms of the GNU General Public License as published by the
    under the terms of the GNU General Public License as published by the
-   Free Software Foundation; either version 2, or (at your option) any
+   Free Software Foundation; either version 3 of the License, or any
    later version.
 
    This program is distributed in the hope that it will be useful,
    later version.
 
    This program is distributed in the hope that it will be useful,
    GNU General Public License for more details.
 
    You should have received a copy of the GNU General Public License
    GNU General Public License for more details.
 
    You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-   USA.  */
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 /* This is almost copied from strncpy.c, written by Torbjorn Granlund.  */
 
 
 /* This is almost copied from strncpy.c, written by Torbjorn Granlund.  */
 
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
+#include <config.h>
 
 /* Specification.  */
 
 /* Specification.  */
-#include "stpncpy.h"
-
-#ifdef _LIBC
-# include <string.h>
-#else
-# include <sys/types.h>
-#endif
+#include <string.h>
 
 #ifndef weak_alias
 # define __stpncpy stpncpy
 #endif
 
 
 #ifndef weak_alias
 # define __stpncpy stpncpy
 #endif
 
-/* Copy no more than N characters of SRC to DEST, returning the address of
-   the terminating '\0' in DEST, if any, or else DEST + N.  */
+/* Copy no more than N bytes of SRC to DST, returning a pointer past the
+   last non-NUL byte written into DST.  */
 char *
 __stpncpy (char *dest, const char *src, size_t n)
 {
 char *
 __stpncpy (char *dest, const char *src, size_t n)
 {
@@ -50,26 +41,26 @@ __stpncpy (char *dest, const char *src, size_t n)
       size_t n4 = n >> 2;
 
       for (;;)
       size_t n4 = n >> 2;
 
       for (;;)
-       {
-         c = *src++;
-         *dest++ = c;
-         if (c == '\0')
-           break;
-         c = *src++;
-         *dest++ = c;
-         if (c == '\0')
-           break;
-         c = *src++;
-         *dest++ = c;
-         if (c == '\0')
-           break;
-         c = *src++;
-         *dest++ = c;
-         if (c == '\0')
-           break;
-         if (--n4 == 0)
-           goto last_chars;
-       }
+        {
+          c = *src++;
+          *dest++ = c;
+          if (c == '\0')
+            break;
+          c = *src++;
+          *dest++ = c;
+          if (c == '\0')
+            break;
+          c = *src++;
+          *dest++ = c;
+          if (c == '\0')
+            break;
+          c = *src++;
+          *dest++ = c;
+          if (c == '\0')
+            break;
+          if (--n4 == 0)
+            goto last_chars;
+        }
       n -= dest - s;
       goto zero_fill;
     }
       n -= dest - s;
       goto zero_fill;
     }
@@ -85,9 +76,9 @@ __stpncpy (char *dest, const char *src, size_t n)
       --n;
       *dest++ = c;
       if (c == '\0')
       --n;
       *dest++ = c;
       if (c == '\0')
-       break;
+        break;
       if (n == 0)
       if (n == 0)
-       return dest;
+        return dest;
     }
 
  zero_fill:
     }
 
  zero_fill: