#!/bin/sh
# Copyright 2001 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 2 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.

# Please email any bugs, comments, and/or additions to this file to:
# bug-dejagnu@prep.ai.mit.edu

# Written by DJ Delorie <dj@redhat.com>

# Run this on a machine with Cygwin and Microsoft Visual C to create
# the RES files we match against.

RC="rc"
if test x"$1" != x""
then
  RC="$1"
fi

for i in *.rc
do
  o=`echo $i | sed s/.rc/.res/`
  d=`echo $i | sed s/.rc/.rsd/`
  echo "$i -> $o -> $d"
  $RC /fo$o $i
  objdump -b binary -s $o | sed -n '/^ [0-9a-f][0-9a-f]* /p' > $d
  rm $o
done
