diff options
Diffstat (limited to 'scripts')
-rw-r--r-- | scripts/Makefile.am | 16 | ||||
-rw-r--r-- | scripts/Makefile.in | 201 | ||||
-rwxr-xr-x | scripts/guile-doc-snarf | 57 | ||||
-rwxr-xr-x | scripts/guile-func-name-check | 64 | ||||
-rwxr-xr-x | scripts/guile-snarf.awk | 98 |
5 files changed, 436 insertions, 0 deletions
diff --git a/scripts/Makefile.am b/scripts/Makefile.am new file mode 100644 index 0000000..f3d32f6 --- /dev/null +++ b/scripts/Makefile.am @@ -0,0 +1,16 @@ +# $Id: Makefile.am,v 1.1 2001/12/06 17:36:21 gray Exp $ +# This file is part of GNU RADIUS. +# Copyright (C) 2000,2001, Sergey Poznyakoff +# +# This file is free software; as a special exception the author gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY, to the extent permitted by law; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +EXTRA_DIST = \ + guile-doc-snarf\ + guile-func-name-check\ + guile-snarf.awk diff --git a/scripts/Makefile.in b/scripts/Makefile.in new file mode 100644 index 0000000..fb4af45 --- /dev/null +++ b/scripts/Makefile.in @@ -0,0 +1,201 @@ +# Makefile.in generated automatically by automake 1.4 from Makefile.am + +# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +# $Id: Makefile.in,v 1.1 2001/12/06 17:36:21 gray Exp $ +# This file is part of GNU RADIUS. +# Copyright (C) 2000,2001, Sergey Poznyakoff +# +# This file is free software; as a special exception the author gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY, to the extent permitted by law; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + + +SHELL = @SHELL@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +prefix = @prefix@ +exec_prefix = @exec_prefix@ + +bindir = @bindir@ +sbindir = @sbindir@ +libexecdir = @libexecdir@ +datadir = @datadir@ +sysconfdir = @sysconfdir@ +sharedstatedir = @sharedstatedir@ +localstatedir = @localstatedir@ +libdir = @libdir@ +infodir = @infodir@ +mandir = @mandir@ +includedir = @includedir@ +oldincludedir = /usr/include + +DESTDIR = + +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ + +top_builddir = .. + +ACLOCAL = @ACLOCAL@ +AUTOCONF = @AUTOCONF@ +AUTOMAKE = @AUTOMAKE@ +AUTOHEADER = @AUTOHEADER@ + +INSTALL = @INSTALL@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +transform = @program_transform_name@ + +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_alias = @build_alias@ +build_triplet = @build@ +host_alias = @host_alias@ +host_triplet = @host@ +target_alias = @target_alias@ +target_triplet = @target@ +AS = @AS@ +AWK = @AWK@ +CC = @CC@ +CPP = @CPP@ +DLLTOOL = @DLLTOOL@ +GUILE_CONFIG = @GUILE_CONFIG@ +GUILE_INCLUDES = @GUILE_INCLUDES@ +GUILE_LIBS = @GUILE_LIBS@ +INCLUDEPATH = @INCLUDEPATH@ +LIBOBJS = @LIBOBJS@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +MAKEINFO = @MAKEINFO@ +OBJDUMP = @OBJDUMP@ +PACKAGE = @PACKAGE@ +RANLIB = @RANLIB@ +U = @U@ +VERSION = @VERSION@ + +EXTRA_DIST = guile-doc-snarf guile-func-name-check guile-snarf.awk + +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = ../config.h +CONFIG_CLEAN_FILES = +DIST_COMMON = Makefile.am Makefile.in + + +DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) + +TAR = tar +GZIP_ENV = --best +all: all-redirect +.SUFFIXES: +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps scripts/Makefile + +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) \ + && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status + +tags: TAGS +TAGS: + + +distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) + +subdir = scripts + +distdir: $(DISTFILES) + @for file in $(DISTFILES); do \ + d=$(srcdir); \ + if test -d $$d/$$file; then \ + cp -pr $$d/$$file $(distdir)/$$file; \ + else \ + test -f $(distdir)/$$file \ + || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ + || cp -p $$d/$$file $(distdir)/$$file || :; \ + fi; \ + done +info-am: +info: info-am +dvi-am: +dvi: dvi-am +check-am: all-am +check: check-am +installcheck-am: +installcheck: installcheck-am +install-exec-am: +install-exec: install-exec-am + +install-data-am: +install-data: install-data-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am +install: install-am +uninstall-am: +uninstall: uninstall-am +all-am: Makefile +all-redirect: all-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install +installdirs: + + +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_FILES) + -rm -f config.cache config.log stamp-h stamp-h[0-9]* + +maintainer-clean-generic: +mostlyclean-am: mostlyclean-generic + +mostlyclean: mostlyclean-am + +clean-am: clean-generic mostlyclean-am + +clean: clean-am + +distclean-am: distclean-generic clean-am + -rm -f libtool + +distclean: distclean-am + +maintainer-clean-am: maintainer-clean-generic distclean-am + @echo "This command is intended for maintainers to use;" + @echo "it deletes files that may require special tools to rebuild." + +maintainer-clean: maintainer-clean-am + +.PHONY: tags distdir info-am info dvi-am dvi check check-am \ +installcheck-am installcheck install-exec-am install-exec \ +install-data-am install-data install-am install uninstall-am uninstall \ +all-redirect all-am all installdirs mostlyclean-generic \ +distclean-generic clean-generic maintainer-clean-generic clean \ +mostlyclean distclean maintainer-clean + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/scripts/guile-doc-snarf b/scripts/guile-doc-snarf new file mode 100755 index 0000000..16f739c --- /dev/null +++ b/scripts/guile-doc-snarf @@ -0,0 +1,57 @@ +#! /bin/sh +# Extract the initialization actions for builtin things. +# +# Copyright (C) 1999, 2000 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 +# +## For some obscure reason, the original guile-doc-snarf distributed +## with guile up to version 1.4, passes guile-func-name-check +## to awk without absolute path spec. Consequently the script bails +## out unless guile-func-name-check is in the current directory. +## This version assumes that both scripts live in the same directory +## and deduces the path to guile-func-name-check from the own pathname. +## --gray + +fullfilename=$1; 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 + +## Let the user override the preprocessor & awk autoconf found. +test -n "${CPP+set}" || CPP="gcc -E" +test -n "${AWK+set}" || AWK="gawk" + +## Must run guile-func-name-check on the unpreprocessed source +${AWK} -f `dirname $0`/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 $? +cat ${temp} | sed 's/^\(.\{128\}.\{128\}.\{128\}.\{128\}.\{128\}.\{128\}.\{128\}.\{128\}\).*/\1/g' | \ +${AWK} -f `dirname $0`/guile-snarf.awk `basename ${dot_doc}` diff --git a/scripts/guile-func-name-check b/scripts/guile-func-name-check new file mode 100755 index 0000000..86b00ae --- /dev/null +++ b/scripts/guile-func-name-check @@ -0,0 +1,64 @@ +#! /usr/bin/awk -f +# +# Copyright (C) 2000 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 +# +# Written by Greg J. Badros, <gjb@cs.washington.edu> +# 11-Jan-2000 + +BEGIN { + filename = ARGV[1]; +} + +/^SCM_DEFINE/ { + func_name = $0; + sub(/^[^\(\n]*\([ \t]*/,"", func_name); + sub(/[ \t]*,.*/,"", func_name); +# print func_name; # GJB:FIXME:: flag to do this to list primitives? + in_a_func = 1; +} + +in_a_func && /^\{/ { + if (!match(last_line,/^#define[ \t]+FUNC_NAME[ \t]+/)) { + printf filename ":" NR ":***" > "/dev/stderr"; + print "Missing or erroneous `#define FUNC_NAME s_" func_name "'" > "/dev/stderr"; + } else { + sub(/^#define[ \t]+FUNC_NAME[ \t]+s_/, "", last_line); + sub(/[ \t]*$/,"",last_line); + if (last_line != func_name) { + printf filename ":" NR ":***" > "/dev/stderr"; + print "Mismatching FUNC_NAME. Should be: `#define FUNC_NAME s_" func_name "'" > "/dev/stderr"; + } + } +} + +1 == next_line_better_be_undef { + if (!match($0,/^#undef FUNC_NAME[ \t]*$/)) { + printf filename ":" NR ":***" > "/dev/stderr"; + print "Missing or erroneous #undef for " func_name ": " + "Got `" $0 "' instead." > "/dev/stderr"; + } + in_a_func = ""; + func_name = ""; + next_line_better_be_undef = 0; +} + +in_a_func && /^\}/ { + next_line_better_be_undef = 1; +} + +{ last_line = $0; } diff --git a/scripts/guile-snarf.awk b/scripts/guile-snarf.awk new file mode 100755 index 0000000..bd016ef --- /dev/null +++ b/scripts/guile-snarf.awk @@ -0,0 +1,98 @@ +# Copyright (C) 1999, 2000 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 +# +# Written by Greg J. Badros, <gjb@cs.washington.edu> +# 12-Dec-1999 + +BEGIN { FS="|"; + dot_doc_file = ARGV[1]; ARGV[1] = "-"; + std_err = "/dev/stderr"; + # be sure to put something in the files to help make out + print ""; + printf "" > dot_doc_file; +} + +/^[ \t]*SCM__I/ { copy = $0; + gsub(/[ \t]*SCM__I/, "", copy); + gsub(/SCM__D.*$/, "", copy); + print copy; } + +/SCM__D/,/SCM__S/ { copy = $0; + if (match(copy,/SCM__DR/)) { registering = 1; } + else {registering = 0; } + gsub(/.*SCM__D./,"", copy); + gsub(/SCM__S.*/,"",copy); + gsub(/[ \t]+/," ", copy); + sub(/^[ \t]*/,"(", copy); + gsub(/\"/,"",copy); + sub(/\([ \t]*void[ \t]*\)/,"()", copy); + sub(/ \(/," ",copy); + numargs = gsub(/SCM /,"", copy); + numcommas = gsub(/,/,"", copy); + numactuals = $2 + $3 + $4; + location = $5; + gsub(/\"/,"",location); + sub(/^[ \t]*/,"",location); + sub(/[ \t]*$/,"",location); + sub(/: /,":",location); + # Now whittle copy down to just the $1 field + # (but do not use $1, since it hasn't been + # altered by the above regexps) + gsub(/[ \t]*\|.*$/,"",copy); + sub(/ \)/,")",copy); + # Now `copy' contains the nice scheme proc "prototype", e.g. + # (set-car! pair value) + # print copy > "/dev/stderr"; # for debugging + proc_and_args = copy; + curr_function_proto = copy; + sub(/[^ \n]* /,"",proc_and_args); + sub(/\)[ \t]*/,"",proc_and_args); + split(proc_and_args,args," "); + # now args is an array of the arguments + # args[1] is the formal name of the first argument, etc. + if (numargs != numactuals && !registering) + { print location ":*** `" copy "' is improperly registered as having " numactuals " arguments" > std_err; } + print "\n" copy (registering?")":"") > dot_doc_file ; } + +/SCM__S/,/SCM__E.*$/ { copy = $0; + gsub(/.*SCM__S/,"",copy); + sub(/^[ \t]*"?/,"", copy); + sub(/\"?[ \t]*SCM__E.*$/,"", copy); + gsub(/\\n\\n"?/,"\n",copy); + gsub(/\\n"?[ \t]*$/,"",copy); + gsub(/\\\"[ \t]*$/,"\"",copy); + gsub(/[ \t]*$/,"", copy); + if (copy != "") { print copy > dot_doc_file } + } + +/SCM__E[ \t]/ { print "[" location "]" >> dot_doc_file; } + +/\*&\*&\*&\*SCM_ARG_BETTER_BE_IN_POSITION/ { copy = $0; + sub(/.*\*&\*&\*&\*SCM_ARG_BETTER_BE_IN_POSITION\([ \t]*/,"",copy); + if (copy ~ /\"/) { next } + gsub(/[ \t]*,[ \t]*/,":",copy); + sub(/[ \t]*\).*/,"",copy); + split(copy,argpos,":"); + argname = argpos[1]; + pos = argpos[2]; + if (pos ~ /[A-Za-z]/) { next } + if (pos ~ /^[ \t]*$/) { next } + if (argname ~ / /) { next } + line = argpos[3]; +# print pos " " args[pos] " vs. " argname > "/dev/stderr"; + if (args[pos] != argname) { print filename ":" line ":*** Argument name/number mismatch in `" curr_function_proto "' -- " argname " is not formal #" pos > "/dev/stderr"; } + } |