Skip to content
Toggle navigation
Toggle navigation
This project
Loading...
Sign in
John McEleney
/
mailutils
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Issue Boards
Files
Commits
Network
Compare
Branches
Tags
Commit
d82454da
...
d82454dab82be82e4ef632507e87386fe2ff1560
authored
2002-11-07 15:03:21 +0000
by
Sergey Poznyakoff
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
Moved from /sieve
1 parent
2aa6ca4b
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
170 additions
and
0 deletions
scripts/ylwrap
scripts/ylwrap
0 → 100755
View file @
d82454d
#! /bin/sh
# ylwrap - wrapper for lex/yacc invocations.
# Copyright 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
# Written by Tom Tromey <tromey@cygnus.com>.
# -yy modification by Sergey Poznyakoff <gray@farlep.net>
#
# 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 [ARGS] INPUT [OUTPUT DESIRED]... -- [-yy repl] [ARGS]...
# * PROGRAM is program to run; options can follow but must start with `-'.
# * INPUT is the input file
# * OUTPUT is file PROG generates
# * DESIRED is file we actually want
# * ARGS are passed to PROG
# * Optional -yy introduces the sequence to replace yy prefixes with.
# 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
# We also have to accept options here and append them to the program.
# Why? Suppose YACC is set to `bison -y'. Clearly nobody uses
# ylwrap, or this would have been discovered earlier!
while
:;
do
case
"
$1
"
in
-
*
)
prog
=
"
$prog
$1
"
shift
;;
*
)
break
;;
esac
done
# The input.
input
=
"
$1
"
shift
case
"
$input
"
in
/
*
|
[
A-Za-z]:
*
)
# Absolute path; do nothing.
;;
*
)
# Relative path. Make it absolute.
input
=
"
`
pwd
`
/
$input
"
;;
esac
# The directory holding the input.
input_dir
=
"
`
echo
$input
| sed -e
's,/[^/]*$,,'
`
"
# Quote $INPUT_DIR so we can use it in a regexp.
# FIXME: really we should care about more than `.'.
input_rx
=
"
`
echo
$input_dir
| sed -e
's,\.,\\\.,g'
`
"
pairlist
=
while
test
"$#"
-ne 0;
do
if
test
"
$1
"
=
"--"
;
then
shift
break
fi
pairlist
=
"
$pairlist
$1
"
shift
done
if
[
$#
-ne 0
]
;
then
if
[
"x
$1
"
=
"x-yy"
]
;
then
shift
if
[
$#
-eq 0
]
;
then
echo
"ylwrap: -yy requires an argument"
exit
1
fi
YYREPL
=
$1
shift
fi
fi
# 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
$prog
${
1
+
"
$@
"
}
"
$input
"
status
=
$?
if
test
$status
-eq 0;
then
set
X
$pairlist
shift
first
=
yes
# Since DOS filename conventions don't allow two dots,
# the DOS version of Bison writes out y_tab.c instead of y.tab.c
# and y_tab.h instead of y.tab.h. Test to see if this is the case.
y_tab_nodot
=
"no"
if
test
-f y_tab.c
||
test
-f y_tab.h;
then
y_tab_nodot
=
"yes"
fi
while
test
"$#"
-ne 0;
do
from
=
"
$1
"
# Handle y_tab.c and y_tab.h output by DOS
if
test
$y_tab_nodot
=
"yes"
;
then
if
test
$from
=
"y.tab.c"
;
then
from
=
"y_tab.c"
else
if
test
$from
=
"y.tab.h"
;
then
from
=
"y_tab.h"
fi
fi
fi
if
test
-f
"
$from
"
;
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
# Edit out `#line' or `#' directives. We don't want the
# resulting debug information to point at an absolute srcdir;
# it is better for it to just mention the .y file with no
# path.
EXPR
=
"/^#/ s,
$input_rx
/,,"
if
[
! -z
"
$YYREPL
"
]
;
then
EXPR
=
"
$EXPR
;s/yy/
$YYREPL
/g"
fi
sed -e
"
$EXPR
"
"
$from
"
>
"
$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
Please
register
or
sign in
to post a comment