[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    kdelibs/kdecore
From:       Dirk Mueller <mueller () kde ! org>
Date:       2002-12-08 17:01:21
[Download RAW message or body]

CVS commit by mueller: 

adding strlcpy / strlcat implementation. 
for reference see: http://www.courtesan.com/todd/papers/strlcpy.html


  M +20 -0     configure.in.in   1.27
  M +33 -0     fakes.c   1.10


--- kdelibs/kdecore/configure.in.in   1.27:
@@ -283,2 +283,22 @@ AC_TRY_LINK(dnl
 )
 
+AH_VERBATIM(HAVE_STRLCPY,[
+
+#ifndef HAVE_STRLCPY
+#include <sys/types.h>
+#ifdef __cplusplus
+extern "C" size_t strlcpy(char*,const char*,size_t) throw();
+#else
+size_t strlcpy(char*,const char*,size_t); 
+#endif
+#endif
+
+#ifndef HAVE_STRLCAT
+#include <sys/types.h>
+#ifdef __cplusplus
+extern "C" size_t strlcat(char*,const char*,size_t) throw();
+#else
+size_t strlcat(char*,const char*,size_t);
+#endif
+#endif
+])
--- kdelibs/kdecore/fakes.c   1.10:
@@ -285,2 +285,35 @@ int revoke(const char *tty)
 }
 #endif
+
+#ifndef HAVE_STRLCPY
+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';
+    return ret;
+}
+#endif
+
+#ifndef HAVE_STRLCAT
+size_t strlcat(char* d, const char* s, size_t bufsize)
+{
+    size_t len1 = strlen(d);
+    size_t len2 = strlen(s);
+    size_t ret = len1 + len2;
+
+    if(ret >= bufsize)
+        len2 = bufsize - len1 - 1;
+    if(len2 > 0) {
+        memcpy(d+len1,s,len2);
+        d[len1+len2] = '\0';
+    }
+    return ret;
+}
+#endif
+        
+      

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic