diff options
author | cvsadm <cvsadm> | 2005-01-21 00:44:34 +0000 |
---|---|---|
committer | cvsadm <cvsadm> | 2005-01-21 00:44:34 +0000 |
commit | b2093e3016027d6b5cf06b3f91f30769bfc099e2 (patch) | |
tree | cf58939393a9032182c4fbc4441164a9456e82f8 /ldap/admin/src/addindex.c | |
download | ds-ldapserver7x.tar.gz ds-ldapserver7x.tar.xz ds-ldapserver7x.zip |
Moving NSCP Directory Server from DirectoryBranch to TRUNK, initial drop. (foxworth)ldapserver7x
Diffstat (limited to 'ldap/admin/src/addindex.c')
-rw-r--r-- | ldap/admin/src/addindex.c | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/ldap/admin/src/addindex.c b/ldap/admin/src/addindex.c new file mode 100644 index 00000000..7e9e2671 --- /dev/null +++ b/ldap/admin/src/addindex.c @@ -0,0 +1,80 @@ +/** BEGIN COPYRIGHT BLOCK + * Copyright 2001 Sun Microsystems, Inc. + * Portions copyright 1999, 2001-2003 Netscape Communications Corporation. + * All rights reserved. + * END COPYRIGHT BLOCK **/ +/* + * addindex.c: Creates one or more indexes for specified attributes + * + * Rob Weltman + */ + +#include <stdio.h> +#include <stdlib.h> +#include "libadminutil/admutil.h" +#include "dsalib.h" +#include "init_ds_env.h" +#include <string.h> + +int main(int argc, char *argv[]) +{ + int status; + char *attributes; + char *attrs; + char **attrList; + int nAttrs; + char *nextAttr = NULL; + char *backendName; + + + fprintf(stdout, "Content-type: text/html\n\n"); + + if ( init_ds_env() ) + return 1; + + /* + * Get value of the "attributes" variable. + */ + attributes = ds_get_cgi_var("attributes"); + if ( (NULL == attributes) || (strlen(attributes) < 1) ) { + rpt_err( DS_UNDEFINED_VARIABLE, "attributes", NULL, NULL ); + return 1; + } + + + backendName = ds_get_cgi_var("backendID"); + if ( (NULL == backendName) || (strlen(backendName) < 1) ) { + rpt_err( DS_UNDEFINED_VARIABLE, "backendName", NULL, NULL ); + return 1; + } + + + attrs = strdup( attributes ); + /* Allocate for worst possible case */ + attrList = (char **)malloc(sizeof(*attrList) * (strlen(attrs)+1)); + nAttrs = 0; + /* strtok() is not MT safe, but it is okay to call here because this is a command line */ + attrList[nAttrs++] = strtok( attrs, " " ); + do { + nextAttr = strtok( NULL, " " ); + attrList[nAttrs++] = nextAttr; + } while( nextAttr != NULL ); + + ds_send_status((nAttrs > 1) ? "Creating indexes ..." : + "Creating index ..."); + + status = ds_addindex( attrList, backendName ); + + if ( !status ) { + rpt_success((nAttrs > 1) ? "Success! The indexes have been created." : + "Success! The index has been created."); + status = 0; + } else { + char msg[BIG_LINE]; + sprintf( msg,"[%s] %s", backendName, attributes); + rpt_err( status, msg, NULL, NULL ); + status = 1; + } + + return status; +} |