#!/usr/bin/perl # This script takes as STDIN an output from the regFixer.pl # and reformat the file as if it would have been exported from the registry # in the "REGEDIT4" format. # # Copyright 1999 Sylvain St-Germain # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # ${newkey} = ""; ${key} = ""; ${data} = ""; # I do not validate the integrity of the file, I am assuming that # the input file comes from the output of regFixer.pl, therefore things # should be ok, if they are not, investigate and send me an email... print "REGEDIT4\n"; LINE: while(<>) { chomp; # get rid of new line next LINE if(/^$/); # This is an empty line (${key}, ${data}, ${rest})= split /]/,$_ ; # Extract the values from the line ${key} = "${key}]"; # put the ']' back there... if (${rest} ne "") # concat we had more than 1 ']' { # on the line ${data} = "${data}]${rest}"; } if (${key} eq ${newkey}) { print "${data}\n"; } else { print "\n"; print "$key\n"; my $s = $data; $s =~ s/^\s+//; $s =~ s/\s+$//; if ($s ne "") { $newkey = $key; # assign it print "$data\n"; } } }