r29: Almost ready for new release (cp-update)
[carnet-tools-cn.git] / cp-update
index 6491c78..2207c40 100755 (executable)
--- a/cp-update
+++ b/cp-update
@@ -311,6 +311,8 @@ sub del() {
   my ($mytrailer, $mybegin, $myend) =
     ($Trailer, $MarkBegin, $MarkEnd);
 
+  my ($bm_found, $em_found); # begin/end mark found indicator
+
   # Make the strings regexp-friendly by quoting non-word chars.
   $mybegin   =~ s/\W/\\$&/g;
   $myend     =~ s/\W/\\$&/g;
@@ -320,9 +322,19 @@ sub del() {
   foreach (@Lines) {
     push (@filtered, $_)
       unless (/^$mybegin(?:$mytrailer)?$/o .. /^$myend(?:$mytrailer)?$/o);
+      
+    # for safety check:
+    $bm_found = 1 if (/^$mybegin(?:$mytrailer)?$/o);
+    $em_found = 1 if (/^$myend(?:$mytrailer)?$/o);
+  }
+  if ($bm_found and $em_found) {
+    DEBUG and print STDERR "Deleted ". (@Lines - @filtered) ." out of ".scalar(@Lines)." lines\n";
+    @Lines = @filtered;
+  }
+  elsif ($bm_found and ! $em_found) {
+    # safety exit    
+    die "$ProgramName: no end-mark after begin-mark!\n";
   }
-  DEBUG and print STDERR "Deleted ". (@Lines - @filtered) ." out of ".scalar(@Lines)." lines\n";
-  @Lines = @filtered;
   return scalar(@Lines); # whatever
 }