diff --git a/libguile/guile-doc-snarf.in b/libguile/guile-doc-snarf.in index 89dcc04ee..3419a3d49 100755 --- a/libguile/guile-doc-snarf.in +++ b/libguile/guile-doc-snarf.in @@ -1,20 +1,51 @@ #!/bin/sh -# Extract the initialization actions for builtin things. +# +# Copyright (C) 2000, 2001, 2002 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, 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 software; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 59 Temple Place, Suite 330, +# Boston, MA 02111-1307 USA -fullfilename=$1; shift +# Commentary: + +# Usage: guile-doc-snarf -o OUTFILE INFILE [CPP-OPTIONS ...] +# +# Process INFILE using the C pre-processor and some other programs. +# Write output to a file named OUTFILE. If there are errors during +# processing, delete OUTFILE and exit with non-zero status. +# +# During snarfing, the pre-processor macro SCM_MAGIC_SNARFER is +# defined. +# +# If env var CPP is set, use its value instead of the C pre-processor +# determined at Guile configure-time: "@CPP@". Likewise for AWK (default +# "@AWK@"). + +# Code: + +if [ ! x"$1" = x-o -o x"$3" = x ] ; then + me=`basename $0` + echo ${me}: ERROR: missing required args + echo "Usage: $me -o OUTFILE INFILE [CPP-OPTIONS ...]" + exit 1 +fi + +outfile=$2 ; fullfilename=$3 ; shift ; shift ; shift # strip path to source directory filename=`basename $fullfilename` -# we need to be sure that the .x file exists -# since the .c/.cc file may include it -# (the old guile-snarf did not have this problem -# because the makefile redirects output to the .x file -# which creates the file before the inclusion occurs) -# --12/12/99 gjb -no_ext=`echo $filename | sed 's/\.[^.]*$//g'` -dot_doc=${no_ext}.doc - temp="/tmp/snarf.$$" trap "rm -f $temp" 0 1 2 15 @@ -27,6 +58,9 @@ ${AWK} -f guile-func-name-check "$fullfilename" ## We must use a temporary file here, instead of a pipe, because we ## need to know if CPP exits with a non-zero status. -${CPP} -DSCM_MAGIC_SNARFER "$@" > ${temp} || exit $? +rm -f $outfile +${CPP} -DSCM_MAGIC_SNARFER "$fullfilename" "$@" > ${temp} || exit $? cat ${temp} | sed 's/^\(.\{128\}.\{128\}.\{128\}.\{128\}.\{128\}.\{128\}.\{128\}.\{128\}\).*/\1/g' | \ -${AWK} -f `dirname $0`/guile-snarf.awk `basename ${dot_doc}` +${AWK} -f `dirname $0`/guile-snarf.awk $outfile > /dev/null + +# guile-doc-snarf ends here