📄 ylwrap
字号:
#! /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"shiftcase "$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_basefipairlist=while test "$#" -ne 0; do if test "$1" = "--"; then shift break fi pairlist="$pairlist $1" shiftdone# 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 15mkdir $dirname || exit 1cd $dirnamecase "$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 doneelse status=$?fi# Remove the directory.cd ..rm -rf $dirnameexit $status
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -