#!/usr/bin/perl

# This script takes as STDIN an output from the Registry 
# (export from regedit.exe) and prefixes every subkey-value 
# pair by their hkey,key data member
#
# 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
#

${prefix} = "";

LINE: while(<>) {
  chomp;
  s/\r$//;                  # Get rid of 0x0a

  next LINE if(/^$/);       # This is an empty line

  if( /^\[/ ) {
    ${prefix} = ${_};       # assign the prefix for the forthcomming section
    print "${prefix}\n";
    next LINE;
  }

  print "${prefix}$_\n";  
}



