Clearer doc.
[rsync/rsync.git] / lib / compat.c
index ef57d90..bf01376 100644 (file)
 
 
 #ifndef HAVE_STRLCPY
-/* like strncpy but does not 0 fill the buffer and always null 
-   terminates. bufsize is the size of the destination buffer */
+/* Like strncpy but does not 0 fill the buffer and always null 
+ * terminates. bufsize is the size of the destination buffer.
+ *
+ * Returns the index of the terminating byte. */
  size_t strlcpy(char *d, const char *s, size_t bufsize)
 {
        size_t len = strlen(s);
        size_t ret = len;
+       if (bufsize <= 0) return 0;
        if (len >= bufsize) len = bufsize-1;
        memcpy(d, s, len);
        d[len] = 0;
        unsigned char *p = (unsigned char *)&ip.s_addr;
        static char buf[18];
 #if WORDS_BIGENDIAN
-       slprintf(buf, 18, "%d.%d.%d.%d", 
+       snprintf(buf, 18, "%d.%d.%d.%d", 
                 (int)p[0], (int)p[1], (int)p[2], (int)p[3]);
 #else
-       slprintf(buf, 18, "%d.%d.%d.%d", 
+       snprintf(buf, 18, "%d.%d.%d.%d", 
                 (int)p[3], (int)p[2], (int)p[1], (int)p[0]);
 #endif
        return buf;