Put new directives over commented version, to preserve correct file order
authorJamie Cameron <jcameron@webmin.com>
Fri, 28 Nov 2008 19:54:03 +0000 (19:54 +0000)
committerJamie Cameron <jcameron@webmin.com>
Fri, 28 Nov 2008 19:54:03 +0000 (19:54 +0000)
ldap-server/ldap-server-lib.pl

index 4a176d5..8b1f905 100644 (file)
@@ -269,13 +269,33 @@ for(my $i=0; $i<@old || $i<@values; $i++) {
                        push(@$conf, $newdir);
                        }
                else {
-                       # At end of file
-                       local $newdir = { 'name' => $name,
-                                         'line' => scalar(@$lref),
-                                         'eline' => scalar(@$lref),
-                                         'values' => \@unqvalues };
-                       push(@$lref, $line);
-                       push(@$conf, $newdir);
+                       # At end of file, or over commented directive
+                       my $cmtline = undef;
+                       for(my $i=0; $i<@$lref; $i++) {
+                               if ($lref->[$i] =~ /^\s*\#+\s*(\S+)/ &&
+                                   $1 eq $name) {
+                                       $cmtline = $i;
+                                       last;
+                                       }
+                               }
+                       if (defined($cmtline)) {
+                               # Over comment
+                               local $newdir = { 'name' => $name,
+                                                 'line' => $cmtline,
+                                                 'eline' => $cmtline,
+                                                 'values' => \@unqvalues };
+                               $lref->[$cmtline] = $line;
+                               push(@$conf, $newdir);
+                               }
+                       else {
+                               # Really at end
+                               local $newdir = { 'name' => $name,
+                                                 'line' => scalar(@$lref),
+                                                 'eline' => scalar(@$lref),
+                                                 'values' => \@unqvalues };
+                               push(@$lref, $line);
+                               push(@$conf, $newdir);
+                               }
                        }
                }
        }