diff options
Diffstat (limited to 'ldap/admin/src/scripts/DSCreate.pm.in')
-rw-r--r-- | ldap/admin/src/scripts/DSCreate.pm.in | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/ldap/admin/src/scripts/DSCreate.pm.in b/ldap/admin/src/scripts/DSCreate.pm.in index fb2a4d75..59a4568f 100644 --- a/ldap/admin/src/scripts/DSCreate.pm.in +++ b/ldap/admin/src/scripts/DSCreate.pm.in @@ -198,7 +198,6 @@ sub changeOwnerMode { sub makeDSDirs { my $inf = shift; - my $verbose = ($DSUtil::debuglevel > 0); my $mode = getMode($inf, 7); my @errs; @@ -207,6 +206,23 @@ sub makeDSDirs { # more privileged user than the directory server, but # still allows the admin server to manage directory # server files/dirs without being root + + # run through first time looking for pre-existing - if any already + # exist, report and exit + my $existing_dirs; + for my $kw (qw(inst_dir config_dir schema_dir log_dir lock_dir run_dir tmp_dir + cert_dir db_dir ldif_dir bak_dir)) { + my $dir = $inf->{slapd}->{$kw}; + if (-d $dir) { + $existing_dirs .= `ls -ld $dir`; + } + } + + if ($existing_dirs) { + return ('error_paths_already_exist', $existing_dirs); + } + + # all clear - create them for my $kw (qw(inst_dir config_dir schema_dir log_dir lock_dir run_dir tmp_dir cert_dir db_dir ldif_dir bak_dir)) { my $dir = $inf->{slapd}->{$kw}; |