]> git.sur5r.net Git - openldap/commitdiff
slap_strncopy function
authorPierangelo Masarati <ando@openldap.org>
Sat, 12 Jan 2002 16:02:51 +0000 (16:02 +0000)
committerPierangelo Masarati <ando@openldap.org>
Sat, 12 Jan 2002 16:02:51 +0000 (16:02 +0000)
servers/slapd/charray.c
servers/slapd/proto-slap.h

index 2b628d7bbb5e63b7e281bbb4b24feb0a60d455ca..01057217a88cfc047f7a65fa0d43846690a70fc6 100644 (file)
@@ -229,6 +229,24 @@ slap_strcopy(
        return a-1;
 }
 
+/* strncopy is like strcpy except it returns a pointer to the trailing NUL of
+ * the result string. This allows fast construction of catenated strings
+ * without the overhead of strlen/strcat.
+ */
+char *
+slap_strncopy(
+       char *a,
+       const char *b,
+       size_t n
+)
+{
+       if (!a || !b || n == 0)
+               return a;
+       
+       while ((*a++ = *b++) && n-- > 0) ;
+       return a-1;
+}
+
 /* Unlike charray_add, bvarray_add does not make a new copy of the
  * source string. Typically it is used where ber_bvecadd was before,
  * and ber_bvecadd didn't duplicate its source either.
index 5e23ef983098ab9d684d9cb08ba851f92b779bc8..595c4936c657a37e58bff38d265d4869b23979b3 100644 (file)
@@ -283,6 +283,8 @@ LDAP_SLAPD_F (void) bvarray_free LDAP_P(( struct berval *a ));
 
 LDAP_SLAPD_F (char *) slap_strcopy LDAP_P((
        char *dst, const char *src ));
+LDAP_SLAPD_F (char *) slap_strncopy LDAP_P((
+       char *dst, const char *src, size_t n ));
 
 /*
  * controls.c