]> git.proxmox.com Git - mirror_frr.git/blobdiff - lib/strlcpy.c
Merge pull request #3356 from opensourcerouting/router-id-loopbacks
[mirror_frr.git] / lib / strlcpy.c
index b7681754aa7e7fd90ca02c1a8331b8a357f0e071..71ee9f1a5452740f3f585df1d81048b04d8a72b1 100644 (file)
 /* adapted for Quagga from glibc patch submission originally from
  * Florian Weimer <fweimer@redhat.com>, 2016-05-18 */
 
-#include <string.h>
-
+#ifdef HAVE_CONFIG_H
 #include "config.h"
+#endif
+
+#include <string.h>
 
 #ifndef HAVE_STRLCPY
 #undef strlcpy
 
-size_t strlcpy(char *__restrict dest, const char *__restrict src, size_t size);
+size_t strlcpy(char *__restrict dest,
+              const char *__restrict src, size_t destsize);
 
-size_t strlcpy(char *__restrict dest, const char *__restrict src, size_t size)
+size_t strlcpy(char *__restrict dest,
+              const char *__restrict src, size_t destsize)
 {
        size_t src_length = strlen(src);
 
-       if (__builtin_expect(src_length >= size, 0)) {
-               if (size > 0) {
-                       /* Copy the leading portion of the string.  The last
-                          character is subsequently overwritten with the NUL
-                          terminator, but the destination size is usually a
-                          multiple of a small power of two, so writing it twice
-                          should be more efficient than copying an odd number
-                          of
-                          bytes.  */
-                       memcpy(dest, src, size);
-                       dest[size - 1] = '\0';
+       if (__builtin_expect(src_length >= destsize, 0)) {
+               if (destsize > 0) {
+                       /*
+                        * Copy the leading portion of the string.  The last
+                        * character is subsequently overwritten with the NUL
+                        * terminator, but the destination destsize is usually
+                        * a multiple of a small power of two, so writing it
+                        * twice should be more efficient than copying an odd
+                        * number of bytes.
+                        */
+                       memcpy(dest, src, destsize);
+                       dest[destsize - 1] = '\0';
                }
        } else
                /* Copy the string and its terminating NUL character.  */