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/ds_rmdb.c | |
download | ds-b2093e3016027d6b5cf06b3f91f30769bfc099e2.tar.gz ds-b2093e3016027d6b5cf06b3f91f30769bfc099e2.tar.xz ds-b2093e3016027d6b5cf06b3f91f30769bfc099e2.zip |
Moving NSCP Directory Server from DirectoryBranch to TRUNK, initial drop. (foxworth)ldapserver7x
Diffstat (limited to 'ldap/admin/src/ds_rmdb.c')
-rw-r--r-- | ldap/admin/src/ds_rmdb.c | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/ldap/admin/src/ds_rmdb.c b/ldap/admin/src/ds_rmdb.c new file mode 100644 index 00000000..08a1bb7c --- /dev/null +++ b/ldap/admin/src/ds_rmdb.c @@ -0,0 +1,73 @@ +/** BEGIN COPYRIGHT BLOCK + * Copyright 2001 Sun Microsystems, Inc. + * Portions copyright 1999, 2001-2003 Netscape Communications Corporation. + * All rights reserved. + * END COPYRIGHT BLOCK **/ +/* + * Delete backed-up database files. + * + * Anil Bhavnani + * Removed all HTML output for DS 4.0: Rob Weltman + */ + +#include <stdio.h> +#include <stdlib.h> +#include "libadminutil/admutil.h" +#include "dsalib.h" +#include "portable.h" +#include "init_ds_env.h" +#include <string.h> +#ifdef XP_UNIX +#include <unistd.h> +#endif + +#ifndef MAXPATHLEN +#define MAXPATHLEN 1024 +#endif + +int main(int argc, char *argv[], char *envp[]) +{ + char *del_file = NULL; + char **bak_files; + int file_count = 0; + int err = 0; + + fprintf(stdout, "Content-type: text/html\n\n"); + + if ( init_ds_env() ) + return 1; + + ds_become_localuser (ds_get_config (DS_REAL_CONFIG)); + + /* + * Get value of the "deletefile" variable. + */ + del_file = ds_get_cgi_var("deletefile"); + if ( (NULL == del_file) || (strlen(del_file) < 1) ) { + rpt_err( DS_UNDEFINED_VARIABLE, "deletefile", NULL, NULL ); + return 1; + } + + bak_files = ds_get_file_list( del_file ); + if ( bak_files == NULL ) { + rpt_err( DS_NO_SUCH_FILE, del_file, NULL, NULL ); + return 1; + } else { + int j; + char buf[ MAXPATHLEN ]; + for ( j = 0; bak_files[ j ] != NULL; j++ ) { + sprintf( buf, "%s/%s", del_file, bak_files[ j ]); + if ( unlink(buf) != 0 ) { + rpt_err( DS_CANNOT_DELETE_FILE, buf, NULL, NULL ); + return 1; + } + } + if ( rmdir( del_file ) < 0 ) { + rpt_err( DS_CANNOT_DELETE_FILE, del_file, NULL, NULL ); + return 1; + } + } + rpt_success("Success! Deleted directory."); + + return 0; +} |