]> git.sur5r.net Git - openldap/blob - libraries/libldap/string.c
Don't provide ldap.OpenLDAP.org and dc=OpenLDAP, dc=Org as the defaults.
[openldap] / libraries / libldap / string.c
1 /*
2  * Copyright 1998-1999 The OpenLDAP Foundation, All Rights Reserved.
3  * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
4  */
5
6 #include "portable.h"
7
8 #include <stdlib.h>
9 #include <ac/string.h>
10 #include <ac/time.h>
11
12 #include "ldap-int.h"
13
14
15 #if defined ( HAVE_STRSPN )
16 #define int_strspn strspn
17 #else
18 static int int_strspn( const char *str, const char *delim )
19 {
20         int pos;
21         const char *p=delim;
22
23         for( pos=0; (*str) ; pos++,str++) {
24                 if (*str!=*p) {
25                         for( p=delim; (*p) ; p++ ) {
26                                 if (*str==*p) {
27                                         break;
28                                 }
29                         }
30                 }
31
32                 if (*p=='\0') {
33                         return pos;
34                 }
35         }
36         return pos;
37 }
38 #endif
39
40 #if defined( HAVE_STRPBRK )
41 #define int_strpbrk strpbrk
42 #else
43 static char *(int_strpbrk)( const char *str, const char *accept )
44 {
45         const char *p;
46
47         for( ; (*str) ; str++ ) {
48                 for( p=accept; (*p) ; p++) {
49                         if (*str==*p) {
50                                 return str;
51                         }
52                 }
53         }
54
55         return NULL;
56 }
57 #endif
58
59 char *(ldap_pvt_strtok)( char *str, const char *delim, char **pos )
60 {
61 #if defined( HAVE_STRTOK_R ) || defined( HAVE_REENTRANT_FUNCTIONS )
62         return strtok_r(str, delim, pos);
63 #else
64         char *p;
65
66         if (pos==NULL) {
67                 return NULL;
68         }
69
70         if (str==NULL) {
71                 if (*pos==NULL) {
72                         return NULL;
73                 }
74
75                 str=*pos;
76         }
77
78         /* skip any initial delimiters */
79         str += int_strspn( str, delim );
80         if (*str == '\0') {
81                 return NULL;
82         }
83
84         p = int_strpbrk( str, delim );
85         if (p==NULL) {
86                 *pos = NULL;
87
88         } else {
89                 *p ='\0';
90                 *pos = p+1;
91         }
92
93         return str;
94 #endif
95 }
96
97 char *
98 (ldap_pvt_strdup)( const char *s )
99 {
100         char    *p;
101         int     len = strlen( s ) + 1;
102
103         if ( (p = (char *) malloc( len )) == NULL ) {
104                 return( (char *)0 );
105         }
106
107         memcpy( p, s, len );
108         return( p );
109 }