1 changed files with 0 additions and 123 deletions
@ -1,123 +0,0 @@ |
|||
#! /bin/sh |
|||
# ylwrap - wrapper for lex/yacc invocations. |
|||
# Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc. |
|||
# Written by Tom Tromey <tromey@cygnus.com>. |
|||
# |
|||
# 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, 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. |
|||
|
|||
# Usage: |
|||
# ylwrap PROGRAM INPUT [OUTPUT DESIRED]... -- [ARGS]... |
|||
# * PROGRAM is program to run. |
|||
# * INPUT is the input file |
|||
# * OUTPUT is file PROG generates |
|||
# * DESIRED is file we actually want |
|||
# * ARGS are passed to PROG |
|||
# Any number of OUTPUT,DESIRED pairs may be used. |
|||
|
|||
# The program to run. |
|||
prog="$1" |
|||
shift |
|||
# Make any relative path in $prog absolute. |
|||
case "$prog" in |
|||
/* | [A-Za-z]:\\*) ;; |
|||
*/*) prog="`pwd`/$prog" ;; |
|||
esac |
|||
|
|||
# The input. |
|||
input="$1" |
|||
shift |
|||
case "$input" in |
|||
/* | [A-Za-z]:\\*) |
|||
# Absolute path; do nothing. |
|||
;; |
|||
*) |
|||
# Relative path. Make it absolute. Why? Because otherwise any |
|||
# debugging info in the generated file will point to the wrong |
|||
# place. This is really gross. |
|||
input="`pwd`/$input" |
|||
;; |
|||
esac |
|||
|
|||
# We don't want to use the absolute path if the input in the current |
|||
# directory like when making a tar ball. |
|||
input_base=`echo $input | sed -e 's|.*/||'` |
|||
if test -f $input_base && cmp $input_base $input >/dev/null 2>&1; then |
|||
input=$input_base |
|||
fi |
|||
|
|||
pairlist= |
|||
while test "$#" -ne 0; do |
|||
if test "$1" = "--"; then |
|||
shift |
|||
break |
|||
fi |
|||
pairlist="$pairlist $1" |
|||
shift |
|||
done |
|||
|
|||
# FIXME: add hostname here for parallel makes that run commands on |
|||
# other machines. But that might take us over the 14-char limit. |
|||
dirname=ylwrap$$ |
|||
trap "cd `pwd`; rm -rf $dirname > /dev/null 2>&1" 1 2 3 15 |
|||
mkdir $dirname || exit 1 |
|||
|
|||
cd $dirname |
|||
case "$input" in |
|||
/* | [A-Za-z]:\\*) |
|||
# Absolute path; do nothing. |
|||
;; |
|||
*) |
|||
# Make a symbolic link, hard link or hardcopy. |
|||
ln -s ../"$input" . > /dev/null 2>&1 || ln ../"$input" . > /dev/null 2>&1 || cp ../"$input" . |
|||
;; |
|||
esac |
|||
$prog ${1+"$@"} "$input" |
|||
status=$? |
|||
|
|||
if test $status -eq 0; then |
|||
set X $pairlist |
|||
shift |
|||
first=yes |
|||
while test "$#" -ne 0; do |
|||
if test -f "$1"; then |
|||
# If $2 is an absolute path name, then just use that, |
|||
# otherwise prepend `../'. |
|||
case "$2" in |
|||
/* | [A-Za-z]:\\*) target="$2";; |
|||
*) target="../$2";; |
|||
esac |
|||
mv "$1" "$target" || status=$? |
|||
else |
|||
# A missing file is only an error for the first file. This |
|||
# is a blatant hack to let us support using "yacc -d". If -d |
|||
# is not specified, we don't want an error when the header |
|||
# file is "missing". |
|||
if test $first = yes; then |
|||
status=1 |
|||
fi |
|||
fi |
|||
shift |
|||
shift |
|||
first=no |
|||
done |
|||
else |
|||
status=$? |
|||
fi |
|||
|
|||
# Remove the directory. |
|||
cd .. |
|||
rm -rf $dirname |
|||
|
|||
exit $status |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue