fmod, fmodl: Fix computation for large quotients x / y.
[gnulib.git] / lib / stpncpy.c
index 3f7473f..ef9babd 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-2012 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"
-
-#if !HAVE_STPNCPY
-
-#ifndef _LIBC
-/* We cannot generally use the name 'stpncpy' since AIX 4 defines an unusable
-   variant of the function but we cannot use it.  */
-# undef stpncpy
-# define stpncpy gnu_stpncpy
-#endif
+#include <string.h>
 
 #ifndef weak_alias
 # define __stpncpy stpncpy
 
 #ifndef weak_alias
 # define __stpncpy stpncpy
@@ -53,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;
     }
@@ -88,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:
@@ -102,5 +90,3 @@ __stpncpy (char *dest, const char *src, size_t n)
 #ifdef weak_alias
 weak_alias (__stpncpy, stpncpy)
 #endif
 #ifdef weak_alias
 weak_alias (__stpncpy, stpncpy)
 #endif
-
-#endif