#!/usr/bin/perl
# -*- perl -*-

# Copyright 2012
# Free Software Foundation, Inc.

# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
# 
# This program 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 General Public License for more details.
# 
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.  

# Utility to create *.d files from *.lst files.  Not normally needed.

opendir L, "/tmp/lsts";
for $f (sort readdir L) {
    next unless $f =~ /\.lst/;
    $f =~ s@\.lst@@;
    push (@files, $f);
}
closedir L;

for $f (@files) {

    open (I, "/tmp/lsts/$f.lst");
    open (O, ">$f.d");

    print O "#objdump: -dr\n";

    while (<I>) {
	s/$f\.o/dump.o/;
	s/\\/\\\\/g;
	s/([\[\]\.\*\?\+])/\\$1/g;
	s/file format .*/file format \.\*/;
	print O;
    }

    close I;
    close O;
}
