regedit: Fix syntax for deleting registry keys (RHBZ#737944).
[hivex.git] / perl / lib / Win / Hivex / Regedit.pm
index 9b6a5d5..8914f9e 100644 (file)
@@ -29,13 +29,13 @@ Win::Hivex::Regedit - Helper for reading and writing regedit format files
 
  use Win::Hivex;
  use Win::Hivex::Regedit qw(reg_import reg_export);
+
  $h = Win::Hivex->open ('SOFTWARE', write => 1);
+
  open FILE, "updates.reg";
  reg_import (\*FILE, $h);
  $h->commit (undef);
+
  reg_export ($h, "\\Microsoft\\Windows NT\\CurrentVersion", \*OUTFILE,
     prefix => "HKEY_LOCAL_MACHINE\\SOFTWARE");
 
@@ -164,16 +164,16 @@ sub reg_import
             # Ignore comments.
             next if /^\s*;/;
 
-            # Expect to see [...] or -[...]
+            # Expect to see [...] or [-...]
             # to merge or delete a node respectively.
-            if (/^\[(.*)\]\s*$/) {
+            if (/^\[-(.*)\]\s*$/) {
+                _delete_node ($hmap, \%params, $1);
+                $state = "outer";
+            } elsif (/^\[(.*)\]\s*$/) {
                 $state = "inner";
                 $newnode = $1;
                 @newvalues = ();
                 @delvalues = ();
-            } elsif (/^-\[(.*)\]\s*$/) {
-                _delete_node ($hmap, \%params, $1);
-                $state = "outer";
             } else {
                 croak (_unexpected ($_, $lineno));
             }