Back to index

lightning-sunbird  0.9+nobinonly
Functions
charray.c File Reference
#include "ldap-int.h"

Go to the source code of this file.

Functions

int LDAP_CALL ldap_charray_add (char ***a, char *s)
int LDAP_CALL ldap_charray_merge (char ***a, char **s)
void LDAP_CALL ldap_charray_free (char **array)
int LDAP_CALL ldap_charray_inlist (char **a, char *s)
char **LDAP_CALL ldap_charray_dup (char **a)
char **LDAP_CALL ldap_str2charray (char *str, char *brkstr)
int LDAP_CALL ldap_charray_position (char **a, char *s)

Function Documentation

int LDAP_CALL ldap_charray_add ( char ***  a,
char *  s 
)

Definition at line 48 of file charray.c.

{
       int    n;

       if ( *a == NULL ) {
              *a = (char **)NSLDAPI_MALLOC( 2 * sizeof(char *) );
              if ( *a == NULL ) {
                     return -1;
              }
              n = 0;
       } else {
              for ( n = 0; *a != NULL && (*a)[n] != NULL; n++ ) {
                     ;      /* NULL */
              }

              *a = (char **)NSLDAPI_REALLOC( (char *) *a,
                  (n + 2) * sizeof(char *) );
              if ( *a == NULL ) {
                     return -1;
              }
       }

       (*a)[n++] = s;
       (*a)[n] = NULL;
       return 0;
}

Here is the caller graph for this function:

char** LDAP_CALL ldap_charray_dup ( char **  a)

Definition at line 158 of file charray.c.

{
       int    i;
       char   **new;

       for ( i = 0; a[i] != NULL; i++ )
              ;      /* NULL */

       new = (char **)NSLDAPI_MALLOC( (i + 1) * sizeof(char *) );
       if ( new == NULL ) {
              return NULL;
       }

       for ( i = 0; a[i] != NULL; i++ ) {
              new[i] = nsldapi_strdup( a[i] );
              if ( new[i] == NULL ) {
                     int    j;

                     for ( j = 0; j < i; j++ )
                         NSLDAPI_FREE( new[j] );
                     NSLDAPI_FREE( new );
                     return NULL;
              }
       }
       new[i] = NULL;

       return( new );
}

Here is the call graph for this function:

Here is the caller graph for this function:

void LDAP_CALL ldap_charray_free ( char **  array)

Definition at line 116 of file charray.c.

{
       char   **a;

       if ( array == NULL ) {
              return;
       }

       for ( a = array; *a != NULL; a++ ) {
              if ( *a != NULL ) {
                     NSLDAPI_FREE( *a );
              }
       }
       NSLDAPI_FREE( (char *) array );
}

Here is the caller graph for this function:

int LDAP_CALL ldap_charray_inlist ( char **  a,
char *  s 
)

Definition at line 134 of file charray.c.

{
       int    i;

       if ( a == NULL )
              return( 0 );

       for ( i = 0; a[i] != NULL; i++ ) {
              if ( strcasecmp( s, a[i] ) == 0 ) {
                     return( 1 );
              }
       }

       return( 0 );
}

Here is the call graph for this function:

Here is the caller graph for this function:

int LDAP_CALL ldap_charray_merge ( char ***  a,
char **  s 
)

Definition at line 84 of file charray.c.

{
       int    i, n, nn;

       if ( (s == NULL) || (s[0] == NULL) )
           return 0;

       for ( n = 0; *a != NULL && (*a)[n] != NULL; n++ ) {
              ;      /* NULL */
       }
       for ( nn = 0; s[nn] != NULL; nn++ ) {
              ;      /* NULL */
       }

       *a = (char **)NSLDAPI_REALLOC( (char *) *a,
           (n + nn + 1) * sizeof(char *) );
       if ( *a == NULL ) {
              return -1;
       }

       for ( i = 0; i < nn; i++ ) {
              (*a)[n + i] = s[i];
       }
       (*a)[n + nn] = NULL;
       return 0;
}

Here is the caller graph for this function:

int LDAP_CALL ldap_charray_position ( char **  a,
char *  s 
)

Definition at line 234 of file charray.c.

{
       int     i;

       for ( i = 0; a[i] != NULL; i++ ) {
              if ( strcasecmp( s, a[i] ) == 0 ) {
                     return( i );
              }
       }

       return( -1 );
}

Here is the call graph for this function:

Here is the caller graph for this function:

char** LDAP_CALL ldap_str2charray ( char *  str,
char *  brkstr 
)

Definition at line 194 of file charray.c.

{
       char   **res;
       char   *s;
       int    i;

       i = 1;
       for ( s = str; *s; s++ ) {
              if ( strchr( brkstr, *s ) != NULL ) {
                     i++;
              }
       }

       res = (char **)NSLDAPI_MALLOC( (i + 1) * sizeof(char *) );
       if ( res == NULL ) {
              return NULL;
       }
       i = 0;
       for ( s = strtok( str, brkstr ); s != NULL; s = strtok( NULL,
           brkstr ) ) {
              res[i++] = nsldapi_strdup( s );
              if ( res[i - 1] == NULL ) {
                     int    j;

                     for ( j = 0; j < (i - 1); j++ )
                         NSLDAPI_FREE( res[j] );
                     NSLDAPI_FREE( res );
                     return NULL;
              }
       }
       res[i] = NULL;

       return( res );
}

Here is the call graph for this function: