diff options
Diffstat (limited to 'ldap/admin/src/scripts')
| -rw-r--r-- | ldap/admin/src/scripts/DSCreate.pm.in | 57 | ||||
| -rw-r--r-- | ldap/admin/src/scripts/DSUpdate.pm.in | 9 | ||||
| -rwxr-xr-x | ldap/admin/src/scripts/template-start-slapd.in | 3 |
3 files changed, 42 insertions, 27 deletions
diff --git a/ldap/admin/src/scripts/DSCreate.pm.in b/ldap/admin/src/scripts/DSCreate.pm.in index 06b2d1fd..09b7cd11 100644 --- a/ldap/admin/src/scripts/DSCreate.pm.in +++ b/ldap/admin/src/scripts/DSCreate.pm.in @@ -64,8 +64,8 @@ use Mozilla::LDAP::LDIF; use Exporter; @ISA = qw(Exporter); -@EXPORT = qw(createDSInstance removeDSInstance setDefaults createInstanceScripts installSchema); -@EXPORT_OK = qw(createDSInstance removeDSInstance setDefaults createInstanceScripts installSchema); +@EXPORT = qw(createDSInstance removeDSInstance setDefaults createInstanceScripts makeOtherConfigFiles installSchema); +@EXPORT_OK = qw(createDSInstance removeDSInstance setDefaults createInstanceScripts makeOtherConfigFiles installSchema); use strict; @@ -436,6 +436,7 @@ sub createConfigFile { sub makeOtherConfigFiles { my $inf = shift; + my $skip = shift; my @errs; my %maptable = ( "DS-ROOT" => $inf->{General}->{prefix}, @@ -461,13 +462,18 @@ sub makeOtherConfigFiles { $src = "$inf->{General}->{prefix}@configdir@/slapd-collations.conf"; $dest = "$inf->{slapd}->{config_dir}/slapd-collations.conf"; + $! = 0; # clear errno - copy($src, $dest); - if ($!) { - return ('error_copying_file', $src, $dest, $!); - } - if (@errs = changeOwnerMode($inf, 4, $dest)) { - return @errs; + + #in skip mode, skip files that already exist + unless ($skip and -f $dest) { + copy($src, $dest); + if ($!) { + return ('error_copying_file', $src, $dest, $!); + } + if (@errs = changeOwnerMode($inf, 4, $dest)) { + return @errs; + } } # determine initconfig_dir @@ -487,22 +493,25 @@ sub makeOtherConfigFiles { $! = 0; # clear errno - if (!open(SRC, "< $src")) { - return ("error_opening_scripttmpl", $src, $!); - } - if (!open(DEST, "> $dest")) { - return ("error_opening_scripttmpl", $dest, $!); - } - my $contents; # slurp entire file into memory - read SRC, $contents, int(-s $src); - close(SRC); - while (my ($key, $val) = each %maptable) { - $contents =~ s/\{\{$key\}\}/$val/g; - } - print DEST $contents; - close(DEST); - if (@errs = changeOwnerMode($inf, 4, $dest)) { - return @errs; + # in skip mode, skip files that already exist + unless ($skip and -f $dest) { + if (!open(SRC, "< $src")) { + return ("error_opening_scripttmpl", $src, $!); + } + if (!open(DEST, "> $dest")) { + return ("error_opening_scripttmpl", $dest, $!); + } + my $contents; # slurp entire file into memory + read SRC, $contents, int(-s $src); + close(SRC); + while (my ($key, $val) = each %maptable) { + $contents =~ s/\{\{$key\}\}/$val/g; + } + print DEST $contents; + close(DEST); + if (@errs = changeOwnerMode($inf, 4, $dest)) { + return @errs; + } } return (); diff --git a/ldap/admin/src/scripts/DSUpdate.pm.in b/ldap/admin/src/scripts/DSUpdate.pm.in index 3792afe2..3241a582 100644 --- a/ldap/admin/src/scripts/DSUpdate.pm.in +++ b/ldap/admin/src/scripts/DSUpdate.pm.in @@ -47,7 +47,7 @@ package DSUpdate; use DSUtil; use Inf; use FileConn; -use DSCreate qw(setDefaults createInstanceScripts); +use DSCreate qw(setDefaults createInstanceScripts makeOtherConfigFiles); use File::Basename qw(basename dirname); @@ -315,7 +315,12 @@ sub updateDSInstance { } # upgrade instance scripts - if (@errs = createInstanceScripts($inf, 1)) { + if (@errs = createInstanceScripts($inf, 0)) { + return @errs; + } + + # add new or missing config files + if (@errs = makeOtherConfigFiles($inf, 1)) { return @errs; } diff --git a/ldap/admin/src/scripts/template-start-slapd.in b/ldap/admin/src/scripts/template-start-slapd.in index 444a37ff..0c9ac631 100755 --- a/ldap/admin/src/scripts/template-start-slapd.in +++ b/ldap/admin/src/scripts/template-start-slapd.in @@ -5,6 +5,7 @@ # 0: Server started successfully # 1: Server could not be started # 2: Server already running +INSTANCE={{SERV-ID}} -@sbindir@/start-dirsrv -d {{INITCONFIG-DIR}} {{SERV-ID}} "$@" +@sbindir@/start-dirsrv -d {{INITCONFIG-DIR}} $INSTANCE "$@" exit $? |
