summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
Diffstat (limited to 'tools')
-rw-r--r--tools/Makefile.in67
-rwxr-xr-xtools/addVerToFile.tcl9
-rw-r--r--tools/checkLibraryDoc.tcl2
-rwxr-xr-xtools/configure2170
-rw-r--r--tools/configure.in35
-rw-r--r--tools/eolFix.tcl80
-rwxr-xr-xtools/fix_tommath_h.tcl102
-rw-r--r--tools/installVfs.tcl54
-rwxr-xr-xtools/loadICU.tcl3
-rw-r--r--tools/makeHeader.tcl182
-rw-r--r--tools/man2help.tcl141
-rw-r--r--tools/man2help2.tcl1033
-rw-r--r--tools/man2html.tcl185
-rw-r--r--tools/man2html1.tcl258
-rw-r--r--tools/man2html2.tcl927
-rw-r--r--tools/man2tcl.c424
-rw-r--r--tools/mkVfs.tcl99
-rw-r--r--tools/str2c59
-rw-r--r--tools/tcl.hpj.in19
-rw-r--r--tools/tclOOScript.tcl456
-rw-r--r--tools/tcltk-man2html-utils.tcl258
-rw-r--r--[-rwxr-xr-x]tools/tcltk-man2html.tcl144
-rw-r--r--tools/tsdPerf.c10
23 files changed, 1046 insertions, 5671 deletions
diff --git a/tools/Makefile.in b/tools/Makefile.in
deleted file mode 100644
index 5e9f88e..0000000
--- a/tools/Makefile.in
+++ /dev/null
@@ -1,67 +0,0 @@
-# This makefile is used to convert Tcl manual pages into various
-# alternate formats:
-#
-# Windows help file: 1. Build the winhelp target on Unix
-# 2. Build the helpfile target on Windows
-#
-# HTML: 1. Build the html target on Unix
-
-TCL = tcl@TCL_VERSION@
-TK = tk@TCL_VERSION@
-VER = @TCL_WIN_VERSION@
-
-TCL_BIN_DIR = @TCL_BIN_DIR@
-TCL_SOURCE = @TCL_SRC_DIR@
-TK_SOURCE = $(TCL_SOURCE)/../$(TK)
-PRO_SOURCE = $(TCL_SOURCE)/../pro
-ITCL_SOURCE = $(TCL_SOURCE)/../itcl3.1.0
-
-TCL_DOCS = $(TCL_SOURCE)/doc/*.[13n]
-
-TK_DOCS = $(TK_SOURCE)/doc/*.[13n]
-
-PRO_DOCS = \
- $(PRO_SOURCE)/doc/man/procheck.1 \
- $(PRO_SOURCE)/doc/man/prodebug.1 \
- $(PRO_SOURCE)/doc/man/prodebug.n \
- $(PRO_SOURCE)/doc/man/prolicense.1
-
-ITCL_DOCS = \
- $(ITCL_SOURCE)/itcl/doc/*.[13n] \
- $(ITCL_SOURCE)/itk/doc/*.[13n]
-
-# $(ITCL_SOURCE)/iwidgets3.0.0/doc/*.[13n]
-
-COREDOCS = $(TCL_DOCS) $(TK_DOCS)
-#PRODOCS = $(COREDOCS) $(PRO_DOCS) $(ITCL_DOCS)
-PRODOCS = $(COREDOCS) $(PRO_DOCS)
-TCLSH = $(TCL_BIN_DIR)/tclsh
-CC = @CC@
-
-#
-# Targets
-#
-
-all: core
-
-pro:
- $(MAKE) DOCS="$(PRODOCS)" VER="" rtf
-
-core:
- $(MAKE) DOCS="$(COREDOCS)" rtf
-
-rtf: $(TCL_SOURCE)/tools/man2help.tcl man2tcl $(DOCS)
- LD_LIBRARY_PATH=$(TCL_BIN_DIR) \
- TCL_LIBRARY=$(TCL_SOURCE)/library \
- $(TCLSH) $(TCL_SOURCE)/tools/man2help.tcl tcl "$(VER)" $(DOCS)
-
-winhelp: tcl.rtf
-
-man2tcl: $(TCL_SOURCE)/tools/man2tcl.c
- $(CC) $(CFLAGS) -o man2tcl $(TCL_SOURCE)/tools/man2tcl.c
-
-clean:
- -rm -f man2tcl *.o *.cnt *.rtf
-
-helpfile:
- hcw /c /e tcl.hpj
diff --git a/tools/addVerToFile.tcl b/tools/addVerToFile.tcl
new file mode 100755
index 0000000..bfc39e2
--- /dev/null
+++ b/tools/addVerToFile.tcl
@@ -0,0 +1,9 @@
+#!/usr/bin/env tclsh
+if {$argc < 1} {
+ error "need a filename argument"
+}
+lassign $argv filename
+set f [open $filename a]
+puts $f "TCL_VERSION=[info tclversion]"
+puts $f "TCL_PATCHLEVEL=[info patchlevel]"
+close $f
diff --git a/tools/checkLibraryDoc.tcl b/tools/checkLibraryDoc.tcl
index a3aa309..4e4d6e7 100644
--- a/tools/checkLibraryDoc.tcl
+++ b/tools/checkLibraryDoc.tcl
@@ -3,7 +3,7 @@
# This script attempts to determine what APIs exist in the source base that
# have not been documented. By grepping through all of the doc/*.3 man
# pages, looking for "Pkg_*" (e.g., Tcl_ or Tk_), and comparing this list
-# against the list of Pkg_ APIs found in the source (e.g., tcl8.6/*/*.[ch])
+# against the list of Pkg_ APIs found in the source (e.g., tcl8.7/*/*.[ch])
# we create six lists:
# 1) APIs in Source not in Docs.
# 2) APIs in Docs not in Source.
diff --git a/tools/configure b/tools/configure
deleted file mode 100755
index 3d30039..0000000
--- a/tools/configure
+++ /dev/null
@@ -1,2170 +0,0 @@
-#! /bin/sh
-# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.59.
-#
-# Copyright (C) 2003 Free Software Foundation, Inc.
-# This configure script is free software; the Free Software Foundation
-# gives unlimited permission to copy, distribute and modify it.
-## --------------------- ##
-## M4sh Initialization. ##
-## --------------------- ##
-
-# Be Bourne compatible
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
- emulate sh
- NULLCMD=:
- # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
- # is contrary to our usage. Disable this feature.
- alias -g '${1+"$@"}'='"$@"'
-elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
- set -o posix
-fi
-DUALCASE=1; export DUALCASE # for MKS sh
-
-# Support unset when possible.
-if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
- as_unset=unset
-else
- as_unset=false
-fi
-
-
-# Work around bugs in pre-3.0 UWIN ksh.
-$as_unset ENV MAIL MAILPATH
-PS1='$ '
-PS2='> '
-PS4='+ '
-
-# NLS nuisances.
-for as_var in \
- LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
- LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
- LC_TELEPHONE LC_TIME
-do
- if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
- eval $as_var=C; export $as_var
- else
- $as_unset $as_var
- fi
-done
-
-# Required to use basename.
-if expr a : '\(a\)' >/dev/null 2>&1; then
- as_expr=expr
-else
- as_expr=false
-fi
-
-if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then
- as_basename=basename
-else
- as_basename=false
-fi
-
-
-# Name of the executable.
-as_me=`$as_basename "$0" ||
-$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
- X"$0" : 'X\(//\)$' \| \
- X"$0" : 'X\(/\)$' \| \
- . : '\(.\)' 2>/dev/null ||
-echo X/"$0" |
- sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }
- /^X\/\(\/\/\)$/{ s//\1/; q; }
- /^X\/\(\/\).*/{ s//\1/; q; }
- s/.*/./; q'`
-
-
-# PATH needs CR, and LINENO needs CR and PATH.
-# Avoid depending upon Character Ranges.
-as_cr_letters='abcdefghijklmnopqrstuvwxyz'
-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-as_cr_Letters=$as_cr_letters$as_cr_LETTERS
-as_cr_digits='0123456789'
-as_cr_alnum=$as_cr_Letters$as_cr_digits
-
-# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
- echo "#! /bin/sh" >conf$$.sh
- echo "exit 0" >>conf$$.sh
- chmod +x conf$$.sh
- if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
- PATH_SEPARATOR=';'
- else
- PATH_SEPARATOR=:
- fi
- rm -f conf$$.sh
-fi
-
-
- as_lineno_1=$LINENO
- as_lineno_2=$LINENO
- as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
- test "x$as_lineno_1" != "x$as_lineno_2" &&
- test "x$as_lineno_3" = "x$as_lineno_2" || {
- # Find who we are. Look in the path if we contain no path at all
- # relative or not.
- case $0 in
- *[\\/]* ) as_myself=$0 ;;
- *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
-done
-
- ;;
- esac
- # We did not find ourselves, most probably we were run as `sh COMMAND'
- # in which case we are not to be found in the path.
- if test "x$as_myself" = x; then
- as_myself=$0
- fi
- if test ! -f "$as_myself"; then
- { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2
- { (exit 1); exit 1; }; }
- fi
- case $CONFIG_SHELL in
- '')
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for as_base in sh bash ksh sh5; do
- case $as_dir in
- /*)
- if ("$as_dir/$as_base" -c '
- as_lineno_1=$LINENO
- as_lineno_2=$LINENO
- as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
- test "x$as_lineno_1" != "x$as_lineno_2" &&
- test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then
- $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; }
- $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; }
- CONFIG_SHELL=$as_dir/$as_base
- export CONFIG_SHELL
- exec "$CONFIG_SHELL" "$0" ${1+"$@"}
- fi;;
- esac
- done
-done
-;;
- esac
-
- # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
- # uniformly replaced by the line number. The first 'sed' inserts a
- # line-number line before each line; the second 'sed' does the real
- # work. The second script uses 'N' to pair each line-number line
- # with the numbered line, and appends trailing '-' during
- # substitution so that $LINENO is not a special case at line end.
- # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
- # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-)
- sed '=' <$as_myself |
- sed '
- N
- s,$,-,
- : loop
- s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
- t loop
- s,-$,,
- s,^['$as_cr_digits']*\n,,
- ' >$as_me.lineno &&
- chmod +x $as_me.lineno ||
- { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
- { (exit 1); exit 1; }; }
-
- # Don't try to exec as it changes $[0], causing all sort of problems
- # (the dirname of $[0] is not the place where we might find the
- # original and so on. Autoconf is especially sensible to this).
- . ./$as_me.lineno
- # Exit status is that of the last command.
- exit
-}
-
-
-case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
- *c*,-n*) ECHO_N= ECHO_C='
-' ECHO_T=' ' ;;
- *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;;
- *) ECHO_N= ECHO_C='\c' ECHO_T= ;;
-esac
-
-if expr a : '\(a\)' >/dev/null 2>&1; then
- as_expr=expr
-else
- as_expr=false
-fi
-
-rm -f conf$$ conf$$.exe conf$$.file
-echo >conf$$.file
-if ln -s conf$$.file conf$$ 2>/dev/null; then
- # We could just check for DJGPP; but this test a) works b) is more generic
- # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
- if test -f conf$$.exe; then
- # Don't use ln at all; we don't have any links
- as_ln_s='cp -p'
- else
- as_ln_s='ln -s'
- fi
-elif ln conf$$.file conf$$ 2>/dev/null; then
- as_ln_s=ln
-else
- as_ln_s='cp -p'
-fi
-rm -f conf$$ conf$$.exe conf$$.file
-
-if mkdir -p . 2>/dev/null; then
- as_mkdir_p=:
-else
- test -d ./-p && rmdir ./-p
- as_mkdir_p=false
-fi
-
-as_executable_p="test -f"
-
-# Sed expression to map a string onto a valid CPP name.
-as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
-
-# Sed expression to map a string onto a valid variable name.
-as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
-
-
-# IFS
-# We need space, tab and new line, in precisely that order.
-as_nl='
-'
-IFS=" $as_nl"
-
-# CDPATH.
-$as_unset CDPATH
-
-
-# Name of the host.
-# hostname on some systems (SVR3.2, Linux) returns a bogus exit status,
-# so uname gets run too.
-ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
-
-exec 6>&1
-
-#
-# Initializations.
-#
-ac_default_prefix=/usr/local
-ac_config_libobj_dir=.
-cross_compiling=no
-subdirs=
-MFLAGS=
-MAKEFLAGS=
-SHELL=${CONFIG_SHELL-/bin/sh}
-
-# Maximum number of lines to put in a shell here document.
-# This variable seems obsolete. It should probably be removed, and
-# only ac_max_sed_lines should be used.
-: ${ac_max_here_lines=38}
-
-# Identity of this package.
-PACKAGE_NAME=
-PACKAGE_TARNAME=
-PACKAGE_VERSION=
-PACKAGE_STRING=
-PACKAGE_BUGREPORT=
-
-ac_unique_file="man2tcl.c"
-ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS TCL_WIN_VERSION CC TCL_VERSION TCL_PATCH_LEVEL TCL_SRC_DIR TCL_BIN_DIR LIBOBJS LTLIBOBJS'
-ac_subst_files=''
-
-# Initialize some variables set by options.
-ac_init_help=
-ac_init_version=false
-# The variables have the same names as the options, with
-# dashes changed to underlines.
-cache_file=/dev/null
-exec_prefix=NONE
-no_create=
-no_recursion=
-prefix=NONE
-program_prefix=NONE
-program_suffix=NONE
-program_transform_name=s,x,x,
-silent=
-site=
-srcdir=
-verbose=
-x_includes=NONE
-x_libraries=NONE
-
-# Installation directory options.
-# These are left unexpanded so users can "make install exec_prefix=/foo"
-# and all the variables that are supposed to be based on exec_prefix
-# by default will actually change.
-# Use braces instead of parens because sh, perl, etc. also accept them.
-bindir='${exec_prefix}/bin'
-sbindir='${exec_prefix}/sbin'
-libexecdir='${exec_prefix}/libexec'
-datadir='${prefix}/share'
-sysconfdir='${prefix}/etc'
-sharedstatedir='${prefix}/com'
-localstatedir='${prefix}/var'
-libdir='${exec_prefix}/lib'
-includedir='${prefix}/include'
-oldincludedir='/usr/include'
-infodir='${prefix}/info'
-mandir='${prefix}/man'
-
-ac_prev=
-for ac_option
-do
- # If the previous option needs an argument, assign it.
- if test -n "$ac_prev"; then
- eval "$ac_prev=\$ac_option"
- ac_prev=
- continue
- fi
-
- ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'`
-
- # Accept the important Cygnus configure options, so we can diagnose typos.
-
- case $ac_option in
-
- -bindir | --bindir | --bindi | --bind | --bin | --bi)
- ac_prev=bindir ;;
- -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
- bindir=$ac_optarg ;;
-
- -build | --build | --buil | --bui | --bu)
- ac_prev=build_alias ;;
- -build=* | --build=* | --buil=* | --bui=* | --bu=*)
- build_alias=$ac_optarg ;;
-
- -cache-file | --cache-file | --cache-fil | --cache-fi \
- | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
- ac_prev=cache_file ;;
- -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
- | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
- cache_file=$ac_optarg ;;
-
- --config-cache | -C)
- cache_file=config.cache ;;
-
- -datadir | --datadir | --datadi | --datad | --data | --dat | --da)
- ac_prev=datadir ;;
- -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \
- | --da=*)
- datadir=$ac_optarg ;;
-
- -disable-* | --disable-*)
- ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
- # Reject names that are not valid shell variable names.
- expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
- { echo "$as_me: error: invalid feature name: $ac_feature" >&2
- { (exit 1); exit 1; }; }
- ac_feature=`echo $ac_feature | sed 's/-/_/g'`
- eval "enable_$ac_feature=no" ;;
-
- -enable-* | --enable-*)
- ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
- # Reject names that are not valid shell variable names.
- expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
- { echo "$as_me: error: invalid feature name: $ac_feature" >&2
- { (exit 1); exit 1; }; }
- ac_feature=`echo $ac_feature | sed 's/-/_/g'`
- case $ac_option in
- *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
- *) ac_optarg=yes ;;
- esac
- eval "enable_$ac_feature='$ac_optarg'" ;;
-
- -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
- | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
- | --exec | --exe | --ex)
- ac_prev=exec_prefix ;;
- -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
- | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
- | --exec=* | --exe=* | --ex=*)
- exec_prefix=$ac_optarg ;;
-
- -gas | --gas | --ga | --g)
- # Obsolete; use --with-gas.
- with_gas=yes ;;
-
- -help | --help | --hel | --he | -h)
- ac_init_help=long ;;
- -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
- ac_init_help=recursive ;;
- -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
- ac_init_help=short ;;
-
- -host | --host | --hos | --ho)
- ac_prev=host_alias ;;
- -host=* | --host=* | --hos=* | --ho=*)
- host_alias=$ac_optarg ;;
-
- -includedir | --includedir | --includedi | --included | --include \
- | --includ | --inclu | --incl | --inc)
- ac_prev=includedir ;;
- -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
- | --includ=* | --inclu=* | --incl=* | --inc=*)
- includedir=$ac_optarg ;;
-
- -infodir | --infodir | --infodi | --infod | --info | --inf)
- ac_prev=infodir ;;
- -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
- infodir=$ac_optarg ;;
-
- -libdir | --libdir | --libdi | --libd)
- ac_prev=libdir ;;
- -libdir=* | --libdir=* | --libdi=* | --libd=*)
- libdir=$ac_optarg ;;
-
- -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
- | --libexe | --libex | --libe)
- ac_prev=libexecdir ;;
- -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
- | --libexe=* | --libex=* | --libe=*)
- libexecdir=$ac_optarg ;;
-
- -localstatedir | --localstatedir | --localstatedi | --localstated \
- | --localstate | --localstat | --localsta | --localst \
- | --locals | --local | --loca | --loc | --lo)
- ac_prev=localstatedir ;;
- -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
- | --localstate=* | --localstat=* | --localsta=* | --localst=* \
- | --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
- localstatedir=$ac_optarg ;;
-
- -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
- ac_prev=mandir ;;
- -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
- mandir=$ac_optarg ;;
-
- -nfp | --nfp | --nf)
- # Obsolete; use --without-fp.
- with_fp=no ;;
-
- -no-create | --no-create | --no-creat | --no-crea | --no-cre \
- | --no-cr | --no-c | -n)
- no_create=yes ;;
-
- -no-recursion | --no-recursion | --no-recursio | --no-recursi \
- | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
- no_recursion=yes ;;
-
- -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
- | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
- | --oldin | --oldi | --old | --ol | --o)
- ac_prev=oldincludedir ;;
- -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
- | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
- | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
- oldincludedir=$ac_optarg ;;
-
- -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
- ac_prev=prefix ;;
- -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
- prefix=$ac_optarg ;;
-
- -program-prefix | --program-prefix | --program-prefi | --program-pref \
- | --program-pre | --program-pr | --program-p)
- ac_prev=program_prefix ;;
- -program-prefix=* | --program-prefix=* | --program-prefi=* \
- | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
- program_prefix=$ac_optarg ;;
-
- -program-suffix | --program-suffix | --program-suffi | --program-suff \
- | --program-suf | --program-su | --program-s)
- ac_prev=program_suffix ;;
- -program-suffix=* | --program-suffix=* | --program-suffi=* \
- | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
- program_suffix=$ac_optarg ;;
-
- -program-transform-name | --program-transform-name \
- | --program-transform-nam | --program-transform-na \
- | --program-transform-n | --program-transform- \
- | --program-transform | --program-transfor \
- | --program-transfo | --program-transf \
- | --program-trans | --program-tran \
- | --progr-tra | --program-tr | --program-t)
- ac_prev=program_transform_name ;;
- -program-transform-name=* | --program-transform-name=* \
- | --program-transform-nam=* | --program-transform-na=* \
- | --program-transform-n=* | --program-transform-=* \
- | --program-transform=* | --program-transfor=* \
- | --program-transfo=* | --program-transf=* \
- | --program-trans=* | --program-tran=* \
- | --progr-tra=* | --program-tr=* | --program-t=*)
- program_transform_name=$ac_optarg ;;
-
- -q | -quiet | --quiet | --quie | --qui | --qu | --q \
- | -silent | --silent | --silen | --sile | --sil)
- silent=yes ;;
-
- -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
- ac_prev=sbindir ;;
- -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
- | --sbi=* | --sb=*)
- sbindir=$ac_optarg ;;
-
- -sharedstatedir | --sharedstatedir | --sharedstatedi \
- | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
- | --sharedst | --shareds | --shared | --share | --shar \
- | --sha | --sh)
- ac_prev=sharedstatedir ;;
- -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
- | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
- | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
- | --sha=* | --sh=*)
- sharedstatedir=$ac_optarg ;;
-
- -site | --site | --sit)
- ac_prev=site ;;
- -site=* | --site=* | --sit=*)
- site=$ac_optarg ;;
-
- -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
- ac_prev=srcdir ;;
- -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
- srcdir=$ac_optarg ;;
-
- -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
- | --syscon | --sysco | --sysc | --sys | --sy)
- ac_prev=sysconfdir ;;
- -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
- | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
- sysconfdir=$ac_optarg ;;
-
- -target | --target | --targe | --targ | --tar | --ta | --t)
- ac_prev=target_alias ;;
- -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
- target_alias=$ac_optarg ;;
-
- -v | -verbose | --verbose | --verbos | --verbo | --verb)
- verbose=yes ;;
-
- -version | --version | --versio | --versi | --vers | -V)
- ac_init_version=: ;;
-
- -with-* | --with-*)
- ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
- # Reject names that are not valid shell variable names.
- expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
- { echo "$as_me: error: invalid package name: $ac_package" >&2
- { (exit 1); exit 1; }; }
- ac_package=`echo $ac_package| sed 's/-/_/g'`
- case $ac_option in
- *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
- *) ac_optarg=yes ;;
- esac
- eval "with_$ac_package='$ac_optarg'" ;;
-
- -without-* | --without-*)
- ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'`
- # Reject names that are not valid shell variable names.
- expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
- { echo "$as_me: error: invalid package name: $ac_package" >&2
- { (exit 1); exit 1; }; }
- ac_package=`echo $ac_package | sed 's/-/_/g'`
- eval "with_$ac_package=no" ;;
-
- --x)
- # Obsolete; use --with-x.
- with_x=yes ;;
-
- -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
- | --x-incl | --x-inc | --x-in | --x-i)
- ac_prev=x_includes ;;
- -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
- | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
- x_includes=$ac_optarg ;;
-
- -x-libraries | --x-libraries | --x-librarie | --x-librari \
- | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
- ac_prev=x_libraries ;;
- -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
- | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
- x_libraries=$ac_optarg ;;
-
- -*) { echo "$as_me: error: unrecognized option: $ac_option
-Try \`$0 --help' for more information." >&2
- { (exit 1); exit 1; }; }
- ;;
-
- *=*)
- ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
- # Reject names that are not valid shell variable names.
- expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null &&
- { echo "$as_me: error: invalid variable name: $ac_envvar" >&2
- { (exit 1); exit 1; }; }
- ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`
- eval "$ac_envvar='$ac_optarg'"
- export $ac_envvar ;;
-
- *)
- # FIXME: should be removed in autoconf 3.0.
- echo "$as_me: WARNING: you should use --build, --host, --target" >&2
- expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
- echo "$as_me: WARNING: invalid host type: $ac_option" >&2
- : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}
- ;;
-
- esac
-done
-
-if test -n "$ac_prev"; then
- ac_option=--`echo $ac_prev | sed 's/_/-/g'`
- { echo "$as_me: error: missing argument to $ac_option" >&2
- { (exit 1); exit 1; }; }
-fi
-
-# Be sure to have absolute paths.
-for ac_var in exec_prefix prefix
-do
- eval ac_val=$`echo $ac_var`
- case $ac_val in
- [\\/$]* | ?:[\\/]* | NONE | '' ) ;;
- *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
- { (exit 1); exit 1; }; };;
- esac
-done
-
-# Be sure to have absolute paths.
-for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \
- localstatedir libdir includedir oldincludedir infodir mandir
-do
- eval ac_val=$`echo $ac_var`
- case $ac_val in
- [\\/$]* | ?:[\\/]* ) ;;
- *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
- { (exit 1); exit 1; }; };;
- esac
-done
-
-# There might be people who depend on the old broken behavior: `$host'
-# used to hold the argument of --host etc.
-# FIXME: To remove some day.
-build=$build_alias
-host=$host_alias
-target=$target_alias
-
-# FIXME: To remove some day.
-if test "x$host_alias" != x; then
- if test "x$build_alias" = x; then
- cross_compiling=maybe
- echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host.
- If a cross compiler is detected then cross compile mode will be used." >&2
- elif test "x$build_alias" != "x$host_alias"; then
- cross_compiling=yes
- fi
-fi
-
-ac_tool_prefix=
-test -n "$host_alias" && ac_tool_prefix=$host_alias-
-
-test "$silent" = yes && exec 6>/dev/null
-
-
-# Find the source files, if location was not specified.
-if test -z "$srcdir"; then
- ac_srcdir_defaulted=yes
- # Try the directory containing this script, then its parent.
- ac_confdir=`(dirname "$0") 2>/dev/null ||
-$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$0" : 'X\(//\)[^/]' \| \
- X"$0" : 'X\(//\)$' \| \
- X"$0" : 'X\(/\)' \| \
- . : '\(.\)' 2>/dev/null ||
-echo X"$0" |
- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
- /^X\(\/\/\)[^/].*/{ s//\1/; q; }
- /^X\(\/\/\)$/{ s//\1/; q; }
- /^X\(\/\).*/{ s//\1/; q; }
- s/.*/./; q'`
- srcdir=$ac_confdir
- if test ! -r $srcdir/$ac_unique_file; then
- srcdir=..
- fi
-else
- ac_srcdir_defaulted=no
-fi
-if test ! -r $srcdir/$ac_unique_file; then
- if test "$ac_srcdir_defaulted" = yes; then
- { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2
- { (exit 1); exit 1; }; }
- else
- { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2
- { (exit 1); exit 1; }; }
- fi
-fi
-(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null ||
- { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2
- { (exit 1); exit 1; }; }
-srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'`
-ac_env_build_alias_set=${build_alias+set}
-ac_env_build_alias_value=$build_alias
-ac_cv_env_build_alias_set=${build_alias+set}
-ac_cv_env_build_alias_value=$build_alias
-ac_env_host_alias_set=${host_alias+set}
-ac_env_host_alias_value=$host_alias
-ac_cv_env_host_alias_set=${host_alias+set}
-ac_cv_env_host_alias_value=$host_alias
-ac_env_target_alias_set=${target_alias+set}
-ac_env_target_alias_value=$target_alias
-ac_cv_env_target_alias_set=${target_alias+set}
-ac_cv_env_target_alias_value=$target_alias
-
-#
-# Report the --help message.
-#
-if test "$ac_init_help" = "long"; then
- # Omit some internal or obsolete options to make the list less imposing.
- # This message is too long to be a string in the A/UX 3.1 sh.
- cat <<_ACEOF
-\`configure' configures this package to adapt to many kinds of systems.
-
-Usage: $0 [OPTION]... [VAR=VALUE]...
-
-To assign environment variables (e.g., CC, CFLAGS...), specify them as
-VAR=VALUE. See below for descriptions of some of the useful variables.
-
-Defaults for the options are specified in brackets.
-
-Configuration:
- -h, --help display this help and exit
- --help=short display options specific to this package
- --help=recursive display the short help of all the included packages
- -V, --version display version information and exit
- -q, --quiet, --silent do not print \`checking...' messages
- --cache-file=FILE cache test results in FILE [disabled]
- -C, --config-cache alias for \`--cache-file=config.cache'
- -n, --no-create do not create output files
- --srcdir=DIR find the sources in DIR [configure dir or \`..']
-
-_ACEOF
-
- cat <<_ACEOF
-Installation directories:
- --prefix=PREFIX install architecture-independent files in PREFIX
- [$ac_default_prefix]
- --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
- [PREFIX]
-
-By default, \`make install' will install all the files in
-\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify
-an installation prefix other than \`$ac_default_prefix' using \`--prefix',
-for instance \`--prefix=\$HOME'.
-
-For better control, use the options below.
-
-Fine tuning of the installation directories:
- --bindir=DIR user executables [EPREFIX/bin]
- --sbindir=DIR system admin executables [EPREFIX/sbin]
- --libexecdir=DIR program executables [EPREFIX/libexec]
- --datadir=DIR read-only architecture-independent data [PREFIX/share]
- --sysconfdir=DIR read-only single-machine data [PREFIX/etc]
- --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
- --localstatedir=DIR modifiable single-machine data [PREFIX/var]
- --libdir=DIR object code libraries [EPREFIX/lib]
- --includedir=DIR C header files [PREFIX/include]
- --oldincludedir=DIR C header files for non-gcc [/usr/include]
- --infodir=DIR info documentation [PREFIX/info]
- --mandir=DIR man documentation [PREFIX/man]
-_ACEOF
-
- cat <<\_ACEOF
-_ACEOF
-fi
-
-if test -n "$ac_init_help"; then
-
- cat <<\_ACEOF
-
-Optional Packages:
- --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
- --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
- --with-tcl=DIR use Tcl $DEF_VER binaries from DIR
-
-_ACEOF
-fi
-
-if test "$ac_init_help" = "recursive"; then
- # If there are subdirs, report their specific --help.
- ac_popdir=`pwd`
- for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
- test -d $ac_dir || continue
- ac_builddir=.
-
-if test "$ac_dir" != .; then
- ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
- # A "../" for each directory in $ac_dir_suffix.
- ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
-else
- ac_dir_suffix= ac_top_builddir=
-fi
-
-case $srcdir in
- .) # No --srcdir option. We are building in place.
- ac_srcdir=.
- if test -z "$ac_top_builddir"; then
- ac_top_srcdir=.
- else
- ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
- fi ;;
- [\\/]* | ?:[\\/]* ) # Absolute path.
- ac_srcdir=$srcdir$ac_dir_suffix;
- ac_top_srcdir=$srcdir ;;
- *) # Relative path.
- ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
- ac_top_srcdir=$ac_top_builddir$srcdir ;;
-esac
-
-# Do not use `cd foo && pwd` to compute absolute paths, because
-# the directories may not exist.
-case `pwd` in
-.) ac_abs_builddir="$ac_dir";;
-*)
- case "$ac_dir" in
- .) ac_abs_builddir=`pwd`;;
- [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
- *) ac_abs_builddir=`pwd`/"$ac_dir";;
- esac;;
-esac
-case $ac_abs_builddir in
-.) ac_abs_top_builddir=${ac_top_builddir}.;;
-*)
- case ${ac_top_builddir}. in
- .) ac_abs_top_builddir=$ac_abs_builddir;;
- [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
- *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
- esac;;
-esac
-case $ac_abs_builddir in
-.) ac_abs_srcdir=$ac_srcdir;;
-*)
- case $ac_srcdir in
- .) ac_abs_srcdir=$ac_abs_builddir;;
- [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
- *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
- esac;;
-esac
-case $ac_abs_builddir in
-.) ac_abs_top_srcdir=$ac_top_srcdir;;
-*)
- case $ac_top_srcdir in
- .) ac_abs_top_srcdir=$ac_abs_builddir;;
- [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
- *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
- esac;;
-esac
-
- cd $ac_dir
- # Check for guested configure; otherwise get Cygnus style configure.
- if test -f $ac_srcdir/configure.gnu; then
- echo
- $SHELL $ac_srcdir/configure.gnu --help=recursive
- elif test -f $ac_srcdir/configure; then
- echo
- $SHELL $ac_srcdir/configure --help=recursive
- elif test -f $ac_srcdir/configure.ac ||
- test -f $ac_srcdir/configure.in; then
- echo
- $ac_configure --help
- else
- echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
- fi
- cd $ac_popdir
- done
-fi
-
-test -n "$ac_init_help" && exit 0
-if $ac_init_version; then
- cat <<\_ACEOF
-
-Copyright (C) 2003 Free Software Foundation, Inc.
-This configure script is free software; the Free Software Foundation
-gives unlimited permission to copy, distribute and modify it.
-_ACEOF
- exit 0
-fi
-exec 5>config.log
-cat >&5 <<_ACEOF
-This file contains any messages produced by compilers while
-running configure, to aid debugging if configure makes a mistake.
-
-It was created by $as_me, which was
-generated by GNU Autoconf 2.59. Invocation command line was
-
- $ $0 $@
-
-_ACEOF
-{
-cat <<_ASUNAME
-## --------- ##
-## Platform. ##
-## --------- ##
-
-hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
-uname -m = `(uname -m) 2>/dev/null || echo unknown`
-uname -r = `(uname -r) 2>/dev/null || echo unknown`
-uname -s = `(uname -s) 2>/dev/null || echo unknown`
-uname -v = `(uname -v) 2>/dev/null || echo unknown`
-
-/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
-/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown`
-
-/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown`
-/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown`
-/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
-hostinfo = `(hostinfo) 2>/dev/null || echo unknown`
-/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown`
-/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown`
-/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown`
-
-_ASUNAME
-
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- echo "PATH: $as_dir"
-done
-
-} >&5
-
-cat >&5 <<_ACEOF
-
-
-## ----------- ##
-## Core tests. ##
-## ----------- ##
-
-_ACEOF
-
-
-# Keep a trace of the command line.
-# Strip out --no-create and --no-recursion so they do not pile up.
-# Strip out --silent because we don't want to record it for future runs.
-# Also quote any args containing shell meta-characters.
-# Make two passes to allow for proper duplicate-argument suppression.
-ac_configure_args=
-ac_configure_args0=
-ac_configure_args1=
-ac_sep=
-ac_must_keep_next=false
-for ac_pass in 1 2
-do
- for ac_arg
- do
- case $ac_arg in
- -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
- -q | -quiet | --quiet | --quie | --qui | --qu | --q \
- | -silent | --silent | --silen | --sile | --sil)
- continue ;;
- *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)
- ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
- esac
- case $ac_pass in
- 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;;
- 2)
- ac_configure_args1="$ac_configure_args1 '$ac_arg'"
- if test $ac_must_keep_next = true; then
- ac_must_keep_next=false # Got value, back to normal.
- else
- case $ac_arg in
- *=* | --config-cache | -C | -disable-* | --disable-* \
- | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
- | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
- | -with-* | --with-* | -without-* | --without-* | --x)
- case "$ac_configure_args0 " in
- "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
- esac
- ;;
- -* ) ac_must_keep_next=true ;;
- esac
- fi
- ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'"
- # Get rid of the leading space.
- ac_sep=" "
- ;;
- esac
- done
-done
-$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; }
-$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; }
-
-# When interrupted or exit'd, cleanup temporary files, and complete
-# config.log. We remove comments because anyway the quotes in there
-# would cause problems or look ugly.
-# WARNING: Be sure not to use single quotes in there, as some shells,
-# such as our DU 5.0 friend, will then `close' the trap.
-trap 'exit_status=$?
- # Save into config.log some information that might help in debugging.
- {
- echo
-
- cat <<\_ASBOX
-## ---------------- ##
-## Cache variables. ##
-## ---------------- ##
-_ASBOX
- echo
- # The following way of writing the cache mishandles newlines in values,
-{
- (set) 2>&1 |
- case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in
- *ac_space=\ *)
- sed -n \
- "s/'"'"'/'"'"'\\\\'"'"''"'"'/g;
- s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p"
- ;;
- *)
- sed -n \
- "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
- ;;
- esac;
-}
- echo
-
- cat <<\_ASBOX
-## ----------------- ##
-## Output variables. ##
-## ----------------- ##
-_ASBOX
- echo
- for ac_var in $ac_subst_vars
- do
- eval ac_val=$`echo $ac_var`
- echo "$ac_var='"'"'$ac_val'"'"'"
- done | sort
- echo
-
- if test -n "$ac_subst_files"; then
- cat <<\_ASBOX
-## ------------- ##
-## Output files. ##
-## ------------- ##
-_ASBOX
- echo
- for ac_var in $ac_subst_files
- do
- eval ac_val=$`echo $ac_var`
- echo "$ac_var='"'"'$ac_val'"'"'"
- done | sort
- echo
- fi
-
- if test -s confdefs.h; then
- cat <<\_ASBOX
-## ----------- ##
-## confdefs.h. ##
-## ----------- ##
-_ASBOX
- echo
- sed "/^$/d" confdefs.h | sort
- echo
- fi
- test "$ac_signal" != 0 &&
- echo "$as_me: caught signal $ac_signal"
- echo "$as_me: exit $exit_status"
- } >&5
- rm -f core *.core &&
- rm -rf conftest* confdefs* conf$$* $ac_clean_files &&
- exit $exit_status
- ' 0
-for ac_signal in 1 2 13 15; do
- trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal
-done
-ac_signal=0
-
-# confdefs.h avoids OS command line length limits that DEFS can exceed.
-rm -rf conftest* confdefs.h
-# AIX cpp loses on an empty file, so make sure it contains at least a newline.
-echo >confdefs.h
-
-# Predefined preprocessor variables.
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_NAME "$PACKAGE_NAME"
-_ACEOF
-
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
-_ACEOF
-
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_VERSION "$PACKAGE_VERSION"
-_ACEOF
-
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_STRING "$PACKAGE_STRING"
-_ACEOF
-
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
-_ACEOF
-
-
-# Let the site file select an alternate cache file if it wants to.
-# Prefer explicitly selected file to automatically selected ones.
-if test -z "$CONFIG_SITE"; then
- if test "x$prefix" != xNONE; then
- CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site"
- else
- CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
- fi
-fi
-for ac_site_file in $CONFIG_SITE; do
- if test -r "$ac_site_file"; then
- { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5
-echo "$as_me: loading site script $ac_site_file" >&6;}
- sed 's/^/| /' "$ac_site_file" >&5
- . "$ac_site_file"
- fi
-done
-
-if test -r "$cache_file"; then
- # Some versions of bash will fail to source /dev/null (special
- # files actually), so we avoid doing that.
- if test -f "$cache_file"; then
- { echo "$as_me:$LINENO: loading cache $cache_file" >&5
-echo "$as_me: loading cache $cache_file" >&6;}
- case $cache_file in
- [\\/]* | ?:[\\/]* ) . $cache_file;;
- *) . ./$cache_file;;
- esac
- fi
-else
- { echo "$as_me:$LINENO: creating cache $cache_file" >&5
-echo "$as_me: creating cache $cache_file" >&6;}
- >$cache_file
-fi
-
-# Check that the precious variables saved in the cache have kept the same
-# value.
-ac_cache_corrupted=false
-for ac_var in `(set) 2>&1 |
- sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do
- eval ac_old_set=\$ac_cv_env_${ac_var}_set
- eval ac_new_set=\$ac_env_${ac_var}_set
- eval ac_old_val="\$ac_cv_env_${ac_var}_value"
- eval ac_new_val="\$ac_env_${ac_var}_value"
- case $ac_old_set,$ac_new_set in
- set,)
- { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
-echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
- ac_cache_corrupted=: ;;
- ,set)
- { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5
-echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
- ac_cache_corrupted=: ;;
- ,);;
- *)
- if test "x$ac_old_val" != "x$ac_new_val"; then
- { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5
-echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
- { echo "$as_me:$LINENO: former value: $ac_old_val" >&5
-echo "$as_me: former value: $ac_old_val" >&2;}
- { echo "$as_me:$LINENO: current value: $ac_new_val" >&5
-echo "$as_me: current value: $ac_new_val" >&2;}
- ac_cache_corrupted=:
- fi;;
- esac
- # Pass precious variables to config.status.
- if test "$ac_new_set" = set; then
- case $ac_new_val in
- *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)
- ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
- *) ac_arg=$ac_var=$ac_new_val ;;
- esac
- case " $ac_configure_args " in
- *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy.
- *) ac_configure_args="$ac_configure_args '$ac_arg'" ;;
- esac
- fi
-done
-if $ac_cache_corrupted; then
- { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5
-echo "$as_me: error: changes in the environment can compromise the build" >&2;}
- { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5
-echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;}
- { (exit 1); exit 1; }; }
-fi
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-# Recover information that Tcl computed with its configure script.
-
-#--------------------------------------------------------------------
-# See if there was a command-line option for where Tcl is; if
-# not, assume that its top-level directory is a sibling of ours.
-#--------------------------------------------------------------------
-
-DEF_VER=8.6
-
-
-# Check whether --with-tcl or --without-tcl was given.
-if test "${with_tcl+set}" = set; then
- withval="$with_tcl"
- TCL_BIN_DIR=$withval
-else
- TCL_BIN_DIR=`cd ../../tcl$DEF_VER$TCL_PATCH_LEVEL/unix; pwd`
-fi;
-if test ! -d $TCL_BIN_DIR; then
- { { echo "$as_me:$LINENO: error: Tcl directory $TCL_BIN_DIR doesn't exist" >&5
-echo "$as_me: error: Tcl directory $TCL_BIN_DIR doesn't exist" >&2;}
- { (exit 1); exit 1; }; }
-fi
-if test ! -f $TCL_BIN_DIR/tclConfig.sh; then
- { { echo "$as_me:$LINENO: error: There's no tclConfig.sh in $TCL_BIN_DIR; perhaps you didn't specify the Tcl *build* directory (not the toplevel Tcl directory) or you forgot to configure Tcl?" >&5
-echo "$as_me: error: There's no tclConfig.sh in $TCL_BIN_DIR; perhaps you didn't specify the Tcl *build* directory (not the toplevel Tcl directory) or you forgot to configure Tcl?" >&2;}
- { (exit 1); exit 1; }; }
-fi
-
-. $TCL_BIN_DIR/tclConfig.sh
-
-TCL_WIN_VERSION=$TCL_MAJOR_VERSION$TCL_MINOR_VERSION
-
-CC=$TCL_CC
-
-
-
-
-
-
- ac_config_files="$ac_config_files Makefile tcl.hpj"
-cat >confcache <<\_ACEOF
-# This file is a shell script that caches the results of configure
-# tests run on this system so they can be shared between configure
-# scripts and configure runs, see configure's option --config-cache.
-# It is not useful on other systems. If it contains results you don't
-# want to keep, you may remove or edit it.
-#
-# config.status only pays attention to the cache file if you give it
-# the --recheck option to rerun configure.
-#
-# `ac_cv_env_foo' variables (set or unset) will be overridden when
-# loading this file, other *unset* `ac_cv_foo' will be assigned the
-# following values.
-
-_ACEOF
-
-# The following way of writing the cache mishandles newlines in values,
-# but we know of no workaround that is simple, portable, and efficient.
-# So, don't put newlines in cache variables' values.
-# Ultrix sh set writes to stderr and can't be redirected directly,
-# and sets the high bit in the cache file unless we assign to the vars.
-{
- (set) 2>&1 |
- case `(ac_space=' '; set | grep ac_space) 2>&1` in
- *ac_space=\ *)
- # `set' does not quote correctly, so add quotes (double-quote
- # substitution turns \\\\ into \\, and sed turns \\ into \).
- sed -n \
- "s/'/'\\\\''/g;
- s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
- ;;
- *)
- # `set' quotes correctly as required by POSIX, so do not add quotes.
- sed -n \
- "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
- ;;
- esac;
-} |
- sed '
- t clear
- : clear
- s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
- t end
- /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
- : end' >>confcache
-if diff $cache_file confcache >/dev/null 2>&1; then :; else
- if test -w $cache_file; then
- test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file"
- cat confcache >$cache_file
- else
- echo "not updating unwritable cache $cache_file"
- fi
-fi
-rm -f confcache
-
-test "x$prefix" = xNONE && prefix=$ac_default_prefix
-# Let make expand exec_prefix.
-test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
-
-# VPATH may cause trouble with some makes, so we remove $(srcdir),
-# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
-# trailing colons and then remove the whole line if VPATH becomes empty
-# (actually we leave an empty line to preserve line numbers).
-if test "x$srcdir" = x.; then
- ac_vpsub='/^[ ]*VPATH[ ]*=/{
-s/:*\$(srcdir):*/:/;
-s/:*\${srcdir}:*/:/;
-s/:*@srcdir@:*/:/;
-s/^\([^=]*=[ ]*\):*/\1/;
-s/:*$//;
-s/^[^=]*=[ ]*$//;
-}'
-fi
-
-# Transform confdefs.h into DEFS.
-# Protect against shell expansion while executing Makefile rules.
-# Protect against Makefile macro expansion.
-#
-# If the first sed substitution is executed (which looks for macros that
-# take arguments), then we branch to the quote section. Otherwise,
-# look for a macro that doesn't take arguments.
-cat >confdef2opt.sed <<\_ACEOF
-t clear
-: clear
-s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\),-D\1=\2,g
-t quote
-s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\),-D\1=\2,g
-t quote
-d
-: quote
-s,[ `~#$^&*(){}\\|;'"<>?],\\&,g
-s,\[,\\&,g
-s,\],\\&,g
-s,\$,$$,g
-p
-_ACEOF
-# We use echo to avoid assuming a particular line-breaking character.
-# The extra dot is to prevent the shell from consuming trailing
-# line-breaks from the sub-command output. A line-break within
-# single-quotes doesn't work because, if this script is created in a
-# platform that uses two characters for line-breaks (e.g., DOS), tr
-# would break.
-ac_LF_and_DOT=`echo; echo .`
-DEFS=`sed -n -f confdef2opt.sed confdefs.h | tr "$ac_LF_and_DOT" ' .'`
-rm -f confdef2opt.sed
-
-
-ac_libobjs=
-ac_ltlibobjs=
-for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
- # 1. Remove the extension, and $U if already installed.
- ac_i=`echo "$ac_i" |
- sed 's/\$U\././;s/\.o$//;s/\.obj$//'`
- # 2. Add them.
- ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext"
- ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo'
-done
-LIBOBJS=$ac_libobjs
-
-LTLIBOBJS=$ac_ltlibobjs
-
-
-
-: ${CONFIG_STATUS=./config.status}
-ac_clean_files_save=$ac_clean_files
-ac_clean_files="$ac_clean_files $CONFIG_STATUS"
-{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5
-echo "$as_me: creating $CONFIG_STATUS" >&6;}
-cat >$CONFIG_STATUS <<_ACEOF
-#! $SHELL
-# Generated by $as_me.
-# Run this file to recreate the current configuration.
-# Compiler output produced by configure, useful for debugging
-# configure, is in config.log if it exists.
-
-debug=false
-ac_cs_recheck=false
-ac_cs_silent=false
-SHELL=\${CONFIG_SHELL-$SHELL}
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF
-## --------------------- ##
-## M4sh Initialization. ##
-## --------------------- ##
-
-# Be Bourne compatible
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
- emulate sh
- NULLCMD=:
- # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
- # is contrary to our usage. Disable this feature.
- alias -g '${1+"$@"}'='"$@"'
-elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
- set -o posix
-fi
-DUALCASE=1; export DUALCASE # for MKS sh
-
-# Support unset when possible.
-if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
- as_unset=unset
-else
- as_unset=false
-fi
-
-
-# Work around bugs in pre-3.0 UWIN ksh.
-$as_unset ENV MAIL MAILPATH
-PS1='$ '
-PS2='> '
-PS4='+ '
-
-# NLS nuisances.
-for as_var in \
- LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
- LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
- LC_TELEPHONE LC_TIME
-do
- if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
- eval $as_var=C; export $as_var
- else
- $as_unset $as_var
- fi
-done
-
-# Required to use basename.
-if expr a : '\(a\)' >/dev/null 2>&1; then
- as_expr=expr
-else
- as_expr=false
-fi
-
-if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then
- as_basename=basename
-else
- as_basename=false
-fi
-
-
-# Name of the executable.
-as_me=`$as_basename "$0" ||
-$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
- X"$0" : 'X\(//\)$' \| \
- X"$0" : 'X\(/\)$' \| \
- . : '\(.\)' 2>/dev/null ||
-echo X/"$0" |
- sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }
- /^X\/\(\/\/\)$/{ s//\1/; q; }
- /^X\/\(\/\).*/{ s//\1/; q; }
- s/.*/./; q'`
-
-
-# PATH needs CR, and LINENO needs CR and PATH.
-# Avoid depending upon Character Ranges.
-as_cr_letters='abcdefghijklmnopqrstuvwxyz'
-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-as_cr_Letters=$as_cr_letters$as_cr_LETTERS
-as_cr_digits='0123456789'
-as_cr_alnum=$as_cr_Letters$as_cr_digits
-
-# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
- echo "#! /bin/sh" >conf$$.sh
- echo "exit 0" >>conf$$.sh
- chmod +x conf$$.sh
- if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
- PATH_SEPARATOR=';'
- else
- PATH_SEPARATOR=:
- fi
- rm -f conf$$.sh
-fi
-
-
- as_lineno_1=$LINENO
- as_lineno_2=$LINENO
- as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
- test "x$as_lineno_1" != "x$as_lineno_2" &&
- test "x$as_lineno_3" = "x$as_lineno_2" || {
- # Find who we are. Look in the path if we contain no path at all
- # relative or not.
- case $0 in
- *[\\/]* ) as_myself=$0 ;;
- *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
-done
-
- ;;
- esac
- # We did not find ourselves, most probably we were run as `sh COMMAND'
- # in which case we are not to be found in the path.
- if test "x$as_myself" = x; then
- as_myself=$0
- fi
- if test ! -f "$as_myself"; then
- { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5
-echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;}
- { (exit 1); exit 1; }; }
- fi
- case $CONFIG_SHELL in
- '')
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for as_base in sh bash ksh sh5; do
- case $as_dir in
- /*)
- if ("$as_dir/$as_base" -c '
- as_lineno_1=$LINENO
- as_lineno_2=$LINENO
- as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
- test "x$as_lineno_1" != "x$as_lineno_2" &&
- test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then
- $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; }
- $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; }
- CONFIG_SHELL=$as_dir/$as_base
- export CONFIG_SHELL
- exec "$CONFIG_SHELL" "$0" ${1+"$@"}
- fi;;
- esac
- done
-done
-;;
- esac
-
- # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
- # uniformly replaced by the line number. The first 'sed' inserts a
- # line-number line before each line; the second 'sed' does the real
- # work. The second script uses 'N' to pair each line-number line
- # with the numbered line, and appends trailing '-' during
- # substitution so that $LINENO is not a special case at line end.
- # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
- # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-)
- sed '=' <$as_myself |
- sed '
- N
- s,$,-,
- : loop
- s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
- t loop
- s,-$,,
- s,^['$as_cr_digits']*\n,,
- ' >$as_me.lineno &&
- chmod +x $as_me.lineno ||
- { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5
-echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;}
- { (exit 1); exit 1; }; }
-
- # Don't try to exec as it changes $[0], causing all sort of problems
- # (the dirname of $[0] is not the place where we might find the
- # original and so on. Autoconf is especially sensible to this).
- . ./$as_me.lineno
- # Exit status is that of the last command.
- exit
-}
-
-
-case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
- *c*,-n*) ECHO_N= ECHO_C='
-' ECHO_T=' ' ;;
- *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;;
- *) ECHO_N= ECHO_C='\c' ECHO_T= ;;
-esac
-
-if expr a : '\(a\)' >/dev/null 2>&1; then
- as_expr=expr
-else
- as_expr=false
-fi
-
-rm -f conf$$ conf$$.exe conf$$.file
-echo >conf$$.file
-if ln -s conf$$.file conf$$ 2>/dev/null; then
- # We could just check for DJGPP; but this test a) works b) is more generic
- # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
- if test -f conf$$.exe; then
- # Don't use ln at all; we don't have any links
- as_ln_s='cp -p'
- else
- as_ln_s='ln -s'
- fi
-elif ln conf$$.file conf$$ 2>/dev/null; then
- as_ln_s=ln
-else
- as_ln_s='cp -p'
-fi
-rm -f conf$$ conf$$.exe conf$$.file
-
-if mkdir -p . 2>/dev/null; then
- as_mkdir_p=:
-else
- test -d ./-p && rmdir ./-p
- as_mkdir_p=false
-fi
-
-as_executable_p="test -f"
-
-# Sed expression to map a string onto a valid CPP name.
-as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
-
-# Sed expression to map a string onto a valid variable name.
-as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
-
-
-# IFS
-# We need space, tab and new line, in precisely that order.
-as_nl='
-'
-IFS=" $as_nl"
-
-# CDPATH.
-$as_unset CDPATH
-
-exec 6>&1
-
-# Open the log real soon, to keep \$[0] and so on meaningful, and to
-# report actual input values of CONFIG_FILES etc. instead of their
-# values after options handling. Logging --version etc. is OK.
-exec 5>>config.log
-{
- echo
- sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
-## Running $as_me. ##
-_ASBOX
-} >&5
-cat >&5 <<_CSEOF
-
-This file was extended by $as_me, which was
-generated by GNU Autoconf 2.59. Invocation command line was
-
- CONFIG_FILES = $CONFIG_FILES
- CONFIG_HEADERS = $CONFIG_HEADERS
- CONFIG_LINKS = $CONFIG_LINKS
- CONFIG_COMMANDS = $CONFIG_COMMANDS
- $ $0 $@
-
-_CSEOF
-echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5
-echo >&5
-_ACEOF
-
-# Files that config.status was made for.
-if test -n "$ac_config_files"; then
- echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS
-fi
-
-if test -n "$ac_config_headers"; then
- echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS
-fi
-
-if test -n "$ac_config_links"; then
- echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS
-fi
-
-if test -n "$ac_config_commands"; then
- echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS
-fi
-
-cat >>$CONFIG_STATUS <<\_ACEOF
-
-ac_cs_usage="\
-\`$as_me' instantiates files from templates according to the
-current configuration.
-
-Usage: $0 [OPTIONS] [FILE]...
-
- -h, --help print this help, then exit
- -V, --version print version number, then exit
- -q, --quiet do not print progress messages
- -d, --debug don't remove temporary files
- --recheck update $as_me by reconfiguring in the same conditions
- --file=FILE[:TEMPLATE]
- instantiate the configuration file FILE
-
-Configuration files:
-$config_files
-
-Report bugs to <bug-autoconf@gnu.org>."
-_ACEOF
-
-cat >>$CONFIG_STATUS <<_ACEOF
-ac_cs_version="\\
-config.status
-configured by $0, generated by GNU Autoconf 2.59,
- with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
-
-Copyright (C) 2003 Free Software Foundation, Inc.
-This config.status script is free software; the Free Software Foundation
-gives unlimited permission to copy, distribute and modify it."
-srcdir=$srcdir
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF
-# If no file are specified by the user, then we need to provide default
-# value. By we need to know if files were specified by the user.
-ac_need_defaults=:
-while test $# != 0
-do
- case $1 in
- --*=*)
- ac_option=`expr "x$1" : 'x\([^=]*\)='`
- ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'`
- ac_shift=:
- ;;
- -*)
- ac_option=$1
- ac_optarg=$2
- ac_shift=shift
- ;;
- *) # This is not an option, so the user has probably given explicit
- # arguments.
- ac_option=$1
- ac_need_defaults=false;;
- esac
-
- case $ac_option in
- # Handling of the options.
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF
- -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
- ac_cs_recheck=: ;;
- --version | --vers* | -V )
- echo "$ac_cs_version"; exit 0 ;;
- --he | --h)
- # Conflict between --help and --header
- { { echo "$as_me:$LINENO: error: ambiguous option: $1
-Try \`$0 --help' for more information." >&5
-echo "$as_me: error: ambiguous option: $1
-Try \`$0 --help' for more information." >&2;}
- { (exit 1); exit 1; }; };;
- --help | --hel | -h )
- echo "$ac_cs_usage"; exit 0 ;;
- --debug | --d* | -d )
- debug=: ;;
- --file | --fil | --fi | --f )
- $ac_shift
- CONFIG_FILES="$CONFIG_FILES $ac_optarg"
- ac_need_defaults=false;;
- --header | --heade | --head | --hea )
- $ac_shift
- CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg"
- ac_need_defaults=false;;
- -q | -quiet | --quiet | --quie | --qui | --qu | --q \
- | -silent | --silent | --silen | --sile | --sil | --si | --s)
- ac_cs_silent=: ;;
-
- # This is an error.
- -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1
-Try \`$0 --help' for more information." >&5
-echo "$as_me: error: unrecognized option: $1
-Try \`$0 --help' for more information." >&2;}
- { (exit 1); exit 1; }; } ;;
-
- *) ac_config_targets="$ac_config_targets $1" ;;
-
- esac
- shift
-done
-
-ac_configure_extra_args=
-
-if $ac_cs_silent; then
- exec 6>/dev/null
- ac_configure_extra_args="$ac_configure_extra_args --silent"
-fi
-
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF
-if \$ac_cs_recheck; then
- echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6
- exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
-fi
-
-_ACEOF
-
-
-
-
-
-cat >>$CONFIG_STATUS <<\_ACEOF
-for ac_config_target in $ac_config_targets
-do
- case "$ac_config_target" in
- # Handling of arguments.
- "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;;
- "tcl.hpj" ) CONFIG_FILES="$CONFIG_FILES tcl.hpj" ;;
- *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
-echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
- { (exit 1); exit 1; }; };;
- esac
-done
-
-# If the user did not use the arguments to specify the items to instantiate,
-# then the envvar interface is used. Set only those that are not.
-# We use the long form for the default assignment because of an extremely
-# bizarre bug on SunOS 4.1.3.
-if $ac_need_defaults; then
- test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
-fi
-
-# Have a temporary directory for convenience. Make it in the build tree
-# simply because there is no reason to put it here, and in addition,
-# creating and moving files from /tmp can sometimes cause problems.
-# Create a temporary directory, and hook for its removal unless debugging.
-$debug ||
-{
- trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0
- trap '{ (exit 1); exit 1; }' 1 2 13 15
-}
-
-# Create a (secure) tmp directory for tmp files.
-
-{
- tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` &&
- test -n "$tmp" && test -d "$tmp"
-} ||
-{
- tmp=./confstat$$-$RANDOM
- (umask 077 && mkdir $tmp)
-} ||
-{
- echo "$me: cannot create a temporary directory in ." >&2
- { (exit 1); exit 1; }
-}
-
-_ACEOF
-
-cat >>$CONFIG_STATUS <<_ACEOF
-
-#
-# CONFIG_FILES section.
-#
-
-# No need to generate the scripts if there are no CONFIG_FILES.
-# This happens for instance when ./config.status config.h
-if test -n "\$CONFIG_FILES"; then
- # Protect against being on the right side of a sed subst in config.status.
- sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g;
- s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF
-s,@SHELL@,$SHELL,;t t
-s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t
-s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t
-s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t
-s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t
-s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t
-s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t
-s,@exec_prefix@,$exec_prefix,;t t
-s,@prefix@,$prefix,;t t
-s,@program_transform_name@,$program_transform_name,;t t
-s,@bindir@,$bindir,;t t
-s,@sbindir@,$sbindir,;t t
-s,@libexecdir@,$libexecdir,;t t
-s,@datadir@,$datadir,;t t
-s,@sysconfdir@,$sysconfdir,;t t
-s,@sharedstatedir@,$sharedstatedir,;t t
-s,@localstatedir@,$localstatedir,;t t
-s,@libdir@,$libdir,;t t
-s,@includedir@,$includedir,;t t
-s,@oldincludedir@,$oldincludedir,;t t
-s,@infodir@,$infodir,;t t
-s,@mandir@,$mandir,;t t
-s,@build_alias@,$build_alias,;t t
-s,@host_alias@,$host_alias,;t t
-s,@target_alias@,$target_alias,;t t
-s,@DEFS@,$DEFS,;t t
-s,@ECHO_C@,$ECHO_C,;t t
-s,@ECHO_N@,$ECHO_N,;t t
-s,@ECHO_T@,$ECHO_T,;t t
-s,@LIBS@,$LIBS,;t t
-s,@TCL_WIN_VERSION@,$TCL_WIN_VERSION,;t t
-s,@CC@,$CC,;t t
-s,@TCL_VERSION@,$TCL_VERSION,;t t
-s,@TCL_PATCH_LEVEL@,$TCL_PATCH_LEVEL,;t t
-s,@TCL_SRC_DIR@,$TCL_SRC_DIR,;t t
-s,@TCL_BIN_DIR@,$TCL_BIN_DIR,;t t
-s,@LIBOBJS@,$LIBOBJS,;t t
-s,@LTLIBOBJS@,$LTLIBOBJS,;t t
-CEOF
-
-_ACEOF
-
- cat >>$CONFIG_STATUS <<\_ACEOF
- # Split the substitutions into bite-sized pieces for seds with
- # small command number limits, like on Digital OSF/1 and HP-UX.
- ac_max_sed_lines=48
- ac_sed_frag=1 # Number of current file.
- ac_beg=1 # First line for current file.
- ac_end=$ac_max_sed_lines # Line after last line for current file.
- ac_more_lines=:
- ac_sed_cmds=
- while $ac_more_lines; do
- if test $ac_beg -gt 1; then
- sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
- else
- sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
- fi
- if test ! -s $tmp/subs.frag; then
- ac_more_lines=false
- else
- # The purpose of the label and of the branching condition is to
- # speed up the sed processing (if there are no `@' at all, there
- # is no need to browse any of the substitutions).
- # These are the two extra sed commands mentioned above.
- (echo ':t
- /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed
- if test -z "$ac_sed_cmds"; then
- ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed"
- else
- ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed"
- fi
- ac_sed_frag=`expr $ac_sed_frag + 1`
- ac_beg=$ac_end
- ac_end=`expr $ac_end + $ac_max_sed_lines`
- fi
- done
- if test -z "$ac_sed_cmds"; then
- ac_sed_cmds=cat
- fi
-fi # test -n "$CONFIG_FILES"
-
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF
-for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue
- # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
- case $ac_file in
- - | *:- | *:-:* ) # input from stdin
- cat >$tmp/stdin
- ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
- *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
- * ) ac_file_in=$ac_file.in ;;
- esac
-
- # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories.
- ac_dir=`(dirname "$ac_file") 2>/dev/null ||
-$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$ac_file" : 'X\(//\)[^/]' \| \
- X"$ac_file" : 'X\(//\)$' \| \
- X"$ac_file" : 'X\(/\)' \| \
- . : '\(.\)' 2>/dev/null ||
-echo X"$ac_file" |
- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
- /^X\(\/\/\)[^/].*/{ s//\1/; q; }
- /^X\(\/\/\)$/{ s//\1/; q; }
- /^X\(\/\).*/{ s//\1/; q; }
- s/.*/./; q'`
- { if $as_mkdir_p; then
- mkdir -p "$ac_dir"
- else
- as_dir="$ac_dir"
- as_dirs=
- while test ! -d "$as_dir"; do
- as_dirs="$as_dir $as_dirs"
- as_dir=`(dirname "$as_dir") 2>/dev/null ||
-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$as_dir" : 'X\(//\)[^/]' \| \
- X"$as_dir" : 'X\(//\)$' \| \
- X"$as_dir" : 'X\(/\)' \| \
- . : '\(.\)' 2>/dev/null ||
-echo X"$as_dir" |
- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
- /^X\(\/\/\)[^/].*/{ s//\1/; q; }
- /^X\(\/\/\)$/{ s//\1/; q; }
- /^X\(\/\).*/{ s//\1/; q; }
- s/.*/./; q'`
- done
- test ! -n "$as_dirs" || mkdir $as_dirs
- fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
-echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
- { (exit 1); exit 1; }; }; }
-
- ac_builddir=.
-
-if test "$ac_dir" != .; then
- ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
- # A "../" for each directory in $ac_dir_suffix.
- ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
-else
- ac_dir_suffix= ac_top_builddir=
-fi
-
-case $srcdir in
- .) # No --srcdir option. We are building in place.
- ac_srcdir=.
- if test -z "$ac_top_builddir"; then
- ac_top_srcdir=.
- else
- ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
- fi ;;
- [\\/]* | ?:[\\/]* ) # Absolute path.
- ac_srcdir=$srcdir$ac_dir_suffix;
- ac_top_srcdir=$srcdir ;;
- *) # Relative path.
- ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
- ac_top_srcdir=$ac_top_builddir$srcdir ;;
-esac
-
-# Do not use `cd foo && pwd` to compute absolute paths, because
-# the directories may not exist.
-case `pwd` in
-.) ac_abs_builddir="$ac_dir";;
-*)
- case "$ac_dir" in
- .) ac_abs_builddir=`pwd`;;
- [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
- *) ac_abs_builddir=`pwd`/"$ac_dir";;
- esac;;
-esac
-case $ac_abs_builddir in
-.) ac_abs_top_builddir=${ac_top_builddir}.;;
-*)
- case ${ac_top_builddir}. in
- .) ac_abs_top_builddir=$ac_abs_builddir;;
- [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
- *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
- esac;;
-esac
-case $ac_abs_builddir in
-.) ac_abs_srcdir=$ac_srcdir;;
-*)
- case $ac_srcdir in
- .) ac_abs_srcdir=$ac_abs_builddir;;
- [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
- *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
- esac;;
-esac
-case $ac_abs_builddir in
-.) ac_abs_top_srcdir=$ac_top_srcdir;;
-*)
- case $ac_top_srcdir in
- .) ac_abs_top_srcdir=$ac_abs_builddir;;
- [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
- *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
- esac;;
-esac
-
-
-
- if test x"$ac_file" != x-; then
- { echo "$as_me:$LINENO: creating $ac_file" >&5
-echo "$as_me: creating $ac_file" >&6;}
- rm -f "$ac_file"
- fi
- # Let's still pretend it is `configure' which instantiates (i.e., don't
- # use $as_me), people would be surprised to read:
- # /* config.h. Generated by config.status. */
- if test x"$ac_file" = x-; then
- configure_input=
- else
- configure_input="$ac_file. "
- fi
- configure_input=$configure_input"Generated from `echo $ac_file_in |
- sed 's,.*/,,'` by configure."
-
- # First look for the input files in the build tree, otherwise in the
- # src tree.
- ac_file_inputs=`IFS=:
- for f in $ac_file_in; do
- case $f in
- -) echo $tmp/stdin ;;
- [\\/$]*)
- # Absolute (can't be DOS-style, as IFS=:)
- test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
-echo "$as_me: error: cannot find input file: $f" >&2;}
- { (exit 1); exit 1; }; }
- echo "$f";;
- *) # Relative
- if test -f "$f"; then
- # Build tree
- echo "$f"
- elif test -f "$srcdir/$f"; then
- # Source tree
- echo "$srcdir/$f"
- else
- # /dev/null tree
- { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
-echo "$as_me: error: cannot find input file: $f" >&2;}
- { (exit 1); exit 1; }; }
- fi;;
- esac
- done` || { (exit 1); exit 1; }
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF
- sed "$ac_vpsub
-$extrasub
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF
-:t
-/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
-s,@configure_input@,$configure_input,;t t
-s,@srcdir@,$ac_srcdir,;t t
-s,@abs_srcdir@,$ac_abs_srcdir,;t t
-s,@top_srcdir@,$ac_top_srcdir,;t t
-s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t
-s,@builddir@,$ac_builddir,;t t
-s,@abs_builddir@,$ac_abs_builddir,;t t
-s,@top_builddir@,$ac_top_builddir,;t t
-s,@abs_top_builddir@,$ac_abs_top_builddir,;t t
-" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out
- rm -f $tmp/stdin
- if test x"$ac_file" != x-; then
- mv $tmp/out $ac_file
- else
- cat $tmp/out
- rm -f $tmp/out
- fi
-
-done
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF
-
-{ (exit 0); exit 0; }
-_ACEOF
-chmod +x $CONFIG_STATUS
-ac_clean_files=$ac_clean_files_save
-
-
-# configure is writing to config.log, and then calls config.status.
-# config.status does its own redirection, appending to config.log.
-# Unfortunately, on DOS this fails, as config.log is still kept open
-# by configure, so config.status won't be able to write to it; its
-# output is simply discarded. So we exec the FD to /dev/null,
-# effectively closing config.log, so it can be properly (re)opened and
-# appended to by config.status. When coming back to configure, we
-# need to make the FD available again.
-if test "$no_create" != yes; then
- ac_cs_success=:
- ac_config_status_args=
- test "$silent" = yes &&
- ac_config_status_args="$ac_config_status_args --quiet"
- exec 5>/dev/null
- $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
- exec 5>>config.log
- # Use ||, not &&, to avoid exiting from the if with $? = 1, which
- # would make configure fail if this is the last instruction.
- $ac_cs_success || { (exit 1); exit 1; }
-fi
-
diff --git a/tools/configure.in b/tools/configure.in
deleted file mode 100644
index 6aebcaa..0000000
--- a/tools/configure.in
+++ /dev/null
@@ -1,35 +0,0 @@
-dnl This file is an input file used by the GNU "autoconf" program to
-dnl generate the file "configure", which is run to configure the
-dnl Makefile in this directory.
-AC_INIT(man2tcl.c)
-AC_PREREQ(2.59)
-
-# Recover information that Tcl computed with its configure script.
-
-#--------------------------------------------------------------------
-# See if there was a command-line option for where Tcl is; if
-# not, assume that its top-level directory is a sibling of ours.
-#--------------------------------------------------------------------
-
-DEF_VER=8.6
-
-AC_ARG_WITH(tcl, [ --with-tcl=DIR use Tcl $DEF_VER binaries from DIR], TCL_BIN_DIR=$withval, TCL_BIN_DIR=`cd ../../tcl$DEF_VER$TCL_PATCH_LEVEL/unix; pwd`)
-if test ! -d $TCL_BIN_DIR; then
- AC_MSG_ERROR(Tcl directory $TCL_BIN_DIR doesn't exist)
-fi
-if test ! -f $TCL_BIN_DIR/tclConfig.sh; then
- AC_MSG_ERROR(There's no tclConfig.sh in $TCL_BIN_DIR; perhaps you didn't specify the Tcl *build* directory (not the toplevel Tcl directory) or you forgot to configure Tcl?)
-fi
-
-. $TCL_BIN_DIR/tclConfig.sh
-
-TCL_WIN_VERSION=$TCL_MAJOR_VERSION$TCL_MINOR_VERSION
-AC_SUBST(TCL_WIN_VERSION)
-CC=$TCL_CC
-AC_SUBST(CC)
-AC_SUBST(TCL_VERSION)
-AC_SUBST(TCL_PATCH_LEVEL)
-AC_SUBST(TCL_SRC_DIR)
-AC_SUBST(TCL_BIN_DIR)
-
-AC_OUTPUT(Makefile tcl.hpj)
diff --git a/tools/eolFix.tcl b/tools/eolFix.tcl
deleted file mode 100644
index 3f35ed4..0000000
--- a/tools/eolFix.tcl
+++ /dev/null
@@ -1,80 +0,0 @@
-## Super aggressive EOL-fixer!
-##
-## Will even understand screwed up ones like CRCRLF.
-## (found in bad CVS repositories, caused by spacey developers
-## abusing CVS)
-##
-## davygrvy@pobox.com 3:41 PM 10/12/2001
-##
-
-package provide EOL-fix 1.1
-
-namespace eval ::EOL {
- variable outMode crlf
-}
-
-proc EOL::fix {filename {newfilename {}}} {
- variable outMode
-
- if {![file exists $filename]} {
- return
- }
- puts "EOL Fixing: $filename"
-
- file rename ${filename} ${filename}.o
- set fhnd [open ${filename}.o r]
-
- if {$newfilename ne ""} {
- set newfhnd [open ${newfilename} w]
- } else {
- set newfhnd [open ${filename} w]
- }
-
- fconfigure $newfhnd -translation [list auto $outMode]
- seek $fhnd 0 end
- set theEnd [tell $fhnd]
- seek $fhnd 0 start
-
- fconfigure $fhnd -translation binary -buffersize $theEnd
- set rawFile [read $fhnd $theEnd]
- close $fhnd
-
- regsub -all {(\r)|(\r){1,2}(\n)} $rawFile "\n" rawFile
-
- set lineList [split $rawFile \n]
-
- foreach line $lineList {
- puts $newfhnd $line
- }
-
- close $newfhnd
- file delete ${filename}.o
-}
-
-proc EOL::fixall {args} {
- if {[llength $args] == 0} {
- puts stderr "no files to fix"
- exit 1
- } else {
- set cmd [lreplace $args -1 -1 glob -nocomplain]
- }
-
- foreach f [eval $cmd] {
- if {[file isfile $f]} {fix $f}
- }
-}
-
-if {$tcl_interactive == 0 && $argc > 0} {
- if {[string index [lindex $argv 0] 0] eq "-"} {
- switch -- [lindex $argv 0] {
- -cr {set ::EOL::outMode cr}
- -crlf {set ::EOL::outMode crlf}
- -lf {set ::EOL::outMode lf}
- default {puts stderr "improper mode switch"; exit 1}
- }
- set argv [lrange $argv 1 end]
- }
- eval EOL::fixall $argv
-} else {
- return
-}
diff --git a/tools/fix_tommath_h.tcl b/tools/fix_tommath_h.tcl
deleted file mode 100755
index 8e92400..0000000
--- a/tools/fix_tommath_h.tcl
+++ /dev/null
@@ -1,102 +0,0 @@
-# fixtommath.tcl --
-#
-# Changes to 'tommath.h' to make it conform with Tcl's linking
-# conventions.
-#
-# Copyright (c) 2005 Kevin B. Kenny. All rights reserved.
-#
-# See the file "license.terms" for information on usage and redistribution
-# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
-#----------------------------------------------------------------------
-
-set f [open [lindex $argv 0] r]
-set data [read $f]
-close $f
-
-set eat_endif 0
-set eat_semi 0
-set def_count 0
-foreach line [split $data \n] {
- if {!$eat_semi && !$eat_endif} {
- switch -regexp -- $line {
- {#define BN_H_} {
- puts $line
- puts {}
- puts "\#include \"tclInt.h\""
- puts "\#include \"tclTomMathDecls.h\""
- puts "\#ifndef MODULE_SCOPE"
- puts "\#define MODULE_SCOPE extern"
- puts "\#endif"
- }
- {typedef\s+unsigned long\s+mp_digit;} {
- # change the second 'typedef unsigned long mp
- incr def_count
- puts "\#ifndef MP_DIGIT_DECLARED"
- if {$def_count == 2} {
- puts [string map {long int} $line]
- } else {
- puts $line
- }
- puts "\#define MP_DIGIT_DECLARED"
- puts "\#endif"
- }
- {typedef.*mp_digit;} {
- puts "\#ifndef MP_DIGIT_DECLARED"
- puts $line
- puts "\#define MP_DIGIT_DECLARED"
- puts "\#endif"
- }
- {typedef struct} {
- puts "\#ifndef MP_INT_DECLARED"
- puts "\#define MP_INT_DECLARED"
- puts "typedef struct mp_int mp_int;"
- puts "\#endif"
- puts "struct mp_int \{"
- }
- \}\ mp_int\; {
- puts "\};"
- }
- {^(char|int|void)} {
- puts "/*"
- puts $line
- set eat_semi 1
- set after_semi "*/"
- }
- {^extern (int|const)} {
- puts "\#if defined(BUILD_tcl) || !defined(_WIN32)"
- puts [regsub {^extern} $line "MODULE_SCOPE"]
- set eat_semi 1
- set after_semi "\#endif"
- }
- {define heap macros} {
- puts $line
- puts "\#if 0 /* these are macros in tclTomMathDecls.h */"
- set eat_endif 1
- }
- {__x86_64__} {
- puts "[string map {__x86_64__ NEVER} $line]\
- /* 128-bit ints fail in too many places */"
- }
- {#include} {
- # remove all includes
- }
- default {
- puts $line
- }
- }
- } else {
- puts $line
- }
- if {$eat_semi} {
- if {[regexp {; *$} $line]} {
- puts $after_semi
- set eat_semi 0
- }
- }
- if {$eat_endif} {
- if {[regexp {^\#endif} $line]} {
- puts "\#endif"
- set eat_endif 0
- }
- }
-}
diff --git a/tools/installVfs.tcl b/tools/installVfs.tcl
new file mode 100644
index 0000000..14993ec
--- /dev/null
+++ b/tools/installVfs.tcl
@@ -0,0 +1,54 @@
+#!/bin/sh
+#\
+exec tclsh "$0" ${1+"$@"}
+
+#----------------------------------------------------------------------
+#
+# installVfs.tcl --
+#
+# This file wraps the /library file system around a binary
+#
+#----------------------------------------------------------------------
+#
+# Copyright (c) 2018 Sean Woods. All rights reserved.
+# See the file "license.terms" for information on usage and redistribution
+# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+#----------------------------------------------------------------------
+
+proc mapDir {resultvar prefix filepath} {
+ upvar 1 $resultvar result
+ if {![info exists result]} {
+ set result {}
+ }
+ set queue [list $prefix $filepath]
+ while {[llength $queue]} {
+ set queue [lassign $queue qprefix qpath]
+ foreach ftail [glob -directory $qpath -nocomplain -tails *] {
+ set f [file join $qpath $ftail]
+ if {[file isdirectory $f]} {
+ if {$ftail eq "CVS"} continue
+ lappend queue [file join $qprefix $ftail] $f
+ } elseif {[file isfile $f]} {
+ if {$ftail eq "pkgIndex.tcl"} continue
+ if {$ftail eq "manifest.txt"} {
+ lappend result $f [file join $qprefix pkgIndex.tcl]
+ } else {
+ lappend result $f [file join $qprefix $ftail]
+ }
+ }
+ }
+ }
+}
+if {[llength $argv]<4} {
+ error "Usage: [file tail [info script]] IMG_OUTPUT IMG_INPUT PREFIX FILE_SYSTEM ?PREFIX FILE_SYSTEM?..."
+}
+
+set paths [lassign $argv DLL_OUTPUT DLL_INPUT]
+foreach {prefix fpath} $paths {
+ mapDir files $prefix [file normalize $fpath]
+}
+if {$DLL_INPUT != {}} {
+ zipfs lmkzip $DLL_OUTPUT $files
+} else {
+ zipfs lmkimg $DLL_OUTPUT $files {} $DLL_INPUT
+}
diff --git a/tools/loadICU.tcl b/tools/loadICU.tcl
index 204783a..6057662 100755
--- a/tools/loadICU.tcl
+++ b/tools/loadICU.tcl
@@ -27,6 +27,9 @@
# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
#----------------------------------------------------------------------
+puts stdout "TODO: output in UTF-8 in stead of using \\uhhhh sequences"
+exit; # Remove those two lines after modifying this tool.
+
# Calculate the Chinese numerals from zero to ninety-nine.
set zhDigits [list {} \u4e00 \u4e8c \u4e09 \u56db \
diff --git a/tools/makeHeader.tcl b/tools/makeHeader.tcl
new file mode 100644
index 0000000..dd2f199
--- /dev/null
+++ b/tools/makeHeader.tcl
@@ -0,0 +1,182 @@
+# makeHeader.tcl --
+#
+# This script generates embeddable C source (in a .h file) from a .tcl
+# script.
+#
+# Copyright (c) 2018 Donal K. Fellows
+#
+# See the file "license.terms" for information on usage and redistribution
+# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+
+package require Tcl 8.6
+
+namespace eval makeHeader {
+
+ ####################################################################
+ #
+ # mapSpecial --
+ # Transform a single line so that it is able to be put in a C string.
+ #
+ proc mapSpecial {str} {
+ # All Tcl metacharacters and key C backslash sequences
+ set MAP {
+ \" \\\\\" \\ \\\\\\\\ $ \\$ [ \\[ ] \\] ' \\\\' ? \\\\?
+ \a \\\\a \b \\\\b \f \\\\f \n \\\\n \r \\\\r \t \\\\t \v \\\\v
+ }
+ set XFORM {[format \\\\\\\\u%04x {*}[scan & %c]]}
+
+ subst [regsub -all {[^\u0020-\u007e]} [string map $MAP $str] $XFORM]
+ }
+
+ ####################################################################
+ #
+ # compactLeadingSpaces --
+ # Converts the leading whitespace on a line into a more compact form.
+ #
+ proc compactLeadingSpaces {line} {
+ set line [string map {\t { }} [string trimright $line]]
+ if {[regexp {^[ ]+} $line spaces]} {
+ regsub -all {[ ]{4}} $spaces \t replace
+ set len [expr {[string length $spaces] - 1}]
+ set line [string replace $line 0 $len $replace]
+ }
+ return $line
+ }
+
+ ####################################################################
+ #
+ # processScript --
+ # Transform a whole sequence of lines with [mapSpecial].
+ #
+ proc processScript {scriptLines} {
+ lmap line $scriptLines {
+ # Skip blank and comment lines; they're there in the original
+ # sources so we don't need to copy them over.
+ if {[regexp {^\s*(?:#|$)} $line]} continue
+ format {"%s"} [mapSpecial [compactLeadingSpaces $line]\n]
+ }
+ }
+
+ ####################################################################
+ #
+ # updateTemplate --
+ # Rewrite a template to contain the content from the input script.
+ #
+ proc updateTemplate {dataVar scriptLines} {
+ set BEGIN "*!BEGIN!: Do not edit below this line.*"
+ set END "*!END!: Do not edit above this line.*"
+
+ upvar 1 $dataVar data
+
+ set from [lsearch -glob $data $BEGIN]
+ set to [lsearch -glob $data $END]
+ if {$from < 0 || $to < 0 || $from >= $to} {
+ throw BAD "not a template"
+ }
+
+ set data [lreplace $data $from+1 $to-1 {*}[processScript $scriptLines]]
+ }
+
+ ####################################################################
+ #
+ # stripSurround --
+ # Removes the header and footer comments from a (line-split list of
+ # lines of) Tcl script code.
+ #
+ proc stripSurround {lines} {
+ set RE {^\s*$|^#}
+ set state 0
+ set lines [lmap line [lreverse $lines] {
+ if {!$state && [regexp $RE $line]} continue {
+ set state 1
+ set line
+ }
+ }]
+ return [lmap line [lreverse $lines] {
+ if {$state && [regexp $RE $line]} continue {
+ set state 0
+ set line
+ }
+ }]
+ }
+
+ ####################################################################
+ #
+ # updateTemplateFile --
+ # Rewrites a template file with the lines of the given script.
+ #
+ proc updateTemplateFile {headerFile scriptLines} {
+ set f [open $headerFile "r+"]
+ try {
+ set content [split [chan read -nonewline $f] "\n"]
+ updateTemplate content [stripSurround $scriptLines]
+ chan seek $f 0
+ chan puts $f [join $content \n]
+ chan truncate $f
+ } trap BAD msg {
+ # Add the filename to the message
+ throw BAD "${headerFile}: $msg"
+ } finally {
+ chan close $f
+ }
+ }
+
+ ####################################################################
+ #
+ # readScript --
+ # Read a script from a file and return its lines.
+ #
+ proc readScript {script} {
+ set f [open $script]
+ try {
+ chan configure $f -encoding utf-8
+ return [split [string trim [chan read $f]] "\n"]
+ } finally {
+ chan close $f
+ }
+ }
+
+ ####################################################################
+ #
+ # run --
+ # The main program of this script.
+ #
+ proc run {args} {
+ try {
+ if {[llength $args] != 2} {
+ throw ARGS "inputTclScript templateFile"
+ }
+ lassign $args inputTclScript templateFile
+
+ puts "Inserting $inputTclScript into $templateFile"
+ set scriptLines [readScript $inputTclScript]
+ updateTemplateFile $templateFile $scriptLines
+ exit 0
+ } trap ARGS msg {
+ puts stderr "wrong # args: should be \"[file tail $::argv0] $msg\""
+ exit 2
+ } trap BAD msg {
+ puts stderr $msg
+ exit 1
+ } trap POSIX msg {
+ puts stderr $msg
+ exit 1
+ } on error {- opts} {
+ puts stderr [dict get $opts -errorinfo]
+ exit 3
+ }
+ }
+}
+
+########################################################################
+#
+# Launch the main program
+#
+if {[info script] eq $::argv0} {
+ makeHeader::run {*}$::argv
+}
+
+# Local-Variables:
+# mode: tcl
+# fill-column: 78
+# End:
diff --git a/tools/man2help.tcl b/tools/man2help.tcl
deleted file mode 100644
index 4a928d8..0000000
--- a/tools/man2help.tcl
+++ /dev/null
@@ -1,141 +0,0 @@
-# man2help.tcl --
-#
-# This file defines procedures that work in conjunction with the
-# man2tcl program to generate a Windows help file from Tcl manual
-# entries.
-#
-# Copyright (c) 1996 Sun Microsystems, Inc.
-
-#
-# PASS 1
-#
-
-set man2tclprog [file join [file dirname [info script]] \
- man2tcl[file extension [info nameofexecutable]]]
-
-proc generateContents {basename version files} {
- global curID topics
- set curID 0
- foreach f $files {
- puts "Pass 1 -- $f"
- flush stdout
- doFile $f
- }
- set fd [open [file join [file dirname [info script]] $basename$version.cnt] w]
- fconfigure $fd -translation crlf
- puts $fd ":Base $basename$version.hlp"
- foreach package [getPackages] {
- foreach section [getSections $package] {
- if {![info exists lastSection]} {
- set lastSection {}
- }
- if {[string compare $lastSection $section]} {
- puts $fd "1 $section"
- }
- set lastSection $section
- set lastTopic {}
- foreach topic [getTopics $package $section] {
- if {[string compare $lastTopic $topic]} {
- set id $topics($package,$section,$topic)
- puts $fd "2 $topic=$id"
- set lastTopic $topic
- }
- }
- }
- }
- close $fd
-}
-
-
-#
-# PASS 2
-#
-
-proc generateHelp {basename files} {
- global curID topics keywords file id_keywords
- set curID 0
-
- foreach key [array names keywords] {
- foreach id $keywords($key) {
- lappend id_keywords($id) $key
- }
- }
-
- set file [open [file join [file dirname [info script]] $basename.rtf] w]
- fconfigure $file -translation crlf
- puts $file "\{\\rtf1\\ansi \\deff0\\deflang1033\{\\fonttbl\{\\f0\\froman\\fcharset0\\fprq2 Times New Roman\;\}\{\\f1\\fmodern\\fcharset0\\fprq1 Courier New\;\}\}"
- foreach f $files {
- puts "Pass 2 -- $f"
- flush stdout
- initGlobals
- doFile $f
- pageBreak
- }
- puts $file "\}"
- close $file
-}
-
-# doFile --
-#
-# Given a file as argument, translate the file to a tcl script and
-# evaluate it.
-#
-# Arguments:
-# file - Name of file to translate.
-
-proc doFile {file} {
- global man2tclprog
- if {[catch {eval [exec $man2tclprog [glob $file]]} msg]} {
- global errorInfo
- puts stderr $msg
- puts "in"
- puts $errorInfo
- exit 1
- }
-}
-
-# doDir --
-#
-# Given a directory as argument, translate all the man pages in
-# that directory.
-#
-# Arguments:
-# dir - Name of the directory.
-
-proc doDir dir {
- puts "Generating man pages for $dir..."
- foreach f [lsort [glob -directory $dir "*.\[13n\]"]] {
- doFile $f
- }
-}
-
-# process command line arguments
-
-if {$argc < 3} {
- puts stderr "usage: $argv0 \[options\] projectName version manFiles..."
- exit 1
-}
-
-set arg 0
-
-if {![string compare [lindex $argv $arg] "-bitmap"]} {
- set bitmap [lindex $argv [incr arg]]
- incr arg
-}
-set baseName [lindex $argv $arg]
-set version [lindex $argv [incr arg]]
-set files {}
-foreach i [lrange $argv [incr arg] end] {
- set i [file join $i]
- if {[file isdir $i]} {
- foreach f [lsort [glob -directory $i "*.\[13n\]"]] {
- lappend files $f
- }
- } elseif {[file exists $i]} {
- lappend files $i
- }
-}
-source [file join [file dirname [info script]] index.tcl]
-generateContents $baseName $version $files
-source [file join [file dirname [info script]] man2help2.tcl]
-generateHelp $baseName $files
diff --git a/tools/man2help2.tcl b/tools/man2help2.tcl
deleted file mode 100644
index 655e55b..0000000
--- a/tools/man2help2.tcl
+++ /dev/null
@@ -1,1033 +0,0 @@
-# man2help2.tcl --
-#
-# This file defines procedures that are used during the second pass of
-# the man page conversion. It converts the man format input to rtf
-# form suitable for use by the Windows help compiler.
-#
-# Copyright (c) 1996 Sun Microsystems, Inc.
-#
-# See the file "license.terms" for information on usage and redistribution
-# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
-
-# Global variables used by these scripts:
-#
-# state - state variable that controls action of text proc.
-#
-# topics - array indexed by (package,section,topic) with value
-# of topic ID.
-#
-# keywords - array indexed by keyword string with value of topic ID.
-#
-# curID - current topic ID, starts at 0 and is incremented for
-# each new topic file.
-#
-# curPkg - current package name (e.g. Tcl).
-#
-# curSect - current section title (e.g. "Tcl Built-In Commands").
-#
-
-# initGlobals --
-#
-# This procedure is invoked to set the initial values of all of the
-# global variables, before processing a man page.
-#
-# Arguments:
-# None.
-
-proc initGlobals {} {
- uplevel \#0 unset state
- global state chars
-
- set state(paragraphPending) 0
- set state(breakPending) 0
- set state(firstIndent) 0
- set state(leftIndent) 0
-
- set state(inTP) 0
- set state(paragraph) 0
- set state(textState) 0
- set state(curFont) ""
- set state(startCode) "{\\b "
- set state(startEmphasis) "{\\i "
- set state(endCode) "}"
- set state(endEmphasis) "}"
- set state(noFill) 0
- set state(charCnt) 0
- set state(offset) [getTwips 0.5i]
- set state(leftMargin) [getTwips 0.5i]
- set state(nestingLevel) 0
- set state(intl) 0
- set state(sb) 0
- setTabs 0.5i
-
-# set up international character table
-
- array set chars {
- o^ F4
- }
-}
-
-
-# beginFont --
-#
-# Arranges for future text to use a special font, rather than
-# the default paragraph font.
-#
-# Arguments:
-# font - Name of new font to use.
-
-proc beginFont {font} {
- global file state
-
- textSetup
- if {[string equal $state(curFont) $font]} {
- return
- }
- endFont
- puts -nonewline $file $state(start$font)
- set state(curFont) $font
-}
-
-
-# endFont --
-#
-# Reverts to the default font for the paragraph type.
-#
-# Arguments:
-# None.
-
-proc endFont {} {
- global state file
-
- if {[string compare $state(curFont) ""]} {
- puts -nonewline $file $state(end$state(curFont))
- set state(curFont) ""
- }
-}
-
-
-# textSetup --
-#
-# This procedure is called the first time that text is output for a
-# paragraph. It outputs the header information for the paragraph.
-#
-# Arguments:
-# None.
-
-proc textSetup {} {
- global file state
-
- if $state(breakPending) {
- puts $file "\\line"
- }
- if $state(paragraphPending) {
- puts $file [format "\\par\n\\pard\\fi%.0f\\li%.0f" \
- $state(firstIndent) $state(leftIndent)]
- foreach tab $state(tabs) {
- puts $file [format "\\tx%.0f" $tab]
- }
- set state(tabs) {}
- if {$state(sb)} {
- puts $file "\\sb$state(sb)"
- set state(sb) 0
- }
- }
- set state(breakPending) 0
- set state(paragraphPending) 0
-}
-
-
-# text --
-#
-# This procedure adds text to the current state(paragraph). If this is
-# the first text in the state(paragraph) then header information for the
-# state(paragraph) is output before the text.
-#
-# Arguments:
-# string - Text to output in the state(paragraph).
-
-proc text {string} {
- global file state chars
-
- textSetup
- set string [string map [list \
- "\\" "\\\\" \
- "\{" "\\\{" \
- "\}" "\\\}" \
- "\t" {\tab } \
- '' "\\rdblquote " \
- `` "\\ldblquote " \
- "\xB7" "\\bullet " \
- ] $string]
-
- # Check if this is the beginning of an international character string.
- # If so, look up the sequence in the chars table and substitute the
- # appropriate hex value.
-
- if {$state(intl)} {
- if {[regexp {^'([^']*)'} $string dummy ch]} {
- if {[info exists chars($ch)]} {
- regsub {^'[^']*'} $string "\\\\'$chars($ch)" string
- } else {
- puts stderr "Unknown international character '$ch'"
- }
- }
- set state(intl) 0
- }
-
- switch $state(textState) {
- REF {
- if {$state(inTP) == 0} {
- set string [insertRef $string]
- }
- }
- SEE {
- global topics curPkg curSect
- foreach i [split $string] {
- if {![regexp -nocase {^[a-z_0-9]+} [string trim $i] i ]} {
- continue
- }
- if {![catch {set ref $topics($curPkg,$curSect,$i)} ]} {
- regsub $i $string [link $i $ref] string
- }
- }
- }
- KEY {
- return
- }
- }
- puts -nonewline $file "$string"
-}
-
-
-
-# insertRef --
-#
-# This procedure looks for a string in the cross reference table and
-# generates a hot-link to the appropriate topic. Tries to find the
-# nearest reference in the manual.
-#
-# Arguments:
-# string - Text to output in the state(paragraph).
-
-proc insertRef {string} {
- global NAME_file curPkg curSect topics curID
- set path {}
- set string [string trim $string]
- set ref {}
- if {[info exists topics($curPkg,$curSect,$string)]} {
- set ref $topics($curPkg,$curSect,$string)
- } else {
- set sites [array names topics "$curPkg,*,$string"]
- set count [llength $sites]
- if {$count > 0} {
- set ref $topics([lindex $sites 0])
- } else {
- set sites [array names topics "*,*,$string"]
- set count [llength $sites]
- if {$count > 0} {
- set ref $topics([lindex $sites 0])
- }
- }
- }
-
- if {($ref != "") && ($ref != $curID)} {
- set string [link $string $ref]
- }
- return $string
-}
-
-
-
-# macro --
-#
-# This procedure is invoked to process macro invocations that start
-# with "." (instead of ').
-#
-# Arguments:
-# name - The name of the macro (without the ".").
-# args - Any additional arguments to the macro.
-
-proc macro {name args} {
- global state file
- switch $name {
- AP {
- if {[llength $args] != 3 && [llength $args] != 2} {
- puts stderr "Bad .AP macro: .$name [join $args " "]"
- }
- newPara 3.75i -3.75i
- setTabs {1.25i 2.5i 3.75i}
- font B
- text [lindex $args 0]
- tab
- font I
- text [lindex $args 1]
- tab
- font R
- if {[llength $args] == 3} {
- text "([lindex $args 2])"
- }
- tab
- }
- AS {
- # next page and previous page
- }
- br {
- lineBreak
- }
- BS {}
- BE {}
- CE {
- puts -nonewline $::file "\\f0\\fs20 "
- set state(noFill) 0
- set state(breakPending) 0
- newPara ""
- set state(leftIndent) [expr {$state(leftIndent) - $state(offset)}]
- set state(sb) 80
- }
- CS {
- # code section
- set state(noFill) 1
- newPara ""
- set state(leftIndent) [expr {$state(leftIndent) + $state(offset)}]
- set state(sb) 80
- puts -nonewline $::file "\\f1\\fs18 "
- }
- DE {
- set state(noFill) 0
- decrNestingLevel
- newPara 0i
- }
- DS {
- set state(noFill) 1
- incrNestingLevel
- newPara 0i
- }
- fi {
- set state(noFill) 0
- }
- IP {
- IPmacro $args
- }
- LP {
- newPara 0i
- set state(sb) 80
- }
- ne {
- }
- nf {
- set state(noFill) 1
- }
- OP {
- if {[llength $args] != 3} {
- puts stderr "Bad .OP macro: .$name [join $args " "]"
- }
- set state(nestingLevel) 0
- newPara 0i
- set state(sb) 120
- setTabs 4c
- text "Command-Line Name:"
- tab
- font B
- set x [lindex $args 0]
- regsub -all {\\-} $x - x
- text $x
- lineBreak
- font R
- text "Database Name:"
- tab
- font B
- text [lindex $args 1]
- lineBreak
- font R
- text "Database Class:"
- tab
- font B
- text [lindex $args 2]
- font R
- set state(inTP) 0
- newPara 0.5i
- set state(sb) 80
- }
- PP {
- newPara 0i
- set state(sb) 120
- }
- RE {
- decrNestingLevel
- }
- RS {
- incrNestingLevel
- }
- SE {
- font R
- set state(noFill) 0
- set state(nestingLevel) 0
- newPara 0i
- text "See the "
- font B
- set temp $state(textState)
- set state(textState) REF
- text options
- set state(textState) $temp
- font R
- text " manual entry for detailed descriptions of the above options."
- }
- SH {
- SHmacro $args
- }
- SS {
- SHmacro $args subsection
- }
- SO {
- SHmacro "STANDARD OPTIONS"
- set state(nestingLevel) 0
- newPara 0i
- setTabs {4c 8c 12c}
- font B
- set state(noFill) 1
- }
- so {
- if {$args ne "man.macros"} {
- puts stderr "Unknown macro: .$name [join $args " "]"
- }
- }
- sp { ;# needs work
- if {$args eq ""} {
- set count 1
- } else {
- set count [lindex $args 0]
- }
- while {$count > 0} {
- lineBreak
- incr count -1
- }
- }
- ta {
- setTabs $args
- }
- TH {
- THmacro $args
- }
- TP {
- TPmacro $args
- }
- UL { ;# underline
- puts -nonewline $file "{\\ul "
- text [lindex $args 0]
- puts -nonewline $file "}"
- if {[llength $args] == 2} {
- text [lindex $args 1]
- }
- }
- VE {}
- VS {}
- QW {
- formattedText "``[lindex $args 0]''[lindex $args 1] "
- }
- MT {
- text "``'' "
- }
- PQ {
- formattedText \
- "(``[lindex $args 0]''[lindex $args 1])[lindex $args 2] "
- }
- QR {
- formattedText "``[lindex $args 0]"
- dash
- formattedText "[lindex $args 1]''[lindex $args 2] "
- }
- default {
- puts stderr "Unknown macro: .$name [join $args " "]"
- }
- }
-}
-
-
-# link --
-#
-# This procedure returns the string for a hot link to a different
-# context location.
-#
-# Arguments:
-# label - String to display in hot-spot.
-# id - Context string to jump to.
-
-proc link {label id} {
- return "{\\uldb $label}{\\v $id}"
-}
-
-
-# font --
-#
-# This procedure is invoked to handle font changes in the text
-# being output.
-#
-# Arguments:
-# type - Type of font: R, I, B, or S.
-
-proc font {type} {
- global state
- switch $type {
- P -
- R {
- endFont
- if {$state(textState) eq "REF"} {
- set state(textState) INSERT
- }
- }
- C -
- B {
- beginFont Code
- if {$state(textState) eq "INSERT"} {
- set state(textState) REF
- }
- }
- I {
- beginFont Emphasis
- }
- S {
- }
- default {
- puts stderr "Unknown font: $type"
- }
- }
-}
-
-
-
-# formattedText --
-#
-# Insert a text string that may also have \fB-style font changes
-# and a few other backslash sequences in it.
-#
-# Arguments:
-# text - Text to insert.
-
-proc formattedText {text} {
- global chars
-
- while {$text ne ""} {
- set index [string first \\ $text]
- if {$index < 0} {
- text $text
- return
- }
- text [string range $text 0 [expr {$index-1}]]
- set c [string index $text [expr {$index+1}]]
- switch -- $c {
- f {
- font [string index $text [expr {$index+2}]]
- set text [string range $text [expr {$index+3}] end]
- }
- e {
- text "\\"
- set text [string range $text [expr {$index+2}] end]
- }
- - {
- dash
- set text [string range $text [expr {$index+2}] end]
- }
- & - | {
- set text [string range $text [expr {$index+2}] end]
- }
- ( {
- char [string range $text $index [expr {$index+3}]]
- set text [string range $text [expr {$index+4}] end]
- }
- default {
- puts stderr "Unknown sequence: \\$c"
- set text [string range $text [expr {$index+2}] end]
- }
- }
- }
-}
-
-
-# dash --
-#
-# This procedure is invoked to handle dash characters ("\-" in
-# troff). It outputs a special dash character.
-#
-# Arguments:
-# None.
-
-proc dash {} {
- global state
- if {[string equal $state(textState) "NAME"]} {
- set state(textState) 0
- }
- text "-"
-}
-
-
-# tab --
-#
-# This procedure is invoked to handle tabs in the troff input.
-# Right now it does nothing.
-#
-# Arguments:
-# None.
-
-proc tab {} {
- global file
-
- textSetup
- puts -nonewline $file "\\tab "
-}
-
-
-# setTabs --
-#
-# This procedure handles the ".ta" macro, which sets tab stops.
-#
-# Arguments:
-# tabList - List of tab stops in *roff format
-
-proc setTabs {tabList} {
- global file state
-
- set state(tabs) {}
- foreach arg $tabList {
- if {[string match +* $arg]} {
- set relativeTo [lindex $state(tabs) end]
- set arg [string range $arg 1 end]
- } else {
- # Local left margin
- set relativeTo [expr {$state(leftMargin) \
- + ($state(offset) * $state(nestingLevel))}]
- }
- if {[regexp {^\\w'([^']*)'u$} $arg -> submatch]} {
- # Magic factor!
- set distance [expr {[string length $submatch] * 86.4}]
- } else {
- set distance [getTwips $arg]
- }
- lappend state(tabs) [expr {round($distance + $relativeTo)}]
- }
-}
-
-
-# lineBreak --
-#
-# Generates a line break in the HTML output.
-#
-# Arguments:
-# None.
-
-proc lineBreak {} {
- global state
- textSetup
- set state(breakPending) 1
-}
-
-
-
-# newline --
-#
-# This procedure is invoked to handle newlines in the troff input.
-# It outputs either a space character or a newline character, depending
-# on fill mode.
-#
-# Arguments:
-# None.
-
-proc newline {} {
- global state
-
- if {$state(inTP)} {
- set state(inTP) 0
- lineBreak
- } elseif {$state(noFill)} {
- lineBreak
- } else {
- text " "
- }
-}
-
-
-# pageBreak --
-#
-# This procedure is invoked to generate a page break.
-#
-# Arguments:
-# None.
-
-proc pageBreak {} {
- global file curVer
- if {[string equal $curVer ""]} {
- puts $file {\page}
- } else {
- puts $file {\par}
- puts $file {\pard\sb400\qc}
- puts $file "Last change: $curVer\\page"
- }
-}
-
-
-# char --
-#
-# This procedure is called to handle a special character.
-#
-# Arguments:
-# name - Special character named in troff \x or \(xx construct.
-
-proc char {name} {
- global file state
-
- switch -exact $name {
- {\o} {
- set state(intl) 1
- }
- {\ } {
- textSetup
- puts -nonewline $file " "
- }
- {\0} {
- textSetup
- puts -nonewline $file " \\emspace "
- }
- {\\} - {\e} {
- textSetup
- puts -nonewline $file "\\\\"
- }
- {\(+-} {
- textSetup
- puts -nonewline $file "\\'b1 "
- }
- {\%} - {\|} {
- }
- {\(->} {
- textSetup
- puts -nonewline $file "->"
- }
- {\(bu} {
- textSetup
- puts -nonewline $file "\\bullet "
- }
- {\(co} {
- textSetup
- puts -nonewline $file "\\'a9 "
- }
- {\(mi} {
- textSetup
- puts -nonewline $file "-"
- }
- {\(mu} {
- textSetup
- puts -nonewline $file "\\'d7 "
- }
- {\(em} - {\(en} {
- textSetup
- puts -nonewline $file "-"
- }
- {\(fm} {
- textSetup
- puts -nonewline $file "\\'27 "
- }
- default {
- puts stderr "Unknown character: $name"
- }
- }
-}
-
-
-# macro2 --
-#
-# This procedure handles macros that are invoked with a leading "'"
-# character instead of space. Right now it just generates an
-# error diagnostic.
-#
-# Arguments:
-# name - The name of the macro (without the ".").
-# args - Any additional arguments to the macro.
-
-proc macro2 {name args} {
- puts stderr "Unknown macro: '$name [join $args " "]"
-}
-
-
-
-# SHmacro --
-#
-# Subsection head; handles the .SH and .SS macros.
-#
-# Arguments:
-# name - Section name.
-
-proc SHmacro {argList {style section}} {
- global file state
-
- set args [join $argList " "]
- if {[llength $argList] < 1} {
- puts stderr "Bad .SH macro: .SH $args"
- }
-
- # control what the text proc does with text
-
- switch $args {
- NAME {set state(textState) NAME}
- DESCRIPTION {set state(textState) INSERT}
- INTRODUCTION {set state(textState) INSERT}
- "WIDGET-SPECIFIC OPTIONS" {set state(textState) INSERT}
- "SEE ALSO" {set state(textState) SEE}
- KEYWORDS {set state(textState) KEY; return}
- }
-
- if {$state(breakPending) != -1} {
- set state(breakPending) 1
- } else {
- set state(breakPending) 0
- }
- set state(noFill) 0
- if {[string compare "subsection" $style] == 0} {
- nextPara .25i
- } else {
- nextPara 0i
- }
- font B
- text $args
- font R
- nextPara .5i
-}
-
-# IPmacro --
-#
-# This procedure is invoked to handle ".IP" macros, which may take any
-# of the following forms:
-#
-# .IP [1] Translate to a "1Step" state(paragraph).
-# .IP [x] (x > 1) Translate to a "Step" state(paragraph).
-# .IP Translate to a "Bullet" state(paragraph).
-# .IP text count Translate to a FirstBody state(paragraph) with special
-# indent and tab stop based on "count", and tab after
-# "text".
-#
-# Arguments:
-# argList - List of arguments to the .IP macro.
-#
-# HTML limitations: 'count' in '.IP text count' is ignored.
-
-proc IPmacro {argList} {
- global file state
-
- set length [llength $argList]
- foreach {text indent} $argList break
- if {$length > 2} {
- puts stderr "Bad .IP macro: .IP [join $argList " "]"
- }
-
- if {$length == 0} {
- set text {\(bu}
- set indent 5
- } elseif {$length == 1} {
- set indent 5
- }
- if {$text == {\(bu}} {
- set text "\xB7"
- }
-
- set tab [expr {$indent * 0.1}]i
- newPara $tab -$tab
- set state(sb) 80
- setTabs $tab
- formattedText $text
- tab
-}
-
-# TPmacro --
-#
-# This procedure is invoked to handle ".TP" macros, which may take any
-# of the following forms:
-#
-# .TP x Translate to an state(indent)ed state(paragraph) with the
-# specified state(indent) (in 100 twip units).
-# .TP Translate to an state(indent)ed state(paragraph) with
-# default state(indent).
-#
-# Arguments:
-# argList - List of arguments to the .IP macro.
-#
-# HTML limitations: 'x' in '.TP x' is ignored.
-
-proc TPmacro {argList} {
- global state
- set length [llength $argList]
- if {$length == 0} {
- set val 0.5i
- } else {
- set val [expr {([lindex $argList 0] * 100.0)/1440}]i
- }
- newPara $val -$val
- setTabs $val
- set state(inTP) 1
- set state(sb) 120
-}
-
-
-# THmacro --
-#
-# This procedure handles the .TH macro. It generates the non-scrolling
-# header section for a given man page, and enters information into the
-# table of contents. The .TH macro has the following form:
-#
-# .TH name section date footer header
-#
-# Arguments:
-# argList - List of arguments to the .TH macro.
-
-proc THmacro {argList} {
- global file curPkg curSect curID id_keywords state curVer bitmap
-
- if {[llength $argList] != 5} {
- set args [join $argList " "]
- puts stderr "Bad .TH macro: .TH $args"
- }
- incr curID
- set name [lindex $argList 0] ;# Tcl_UpVar
- set page [lindex $argList 1] ;# 3
- set curVer [lindex $argList 2] ;# 7.4
- set curPkg [lindex $argList 3] ;# Tcl
- set curSect [lindex $argList 4] ;# {Tcl Library Procedures}
-
- regsub -all {\\ } $curSect { } curSect ;# Clean up for [incr\ Tcl]
-
- puts $file "#{\\footnote $curID}" ;# Context string
- puts $file "\${\\footnote $name}" ;# Topic title
- set browse "${curSect}${name}"
- regsub -all {[ _-]} $browse {} browse
- puts $file "+{\\footnote $browse}" ;# Browse sequence
-
- # Suppress duplicates
- foreach i $id_keywords($curID) {
- set keys($i) 1
- }
- foreach i [array names keys] {
- set i [string trim $i]
- if {[string length $i] > 0} {
- puts $file "K{\\footnote $i}" ;# Keyword strings
- }
- }
- unset keys
- puts $file "\\pard\\tx3000\\sb100\\sa100\\fs24\\keepn"
- font B
- text $name
- tab
- text $curSect
- font R
- if {[info exists bitmap]} {
- # a right justified bitmap
- puts $file "\\\{bmrt $bitmap\\\}"
- }
- puts $file "\\fs20"
- set state(breakPending) -1
-}
-
-# nextPara --
-#
-# Set the indents for a new paragraph, and start a paragraph break
-#
-# Arguments:
-# leftIndent - The new left margin for body lines.
-# firstIndent - The offset from the left margin for the first line.
-
-proc nextPara {leftIndent {firstIndent 0i}} {
- global state
- set state(leftIndent) [getTwips $leftIndent]
- set state(firstIndent) [getTwips $firstIndent]
- set state(paragraphPending) 1
-}
-
-
-# newPara --
-#
-# This procedure sets the left and hanging state(indent)s for a line.
-# State(Indent)s are specified in units of inches or centimeters, and are
-# relative to the current nesting level and left margin.
-#
-# Arguments:
-# leftState(Indent) - The new left margin for lines after the first.
-# firstState(Indent) - The new left margin for the first line of a state(paragraph).
-
-proc newPara {leftIndent {firstIndent 0i}} {
- global state file
- if $state(paragraph) {
- puts -nonewline $file "\\line\n"
- }
- if {$leftIndent ne ""} {
- set state(leftIndent) [expr {$state(leftMargin) \
- + ($state(offset) * $state(nestingLevel)) \
- + [getTwips $leftIndent]}]
- }
- set state(firstIndent) [getTwips $firstIndent]
- set state(paragraphPending) 1
-}
-
-
-# getTwips --
-#
-# This procedure converts a distance in inches or centimeters into
-# twips (1/1440 of an inch).
-#
-# Arguments:
-# arg - A number followed by "i" or "c"
-
-proc getTwips {arg} {
- if {[scan $arg "%f%s" distance units] != 2} {
- puts stderr "bad distance \"$arg\""
- return 0
- }
- if {[string length $units] > 1} {
- puts stderr "additional characters after unit \"$arg\""
- set units [string index $units 0]
- }
- switch -- $units {
- c {
- set distance [expr {$distance * 567}]
- }
- i {
- set distance [expr {$distance * 1440}]
- }
- default {
- puts stderr "bad units in distance \"$arg\""
- return 0
- }
- }
- return $distance
-}
-
-# incrNestingLevel --
-#
-# This procedure does the work of the .RS macro, which increments
-# the number of state(indent)ations that affect things like .PP.
-#
-# Arguments:
-# None.
-
-proc incrNestingLevel {} {
- global state
-
- incr state(nestingLevel)
- set oldp $state(paragraph)
- set state(paragraph) 0
- newPara 0i
- set state(paragraph) $oldp
-}
-
-# decrNestingLevel --
-#
-# This procedure does the work of the .RE macro, which decrements
-# the number of indentations that affect things like .PP.
-#
-# Arguments:
-# None.
-
-proc decrNestingLevel {} {
- global state
-
- if {$state(nestingLevel) == 0} {
- puts stderr "Nesting level decremented below 0"
- } else {
- incr state(nestingLevel) -1
- }
-}
diff --git a/tools/man2html.tcl b/tools/man2html.tcl
deleted file mode 100644
index 28a6751..0000000
--- a/tools/man2html.tcl
+++ /dev/null
@@ -1,185 +0,0 @@
-#!/bin/sh
-# \
-exec tclsh "$0" ${1+"$@"}
-
-# man2html.tcl --
-#
-# This file contains procedures that work in conjunction with the
-# man2tcl program to generate a HTML files from Tcl manual entries.
-#
-# Copyright (c) 1996 Sun Microsystems, Inc.
-
-
-# sarray -
-#
-# Save an array to a file so that it can be sourced.
-#
-# Arguments:
-# file - Name of the output file
-# args - Name of the arrays to save
-#
-proc sarray {file args} {
- set file [open $file w]
- foreach a $args {
- upvar $a array
- if {![array exists array]} {
- puts "sarray: \"$a\" isn't an array"
- break
- }
-
- foreach name [lsort [array names array]] {
- regsub -all " " $name "\\ " name1
- puts $file "set ${a}($name1) \{$array($name)\}"
- }
- }
- close $file
-}
-
-
-# footer --
-#
-# Builds footer info for HTML pages
-#
-# Arguments:
-# packages - List of packages to link to.
-
-proc footer {packages} {
- lappend f "<HR>"
- set h {[}
- foreach package $packages {
- lappend h "<A HREF=\"../$package/contents.html\">$package</A>"
- lappend h "|"
- }
- lappend f [join [lreplace $h end end {]} ] " "]
- lappend f "<HR>"
- lappend f "<PRE>Copyright &#169; 1989-1994 The Regents of the University of California."
- lappend f "Copyright &#169; 1994-1996 Sun Microsystems, Inc."
- lappend f "</PRE>"
- return [join $f "\n"]
-}
-
-
-# doDir --
-#
-# Given a directory as argument, translate all the man pages in
-# that directory.
-#
-# Arguments:
-# dir - Name of the directory.
-
-proc doDir dir {
- foreach f [lsort [glob -directory $dir "*.\[13n\]"]] {
- do $f ;# defined in man2html1.tcl & man2html2.tcl
- }
-}
-
-
-# main --
-#
-# Main code for converting Tcl manual pages to HTML.
-#
-# Arguments:
-# argv - List of arguments to this script.
-
-proc main {argv} {
- global html_dir
- # Global vars used in man2html1.tcl and man2html2.tcl
- global NAME_file KEY_file lib state curFile file inDT textState nestStk
- global curFont fontStart fontEnd noFillCount footer
-
- if {[llength $argv] < 2} {
- puts stderr "usage: $::argv0 html_dir tcl_dir packages..."
- puts stderr "usage: $::argv0 -clean html_dir"
- exit 1
- }
-
- if {[lindex $argv 0] eq "-clean"} {
- set html_dir [lindex $argv 1]
- puts -nonewline "recursively remove: $html_dir? "
- flush stdout
- if {[gets stdin] eq "y"} {
- puts "removing: $html_dir"
- file delete -force $html_dir
- }
- exit 0
- }
-
- set html_dir [lindex $argv 0]
- set tcl_dir [lindex $argv 1]
- set packages [lrange $argv 2 end]
- set homeDir [file dirname [info script]]
-
- #### need to add glob capability to packages ####
-
- # make sure there are doc directories for each package
-
- foreach i $packages {
- if {![file exists $tcl_dir/$i/doc]} {
- puts stderr "Error: doc directory for package $i is missing"
- exit 1
- }
- if {![file isdirectory $tcl_dir/$i/doc]} {
- puts stderr "Error: $tcl_dir/$i/doc is not a directory"
- exit 1
- }
- }
-
- # we want to start with a clean sheet
-
- if {[file exists $html_dir]} {
- puts stderr "Error: HTML directory already exists"
- exit 1
- } else {
- file mkdir $html_dir
- }
-
- set footer [footer $packages]
-
- # make the hyperlink arrays and contents.html for all packages
-
- foreach package $packages {
- file mkdir $html_dir/$package
-
- # build hyperlink database arrays: NAME_file and KEY_file
- #
- puts "\nScanning man pages in $tcl_dir/$package/doc..."
- uplevel \#0 [list source $homeDir/man2html1.tcl]
-
- doDir $tcl_dir/$package/doc
-
- # clean up the NAME_file and KEY_file database arrays
- #
- catch {unset KEY_file()}
- foreach name [lsort [array names NAME_file]] {
- set file_name $NAME_file($name)
- if {[llength $file_name] > 1} {
- set file_name [lsort $file_name]
- puts "Warning: '$name' multiply defined in: $file_name;\
- using last"
- set NAME_file($name) [lindex $file_name end]
- }
- }
- # sarray $html_dir/$package/xref.tcl NAME_file KEY_file
-
- # build the contents file from NAME_file
- #
- puts "\nGenerating contents.html for $package"
- doContents $html_dir/$package/contents.html $lib ;# defined in man2html1.tcl
-
- # now translate the man pages to HTML pages
- #
- uplevel \#0 [list source $homeDir/man2html2.tcl]
- puts "\nBuilding html pages from man pages in $tcl_dir/$package/doc..."
- doDir $tcl_dir/$package/doc
-
- unset NAME_file
- }
-}
-
-
-if [catch { main $argv } result] {
- global errorInfo
- puts stderr $result
- puts stderr "in"
- puts stderr $errorInfo
-}
diff --git a/tools/man2html1.tcl b/tools/man2html1.tcl
deleted file mode 100644
index 7a789f7..0000000
--- a/tools/man2html1.tcl
+++ /dev/null
@@ -1,258 +0,0 @@
-# man2html1.tcl --
-#
-# This file defines procedures that are used during the first pass of the
-# man page to html conversion process. It is sourced by h.tcl.
-#
-# Copyright (c) 1996 Sun Microsystems, Inc.
-
-# Global variables used by these scripts:
-#
-# state - state variable that controls action of text proc.
-#
-# curFile - tail of current man page.
-#
-# file - file pointer; for both xref.tcl and contents.html
-#
-# NAME_file - array indexed by NAME and containing file names used
-# for hyperlinks.
-#
-# KEY_file - array indexed by KEYWORD and containing file names used
-# for hyperlinks.
-#
-# lib - contains package name. Used to label section in contents.html
-#
-# inDT - in dictionary term.
-
-
-# text --
-#
-# This procedure adds entries to the hypertext arrays NAME_file
-# and KEY_file.
-#
-# DT: might do this: if first word of $dt matches $name and [llength $name==1]
-# and [llength $dt > 1], then add to NAME_file.
-#
-# Arguments:
-# string - Text to index.
-
-proc text string {
- global state curFile NAME_file KEY_file inDT
-
- switch $state {
- NAME {
- foreach i [split $string ","] {
- lappend NAME_file([string trim $i]) $curFile
- }
- }
- KEY {
- foreach i [split $string ","] {
- lappend KEY_file([string trim $i]) $curFile
- }
- }
- DT -
- OFF -
- DASH {}
- default {
- puts stderr "text: unknown state: $state"
- }
- }
-}
-
-
-# macro --
-#
-# This procedure is invoked to process macro invocations that start
-# with "." (instead of ').
-#
-# Arguments:
-# name - The name of the macro (without the ".").
-# args - Any additional arguments to the macro.
-
-proc macro {name args} {
- switch $name {
- SH - SS {
- global state
-
- switch $args {
- NAME {
- if {$state eq "INIT"} {
- set state NAME
- }
- }
- DESCRIPTION {set state DT}
- INTRODUCTION {set state DT}
- KEYWORDS {set state KEY}
- default {set state OFF}
- }
-
- }
- TP {
- global inDT
- set inDT 1
- }
- TH {
- global lib state inDT
- set inDT 0
- set state INIT
- if {[llength $args] != 5} {
- set args [join $args " "]
- puts stderr "Bad .TH macro: .$name $args"
- }
- set lib [lindex $args 3] ;# Tcl or Tk
- }
- }
-}
-
-
-# dash --
-#
-# This procedure is invoked to handle dash characters ("\-" in
-# troff). It only function in pass1 is to terminate the NAME state.
-#
-# Arguments:
-# None.
-
-proc dash {} {
- global state
- if {$state eq "NAME"} {
- set state DASH
- }
-}
-
-
-# newline --
-#
-# This procedure is invoked to handle newlines in the troff input.
-# It's only purpose is to terminate a DT (dictionary term).
-#
-# Arguments:
-# None.
-
-proc newline {} {
- global inDT
- set inDT 0
-}
-
-
-# initGlobals, tab, font, char, macro2 --
-#
-# These procedures do nothing during the first pass.
-#
-# Arguments:
-# None.
-
-proc initGlobals {} {}
-proc tab {} {}
-proc font type {}
-proc char name {}
-proc macro2 {name args} {}
-
-
-# doListing --
-#
-# Writes an ls like list to a file. Searches NAME_file for entries
-# that match the input pattern.
-#
-# Arguments:
-# file - Output file pointer.
-# pattern - glob style match pattern
-
-proc doListing {file pattern} {
- global NAME_file
-
- set max_len 0
- foreach name [lsort [array names NAME_file]] {
- set ref $NAME_file($name)
- if [string match $pattern $ref] {
- lappend type $name
- if {[string length $name] > $max_len} {
- set max_len [string length $name]
- }
- }
- }
- if [catch {llength $type} ] {
- puts stderr " doListing: no names matched pattern ($pattern)"
- return
- }
- incr max_len
- set ncols [expr {90/$max_len}]
- set nrows [expr {int(ceil([llength $type] / double($ncols)))} ]
-
-# ? max_len ncols nrows
-
- set index 0
- foreach f $type {
- lappend row([expr {$index % $nrows}]) $f
- incr index
- }
-
- puts -nonewline $file "<PRE>"
- for {set i 0} {$i<$nrows} {incr i} {
- foreach name $row($i) {
- set str [format "%-*s" $max_len $name]
- regsub $name $str "<A HREF=\"$NAME_file($name).html\">$name</A>" str
- puts -nonewline $file $str
- }
- puts $file {}
- }
- puts $file "</PRE>"
-}
-
-
-# doContents --
-#
-# Generates a HTML contents file using the NAME_file array
-# as its input database.
-#
-# Arguments:
-# file - name of the contents file.
-# packageName - string used in the title and sub-heads of the HTML
-# page. Normally name of the package without version
-# numbers.
-
-proc doContents {file packageName} {
- global footer
-
- set file [open $file w]
-
- puts $file "<HTML><HEAD><TITLE>$packageName Manual</TITLE></HEAD><BODY>"
- puts $file "<H3>$packageName</H3>"
- doListing $file "*.1"
-
- puts $file "<HR><H3>$packageName Commands</H3>"
- doListing $file "*.n"
-
- puts $file "<HR><H3>$packageName Library</H3>"
- doListing $file "*.3"
-
- puts $file $footer
- puts $file "</BODY></HTML>"
- close $file
-}
-
-
-# do --
-#
-# This is the toplevel procedure that searches a man page
-# for hypertext links. It builds a data base consisting of
-# two arrays: NAME_file and KEY file. It runs the man2tcl
-# program to turn the man page into a script, then it evals
-# that script.
-#
-# Arguments:
-# fileName - Name of the file to scan.
-
-proc do fileName {
- global curFile
- set curFile [file tail $fileName]
- set file stdout
- puts " Pass 1 -- $fileName"
- flush stdout
- if [catch {eval [exec man2tcl [glob $fileName]]} msg] {
- global errorInfo
- puts stderr $msg
- puts "in"
- puts $errorInfo
- exit 1
- }
-}
diff --git a/tools/man2html2.tcl b/tools/man2html2.tcl
deleted file mode 100644
index 19d6ce0..0000000
--- a/tools/man2html2.tcl
+++ /dev/null
@@ -1,927 +0,0 @@
-##############################################################################
-# man2html2.tcl --
-#
-# This file defines procedures that are used during the second pass of the man
-# page to html conversion process. It is sourced by man2html.tcl.
-#
-# Copyright (c) 1996 Sun Microsystems, Inc.
-
-# Global variables used by these scripts:
-#
-# NAME_file - array indexed by NAME and containing file names used for
-# hyperlinks.
-#
-# textState - state variable defining action of 'text' proc.
-#
-# nestStk - stack oriented list containing currently active HTML tags (UL,
-# OL, DL). Local to 'nest' proc.
-#
-# inDT - set by 'TPmacro', cleared by 'newline'. Used to insert the
-# tag while in a dictionary list <DL>.
-#
-# curFont - Name of special font that is currently in use. Null means the
-# default paragraph font is being used.
-#
-# file - Where to output the generated HTML.
-#
-# fontStart - Array to map font names to starting sequences.
-#
-# fontEnd - Array to map font names to ending sequences.
-#
-# noFillCount - Non-zero means don't fill the next $noFillCount lines: force a
-# line break at each newline. Zero means filling is enabled, so
-# don't output line breaks for each newline.
-#
-# footer - info inserted at bottom of each page. Normally read from the
-# xref.tcl file
-
-##############################################################################
-# initGlobals --
-#
-# This procedure is invoked to set the initial values of all of the global
-# variables, before processing a man page.
-#
-# Arguments:
-# None.
-
-proc initGlobals {} {
- global file noFillCount textState
- global fontStart fontEnd curFont inPRE charCnt inTable
-
- nest init
- set inPRE 0
- set inTable 0
- set textState 0
- set curFont ""
- set fontStart(Code) "<B>"
- set fontStart(Emphasis) "<I>"
- set fontEnd(Code) "</B>"
- set fontEnd(Emphasis) "</I>"
- set noFillCount 0
- set charCnt 0
- setTabs 0.5i
-}
-
-##############################################################################
-# beginFont --
-#
-# Arranges for future text to use a special font, rather than the default
-# paragraph font.
-#
-# Arguments:
-# font - Name of new font to use.
-
-proc beginFont font {
- global curFont file fontStart
-
- if {$curFont eq $font} {
- return
- }
- endFont
- puts -nonewline $file $fontStart($font)
- set curFont $font
-}
-
-##############################################################################
-# endFont --
-#
-# Reverts to the default font for the paragraph type.
-#
-# Arguments:
-# None.
-
-proc endFont {} {
- global curFont file fontEnd
-
- if {$curFont ne ""} {
- puts -nonewline $file $fontEnd($curFont)
- set curFont ""
- }
-}
-
-##############################################################################
-# text --
-#
-# This procedure adds text to the current paragraph. If this is the first text
-# in the paragraph then header information for the paragraph is output before
-# the text.
-#
-# Arguments:
-# string - Text to output in the paragraph.
-
-proc text string {
- global file textState inDT charCnt inTable
-
- set pos [string first "\t" $string]
- if {$pos >= 0} {
- text [string range $string 0 [expr {$pos-1}]]
- tab
- text [string range $string [expr {$pos+1}] end]
- return
- }
- if {$inTable} {
- if {$inTable == 1} {
- puts -nonewline $file <TR>
- set inTable 2
- }
- puts -nonewline $file <TD>
- }
- incr charCnt [string length $string]
- regsub -all {&} $string {\&amp;} string
- regsub -all {<} $string {\&lt;} string
- regsub -all {>} $string {\&gt;} string
- regsub -all \" $string {\&quot;} string
- switch -exact -- $textState {
- REF {
- if {$inDT eq ""} {
- set string [insertRef $string]
- }
- }
- SEE {
- global NAME_file
- foreach i [split $string] {
- if {![regexp -nocase {^[a-z_]+} [string trim $i] i]} {
-# puts "Warning: $i in SEE ALSO not found"
- continue
- }
- if {![catch { set ref $NAME_file($i) }]} {
- regsub $i $string "<A HREF=\"$ref.html\">$i</A>" string
- }
- }
- }
- }
- puts -nonewline $file "$string"
- if {$inTable} {
- puts -nonewline $file </TD>
- }
-}
-
-##############################################################################
-# insertRef --
-#
-# Arguments:
-# string - Text to output in the paragraph.
-
-proc insertRef string {
- global NAME_file self
- set path {}
- if {![catch { set ref $NAME_file([string trim $string]) }]} {
- if {"$ref.html" ne $self} {
- set string "<A HREF=\"${path}$ref.html\">$string</A>"
-# puts "insertRef: $self $ref.html ---$string--"
- }
- }
- return $string
-}
-
-##############################################################################
-# macro --
-#
-# This procedure is invoked to process macro invocations that start with "."
-# (instead of ').
-#
-# Arguments:
-# name - The name of the macro (without the ".").
-# args - Any additional arguments to the macro.
-
-proc macro {name args} {
- switch $name {
- AP {
- if {[llength $args] != 3} {
- puts stderr "Bad .AP macro: .$name [join $args " "]"
- }
- setTabs {1.25i 2.5i 3.75i}
- TPmacro {}
- font B
- text "[lindex $args 0] "
- font I
- text "[lindex $args 1]"
- font R
- text " ([lindex $args 2])"
- newline
- }
- AS {} ;# next page and previous page
- br {
- lineBreak
- }
- BS {}
- BE {}
- CE {
- global file noFillCount inPRE
- puts $file </PRE></BLOCKQUOTE>
- set inPRE 0
- }
- CS { ;# code section
- global file noFillCount inPRE
- puts -nonewline $file <BLOCKQUOTE><PRE>
- set inPRE 1
- }
- DE {
- global file noFillCount inTable
- puts $file </TABLE></BLOCKQUOTE>
- set inTable 0
- set noFillCount 0
- }
- DS {
- global file noFillCount inTable
- puts -nonewline $file {<BLOCKQUOTE><TABLE BORDER="0">}
- set noFillCount 10000000
- set inTable 1
- }
- fi {
- global noFillCount
- set noFillCount 0
- }
- IP {
- IPmacro $args
- }
- LP {
- nest decr
- nest incr
- newPara
- }
- ne {
- }
- nf {
- global noFillCount
- set noFillCount 1000000
- }
- OP {
- global inDT file inPRE
- if {[llength $args] != 3} {
- puts stderr "Bad .OP macro: .$name [join $args " "]"
- }
- nest para DL DT
- set inPRE 1
- puts -nonewline $file <PRE>
- setTabs 4c
- text "Command-Line Name:"
- tab
- font B
- set x [lindex $args 0]
- regsub -all {\\-} $x - x
- text $x
- newline
- font R
- text "Database Name:"
- tab
- font B
- text [lindex $args 1]
- newline
- font R
- text "Database Class:"
- tab
- font B
- text [lindex $args 2]
- font R
- puts -nonewline $file </PRE>
- set inDT "\n<DD>" ;# next newline writes inDT
- set inPRE 0
- newline
- }
- PP {
- nest decr
- nest incr
- newPara
- }
- RE {
- nest decr
- }
- RS {
- nest incr
- }
- SE {
- global noFillCount textState inPRE file
-
- font R
- puts -nonewline $file </PRE>
- set inPRE 0
- set noFillCount 0
- nest reset
- newPara
- text "See the "
- font B
- set temp $textState
- set textState REF
- if {[llength $args] > 0} {
- text [lindex $args 0]
- } else {
- text options
- }
- set textState $temp
- font R
- text " manual entry for detailed descriptions of the above options."
- }
- SH {
- SHmacro $args
- }
- SS {
- SHmacro $args subsection
- }
- SO {
- global noFillCount inPRE file
-
- SHmacro "STANDARD OPTIONS"
- setTabs {4c 8c 12c}
- set noFillCount 1000000
- puts -nonewline $file <PRE>
- set inPRE 1
- font B
- }
- so {
- if {$args ne "man.macros"} {
- puts stderr "Unknown macro: .$name [join $args " "]"
- }
- }
- sp { ;# needs work
- if {$args eq ""} {
- set count 1
- } else {
- set count [lindex $args 0]
- }
- while {$count > 0} {
- lineBreak
- incr count -1
- }
- }
- ta {
- setTabs $args
- }
- TH {
- THmacro $args
- }
- TP {
- TPmacro $args
- }
- UL { ;# underline
- global file
- puts -nonewline $file "<B><U>"
- text [lindex $args 0]
- puts -nonewline $file "</U></B>"
- if {[llength $args] == 2} {
- text [lindex $args 1]
- }
- }
- VE {
-# global file
-# puts -nonewline $file "</FONT>"
- }
- VS {
-# global file
-# if {[llength $args] > 0} {
-# puts -nonewline $file "<BR>"
-# }
-# puts -nonewline $file "<FONT COLOR=\"GREEN\">"
- }
- QW {
- puts -nonewline $file "&\#147;"
- text [lindex $args 0]
- puts -nonewline $file "&\#148;"
- if {[llength $args] > 1} {
- text [lindex $args 1]
- }
- }
- PQ {
- puts -nonewline $file "(&\#147;"
- if {[lindex $args 0] eq {\N'34'}} {
- puts -nonewline $file \"
- } else {
- text [lindex $args 0]
- }
- puts -nonewline $file "&\#148;"
- if {[llength $args] > 1} {
- text [lindex $args 1]
- }
- puts -nonewline $file ")"
- if {[llength $args] > 2} {
- text [lindex $args 2]
- }
- }
- QR {
- puts -nonewline $file "&\#147;"
- text [lindex $args 0]
- puts -nonewline $file "&\#148;&\#150;&\#147;"
- text [lindex $args 1]
- puts -nonewline $file "&\#148;"
- if {[llength $args] > 2} {
- text [lindex $args 2]
- }
- }
- MT {
- puts -nonewline $file "&\#147;&\#148;"
- }
- default {
- puts stderr "Unknown macro: .$name [join $args " "]"
- }
- }
-
-# global nestStk; puts "$name [format "%-20s" $args] $nestStk"
-# flush stdout; flush stderr
-}
-
-##############################################################################
-# font --
-#
-# This procedure is invoked to handle font changes in the text being output.
-#
-# Arguments:
-# type - Type of font: R, I, B, or S.
-
-proc font type {
- global textState
- switch $type {
- P -
- R {
- endFont
- if {$textState eq "REF"} {
- set textState INSERT
- }
- }
- B {
- beginFont Code
- if {$textState eq "INSERT"} {
- set textState REF
- }
- }
- I {
- beginFont Emphasis
- }
- S {
- }
- default {
- puts stderr "Unknown font: $type"
- }
- }
-}
-
-##############################################################################
-# formattedText --
-#
-# Insert a text string that may also have \fB-style font changes and a few
-# other backslash sequences in it.
-#
-# Arguments:
-# text - Text to insert.
-
-proc formattedText text {
-# puts "formattedText: $text"
- while {$text ne ""} {
- set index [string first \\ $text]
- if {$index < 0} {
- text $text
- return
- }
- text [string range $text 0 [expr {$index-1}]]
- set c [string index $text [expr {$index+1}]]
- switch -- $c {
- f {
- font [string index $text [expr {$index+2}]]
- set text [string range $text [expr {$index+3}] end]
- }
- e {
- text \\
- set text [string range $text [expr {$index+2}] end]
- }
- - {
- dash
- set text [string range $text [expr {$index+2}] end]
- }
- | {
- set text [string range $text [expr {$index+2}] end]
- }
- default {
- puts stderr "Unknown sequence: \\$c"
- set text [string range $text [expr {$index+2}] end]
- }
- }
- }
-}
-
-##############################################################################
-# dash --
-#
-# This procedure is invoked to handle dash characters ("\-" in troff). It
-# outputs a special dash character.
-#
-# Arguments:
-# None.
-
-proc dash {} {
- global textState charCnt
- if {$textState eq "NAME"} {
- set textState 0
- }
- incr charCnt
- text "-"
-}
-
-##############################################################################
-# tab --
-#
-# This procedure is invoked to handle tabs in the troff input.
-#
-# Arguments:
-# None.
-
-proc tab {} {
- global inPRE charCnt tabString file
-# ? charCnt
- if {$inPRE == 1} {
- set pos [expr {$charCnt % [string length $tabString]}]
- set spaces [string first "1" [string range $tabString $pos end] ]
- text [format "%*s" [incr spaces] " "]
- } else {
-# puts "tab: found tab outside of <PRE> block"
- }
-}
-
-##############################################################################
-# setTabs --
-#
-# This procedure handles the ".ta" macro, which sets tab stops.
-#
-# Arguments:
-# tabList - List of tab stops, each consisting of a number
-# followed by "i" (inch) or "c" (cm).
-
-proc setTabs {tabList} {
- global file breakPending tabString
-
- # puts "setTabs: --$tabList--"
- set last 0
- set tabString {}
- set charsPerInch 14.
- set numTabs [llength $tabList]
- foreach arg $tabList {
- if {[string match +* $arg]} {
- set relative 1
- set arg [string range $arg 1 end]
- } else {
- set relative 0
- }
- # Always operate in relative mode for "measurement" mode
- if {[regexp {^\\w'(.*)'u$} $arg content]} {
- set distance [string length $content]
- } else {
- if {[scan $arg "%f%s" distance units] != 2} {
- puts stderr "bad distance \"$arg\""
- return 0
- }
- switch -- $units {
- c {
- set distance [expr {$distance * $charsPerInch / 2.54}]
- }
- i {
- set distance [expr {$distance * $charsPerInch}]
- }
- default {
- puts stderr "bad units in distance \"$arg\""
- continue
- }
- }
- }
- # ? distance
- if {$relative} {
- append tabString [format "%*s1" [expr {round($distance-1)}] " "]
- set last [expr {$last + $distance}]
- } else {
- append tabString [format "%*s1" [expr {round($distance-$last-1)}] " "]
- set last $distance
- }
- }
- # puts "setTabs: --$tabString--"
-}
-
-##############################################################################
-# lineBreak --
-#
-# Generates a line break in the HTML output.
-#
-# Arguments:
-# None.
-
-proc lineBreak {} {
- global file inPRE
- puts $file "<BR>"
-}
-
-##############################################################################
-# newline --
-#
-# This procedure is invoked to handle newlines in the troff input. It outputs
-# either a space character or a newline character, depending on fill mode.
-#
-# Arguments:
-# None.
-
-proc newline {} {
- global noFillCount file inDT inPRE charCnt inTable
-
- if {$inDT ne ""} {
- puts $file "\n$inDT"
- set inDT {}
- } elseif {$inTable} {
- if {$inTable > 1} {
- puts $file </tr>
- set inTable 1
- }
- } elseif {$noFillCount == 0 || $inPRE == 1} {
- puts $file {}
- } else {
- lineBreak
- incr noFillCount -1
- }
- set charCnt 0
-}
-
-##############################################################################
-# char --
-#
-# This procedure is called to handle a special character.
-#
-# Arguments:
-# name - Special character named in troff \x or \(xx construct.
-
-proc char name {
- global file charCnt
-
- incr charCnt
-# puts "char: $name"
- switch -exact $name {
- \\0 { ;# \0
- puts -nonewline $file " "
- }
- \\\\ { ;# \
- puts -nonewline $file "\\"
- }
- \\(+- { ;# +/-
- puts -nonewline $file "&#177;"
- }
- \\% {} ;# \%
- \\| { ;# \|
- }
- default {
- puts stderr "Unknown character: $name"
- }
- }
-}
-
-##############################################################################
-# macro2 --
-#
-# This procedure handles macros that are invoked with a leading "'" character
-# instead of space. Right now it just generates an error diagnostic.
-#
-# Arguments:
-# name - The name of the macro (without the ".").
-# args - Any additional arguments to the macro.
-
-proc macro2 {name args} {
- puts stderr "Unknown macro: '$name [join $args " "]"
-}
-
-##############################################################################
-# SHmacro --
-#
-# Subsection head; handles the .SH and .SS macros.
-#
-# Arguments:
-# name - Section name.
-# style - Type of section (optional)
-
-proc SHmacro {argList {style section}} {
- global file noFillCount textState charCnt
-
- set args [join $argList " "]
- if {[llength $argList] < 1} {
- puts stderr "Bad .SH macro: .$name $args"
- }
-
- set noFillCount 0
- nest reset
-
- set tag H3
- if {$style eq "subsection"} {
- set tag H4
- }
- puts -nonewline $file "<$tag>"
- text $args
- puts $file "</$tag>"
-
-# ? args textState
-
- # control what the text proc does with text
-
- switch $args {
- NAME {set textState NAME}
- DESCRIPTION {set textState INSERT}
- INTRODUCTION {set textState INSERT}
- "WIDGET-SPECIFIC OPTIONS" {set textState INSERT}
- "SEE ALSO" {set textState SEE}
- KEYWORDS {set textState 0}
- }
- set charCnt 0
-}
-
-##############################################################################
-# IPmacro --
-#
-# This procedure is invoked to handle ".IP" macros, which may take any of the
-# following forms:
-#
-# .IP [1] Translate to a "1Step" paragraph.
-# .IP [x] (x > 1) Translate to a "Step" paragraph.
-# .IP Translate to a "Bullet" paragraph.
-# .IP \(bu Translate to a "Bullet" paragraph.
-# .IP text count Translate to a FirstBody paragraph with
-# special indent and tab stop based on "count",
-# and tab after "text".
-#
-# Arguments:
-# argList - List of arguments to the .IP macro.
-#
-# HTML limitations: 'count' in '.IP text count' is ignored.
-
-proc IPmacro argList {
- global file
-
- setTabs 0.5i
- set length [llength $argList]
- if {$length == 0} {
- nest para UL LI
- return
- }
- # Special case for alternative mechanism for declaring bullets
- if {[lindex $argList 0] eq "\\(bu"} {
- nest para UL LI
- return
- }
- if {[regexp {^\[\d+\]$} [lindex $argList 0]]} {
- nest para OL LI
- return
- }
- nest para DL DT
- formattedText [lindex $argList 0]
- puts $file "\n<DD>"
- return
-}
-
-##############################################################################
-# TPmacro --
-#
-# This procedure is invoked to handle ".TP" macros, which may take any of the
-# following forms:
-#
-# .TP x Translate to an indented paragraph with the specified indent
-# (in 100 twip units).
-# .TP Translate to an indented paragraph with default indent.
-#
-# Arguments:
-# argList - List of arguments to the .IP macro.
-#
-# HTML limitations: 'x' in '.TP x' is ignored.
-
-proc TPmacro {argList} {
- global inDT
- nest para DL DT
- set inDT "\n<DD>" ;# next newline writes inDT
- setTabs 0.5i
-}
-
-##############################################################################
-# THmacro --
-#
-# This procedure handles the .TH macro. It generates the non-scrolling header
-# section for a given man page, and enters information into the table of
-# contents. The .TH macro has the following form:
-#
-# .TH name section date footer header
-#
-# Arguments:
-# argList - List of arguments to the .TH macro.
-
-proc THmacro {argList} {
- global file
-
- if {[llength $argList] != 5} {
- set args [join $argList " "]
- puts stderr "Bad .TH macro: .$name $args"
- }
- set name [lindex $argList 0] ;# Tcl_UpVar
- set page [lindex $argList 1] ;# 3
- set vers [lindex $argList 2] ;# 7.4
- set lib [lindex $argList 3] ;# Tcl
- set pname [lindex $argList 4] ;# {Tcl Library Procedures}
-
- puts -nonewline $file "<HTML><HEAD><TITLE>"
- text "$lib - $name ($page)"
- puts $file "</TITLE></HEAD><BODY>\n"
-
- puts -nonewline $file "<H1><CENTER>"
- text $pname
- puts $file "</CENTER></H1>\n"
-}
-
-##############################################################################
-# newPara --
-#
-# This procedure sets the left and hanging indents for a line. Indents are
-# specified in units of inches or centimeters, and are relative to the current
-# nesting level and left margin.
-#
-# Arguments:
-# None
-
-proc newPara {} {
- global file nestStk
-
- if {[lindex $nestStk end] ne "NEW"} {
- nest decr
- }
- puts -nonewline $file "<P>"
-}
-
-##############################################################################
-# nest --
-#
-# This procedure takes care of inserting the tags associated with the IP, TP,
-# RS, RE, LP and PP macros. Only 'nest para' takes arguments.
-#
-# Arguments:
-# op - operation: para, incr, decr, reset, init
-# listStart - begin list tag: OL, UL, DL.
-# listItem - item tag: LI, LI, DT.
-
-proc nest {op {listStart "NEW"} {listItem ""} } {
- global file nestStk inDT charCnt
-# puts "nest: $op $listStart $listItem"
- switch $op {
- para {
- set top [lindex $nestStk end]
- if {$top eq "NEW"} {
- set nestStk [lreplace $nestStk end end $listStart]
- puts $file "<$listStart>"
- } elseif {$top ne $listStart} {
- puts stderr "nest para: bad stack"
- exit 1
- }
- puts $file "\n<$listItem>"
- set charCnt 0
- }
- incr {
- lappend nestStk NEW
- }
- decr {
- if {[llength $nestStk] == 0} {
- puts stderr "nest error: nest length is zero"
- set nestStk NEW
- }
- set tag [lindex $nestStk end]
- if {$tag ne "NEW"} {
- puts $file "</$tag>"
- }
- set nestStk [lreplace $nestStk end end]
- }
- reset {
- while {[llength $nestStk] > 0} {
- nest decr
- }
- set nestStk NEW
- }
- init {
- set nestStk NEW
- set inDT {}
- }
- }
- set charCnt 0
-}
-
-##############################################################################
-# do --
-#
-# This is the toplevel procedure that translates a man page to HTML. It runs
-# the man2tcl program to turn the man page into a script, then it evals that
-# script.
-#
-# Arguments:
-# fileName - Name of the file to translate.
-
-proc do fileName {
- global file self html_dir package footer
- set self "[file tail $fileName].html"
- set file [open "$html_dir/$package/$self" w]
- puts " Pass 2 -- $fileName"
- flush stdout
- initGlobals
- if {[catch { eval [exec man2tcl [glob $fileName]] } msg]} {
- global errorInfo
- puts stderr $msg
- puts "in"
- puts stderr $errorInfo
- exit 1
- }
- nest reset
- puts $file $footer
- puts $file "</BODY></HTML>"
- close $file
-}
diff --git a/tools/man2tcl.c b/tools/man2tcl.c
deleted file mode 100644
index 8e59bea..0000000
--- a/tools/man2tcl.c
+++ /dev/null
@@ -1,424 +0,0 @@
-/*
- * man2tcl.c --
- *
- * This file contains a program that turns a man page of the form used
- * for Tcl and Tk into a Tcl script that invokes a Tcl command for each
- * construct in the man page. The script can then be eval'ed to translate
- * the manual entry into some other format such as MIF or HTML.
- *
- * Usage:
- *
- * man2tcl ?fileName?
- *
- * Copyright (c) 1995 Sun Microsystems, Inc.
- *
- * See the file "license.terms" for information on usage and redistribution of
- * this file, and for a DISCLAIMER OF ALL WARRANTIES.
- */
-
-static char sccsid[] = "@(#) man2tcl.c 1.3 95/08/12 17:34:08";
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <ctype.h>
-#include <errno.h>
-
-/*
- * Imported things that aren't defined in header files:
- */
-
-/*
- * Some <errno.h> define errno to be something complex and thread-aware; in
- * that case we definitely do not want to declare errno ourselves!
- */
-
-#ifndef errno
-extern int errno;
-#endif
-
-/*
- * Current line number, used for error messages.
- */
-
-static int lineNumber;
-
-/*
- * The variable below is set to 1 if an error occurs anywhere while reading in
- * the file.
- */
-
-static int status;
-
-/*
- * The variable below is set to 1 if output should be generated. If it's 0, it
- * means we're doing a pre-pass to make sure that the file can be properly
- * parsed.
- */
-
-static int writeOutput;
-
-#define PRINT(args) if (writeOutput) { printf args; }
-#define PRINTC(chr) if (writeOutput) { putc((chr), stdout); }
-
-/*
- * Prototypes for functions defined in this file:
- */
-
-static void DoMacro(char *line);
-static void DoText(char *line);
-static void QuoteText(char *string, int count);
-
-/*
- *----------------------------------------------------------------------
- *
- * main --
- *
- * This function is the main program, which does all of the work of the
- * program.
- *
- * Results:
- * None: exits with a 0 return status to indicate success, or 1 to
- * indicate that there were problems in the translation.
- *
- * Side effects:
- * A Tcl script is output to standard output. Error messages may be
- * output on standard error.
- *
- *----------------------------------------------------------------------
- */
-
-int
-main(
- int argc, /* Number of command-line arguments. */
- char **argv) /* Values of command-line arguments. */
-{
- FILE *f;
-#define MAX_LINE_SIZE 4000
- char line[MAX_LINE_SIZE];
- char *p;
-
- /*
- * Find the file to read, and open it if it isn't stdin.
- */
-
- if (argc == 1) {
- f = stdin;
- } else if (argc == 2) {
- f = fopen(argv[1], "r");
- if (f == NULL) {
- fprintf(stderr, "Couldn't read \"%s\": %s\n", argv[1],
- strerror(errno));
- exit(1);
- }
- } else {
- fprintf(stderr, "Usage: %s ?fileName?\n", argv[0]);
- }
-
- /*
- * Make two passes over the file. In the first pass, just check to make
- * sure we can handle everything. If there are problems, generate output
- * and stop. If everything is OK, make a second pass to actually generate
- * output.
- */
-
- for (writeOutput = 0; writeOutput < 2; writeOutput++) {
- lineNumber = 0;
- status = 0;
- while (fgets(line, MAX_LINE_SIZE, f) != NULL) {
- for (p = line; *p != 0; p++) {
- if (*p == '\n') {
- *p = 0;
- break;
- }
- }
- lineNumber++;
-
- if (((line[0] == '.') || (line[0] == '\'')) && (line[1] == '\\') && (line[2] == '\"')) {
- /*
- * This line is a comment. Ignore it.
- */
-
- continue;
- }
-
- if (strlen(line) >= MAX_LINE_SIZE -1) {
- fprintf(stderr, "Too long line. Max is %d chars.\n",
- MAX_LINE_SIZE - 1);
- exit(1);
- }
-
- if ((line[0] == '.') || (line[0] == '\'')) {
- /*
- * This line is a macro invocation.
- */
-
- DoMacro(line);
- } else {
- /*
- * This line is text, possibly with formatting characters
- * embedded in it.
- */
-
- DoText(line);
- }
- }
- if (status != 0) {
- break;
- }
- fseek(f, 0, SEEK_SET);
- }
- exit(status);
-}
-
-/*
- *----------------------------------------------------------------------
- *
- * DoMacro --
- *
- * This function is called to handle a macro invocation. It parses the
- * arguments to the macro and generates a Tcl command to handle the
- * invocation.
- *
- * Results:
- * None.
- *
- * Side effects:
- * A Tcl command is written to stdout.
- *
- *----------------------------------------------------------------------
- */
-
-static void
-DoMacro(
- char *line) /* The line of text that contains the macro
- * invocation. */
-{
- char *p, *end;
- int quote;
-
- /*
- * If there is no macro name, then just skip the whole line.
- */
-
- if ((line[1] == 0) || (isspace(line[1]))) {
- return;
- }
-
- PRINT(("macro"));
- if (*line != '.') {
- PRINT(("2"));
- }
-
- /*
- * Parse the arguments to the macro (including the name), in order.
- */
-
- p = line+1;
- while (1) {
- PRINTC(' ');
- if (*p == '"') {
- /*
- * The argument is delimited by quotes.
- */
-
- for (end = p+1; *end != '"'; end++) {
- if (*end == 0) {
- fprintf(stderr,
- "Unclosed quote in macro call on line %d.\n",
- lineNumber);
- status = 1;
- break;
- }
- }
- QuoteText(p+1, (end-(p+1)));
- } else {
- quote = 0;
- for (end = p+1; (*end != 0) && (quote || !isspace(*end)); end++) {
- if (*end == '\'') {
- quote = !quote;
- }
- }
- QuoteText(p, end-p);
- }
- if (*end == 0) {
- break;
- }
- p = end+1;
- while (isspace(*p)) {
- /*
- * Skip empty space before next argument.
- */
-
- p++;
- }
- if (*p == 0) {
- break;
- }
- }
- PRINTC('\n');
-}
-
-/*
- *----------------------------------------------------------------------
- *
- * DoText --
- *
- * This function is called to handle a line of troff text. It parses the
- * text, generating Tcl commands for text and for formatting stuff such
- * as font changes.
- *
- * Results:
- * None.
- *
- * Side effects:
- * Tcl commands are written to stdout.
- *
- *----------------------------------------------------------------------
- */
-
-static void
-DoText(
- char *line) /* The line of text. */
-{
- char *p, *end;
-
- /*
- * Divide the line up into pieces consisting of backslash sequences, tabs,
- * and other text.
- */
-
- p = line;
- while (*p != 0) {
- if (*p == '\t') {
- PRINT(("tab\n"));
- p++;
- } else if (*p != '\\') {
- /*
- * Ordinary text.
- */
-
- for (end = p+1; (*end != '\\') && (*end != 0); end++) {
- /* Empty loop body. */
- }
- PRINT(("text "));
- QuoteText(p, end-p);
- PRINTC('\n');
- p = end;
- } else {
- /*
- * A backslash sequence. There are particular ones that we
- * understand; output an error message for anything else and just
- * ignore the backslash.
- */
-
- p++;
- if (*p == 'f') {
- /*
- * Font change.
- */
-
- PRINT(("font %c\n", p[1]));
- p += 2;
- } else if (*p == '-') {
- PRINT(("dash\n"));
- p++;
- } else if (*p == 'e') {
- PRINT(("text \\\\\n"));
- p++;
- } else if (*p == '.') {
- PRINT(("text .\n"));
- p++;
- } else if (*p == '&') {
- p++;
- } else if (*p == '0') {
- PRINT(("text { }\n"));
- p++;
- } else if (*p == '(') {
- if ((p[1] == 0) || (p[2] == 0)) {
- fprintf(stderr, "Bad \\( sequence on line %d.\n",
- lineNumber);
- status = 1;
- } else {
- PRINT(("char {\\(%c%c}\n", p[1], p[2]));
- p += 3;
- }
- } else if (*p == 'N' && *(p+1) == '\'') {
- int ch;
-
- p += 2;
- sscanf(p,"%d",&ch);
- PRINT(("text \\u%04x\n", ch));
- while(*p&&*p!='\'') p++;
- p++;
- } else if (*p != 0) {
- PRINT(("char {\\%c}\n", *p));
- p++;
- }
- }
- }
- PRINT(("newline\n"));
-}
-
-/*
- *----------------------------------------------------------------------
- *
- * QuoteText --
- *
- * Copy the "string" argument to stdout, adding quote characters around
- * any special Tcl characters so that they'll just be treated as ordinary
- * text.
- *
- * Results:
- * None.
- *
- * Side effects:
- * Text is written to stdout.
- *
- *----------------------------------------------------------------------
- */
-
-static void
-QuoteText(
- char *string, /* The line of text. */
- int count) /* Number of characters to write from
- * string. */
-{
- if (count == 0) {
- PRINT(("{}"));
- return;
- }
- for ( ; count > 0; string++, count--) {
- switch (*string) {
- case '\\':
- if (*(string+1) == 'N' && *(string+2) == '\'') {
- int ch;
-
- string += 3;
- count -= 3;
- sscanf(string,"%d",&ch);
- PRINT(("\\u%04x", ch));
- while(count>0&&*string!='\'') {string++;count--;}
- continue;
- } else if (*(string+1) == '0') {
- PRINT(("\\ "));
- string++;
- count--;
- continue;
- }
- case '$': case '[': case '{': case ' ': case ';':
- case '"': case '\t':
- PRINTC('\\');
- default:
- PRINTC(*string);
- }
- }
-}
-
-/*
- * Local Variables:
- * mode: c
- * c-basic-offset: 4
- * fill-column: 78
- * End:
- */
diff --git a/tools/mkVfs.tcl b/tools/mkVfs.tcl
new file mode 100644
index 0000000..cbfb81e
--- /dev/null
+++ b/tools/mkVfs.tcl
@@ -0,0 +1,99 @@
+proc cat fname {
+ set fname [open $fname r]
+ set data [read $fname]
+ close $fname
+ return $data
+}
+
+proc pkgIndexDir {root fout d1} {
+
+ puts [format {%*sIndexing %s} [expr {4 * [info level]}] {} \
+ [file tail $d1]]
+ set idx [string length $root]
+ foreach ftail [glob -directory $d1 -nocomplain -tails *] {
+ set f [file join $d1 $ftail]
+ if {[file isdirectory $f] && [string compare CVS $ftail]} {
+ pkgIndexDir $root $fout $f
+ } elseif {[file tail $f] eq "pkgIndex.tcl"} {
+ puts $fout "set dir \${VFSROOT}[string range $d1 $idx end]"
+ puts $fout [cat $f]
+ }
+ }
+}
+
+###
+# Script to build the VFS file system
+###
+proc copyDir {d1 d2} {
+
+ puts [format {%*sCreating %s} [expr {4 * [info level]}] {} \
+ [file tail $d2]]
+
+ file delete -force -- $d2
+ file mkdir $d2
+
+ foreach ftail [glob -directory $d1 -nocomplain -tails *] {
+ set f [file join $d1 $ftail]
+ if {[file isdirectory $f] && [string compare CVS $ftail]} {
+ copyDir $f [file join $d2 $ftail]
+ } elseif {[file isfile $f]} {
+ file copy -force $f [file join $d2 $ftail]
+ if {$::tcl_platform(platform) eq {unix}} {
+ file attributes [file join $d2 $ftail] -permissions 0644
+ } else {
+ file attributes [file join $d2 $ftail] -readonly 1
+ }
+ }
+ }
+
+ if {$::tcl_platform(platform) eq {unix}} {
+ file attributes $d2 -permissions 0755
+ } else {
+ file attributes $d2 -readonly 1
+ }
+}
+
+if {[llength $argv] < 3} {
+ puts "Usage: VFS_ROOT TCLSRC_ROOT PLATFORM"
+ exit 1
+}
+set TCL_SCRIPT_DIR [lindex $argv 0]
+set TCLSRC_ROOT [lindex $argv 1]
+set PLATFORM [lindex $argv 2]
+set TKDLL [lindex $argv 3]
+set TKVER [lindex $argv 4]
+
+puts "Building [file tail $TCL_SCRIPT_DIR] for $PLATFORM"
+copyDir ${TCLSRC_ROOT}/library ${TCL_SCRIPT_DIR}
+
+if {$PLATFORM == "windows"} {
+ set ddedll [glob -nocomplain ${TCLSRC_ROOT}/win/tcldde*.dll]
+ puts "DDE DLL $ddedll"
+ if {$ddedll != {}} {
+ file copy $ddedll ${TCL_SCRIPT_DIR}/dde
+ }
+ set regdll [glob -nocomplain ${TCLSRC_ROOT}/win/tclreg*.dll]
+ puts "REG DLL $ddedll"
+ if {$regdll != {}} {
+ file copy $regdll ${TCL_SCRIPT_DIR}/reg
+ }
+} else {
+ # Remove the dde and reg package paths
+ file delete -force ${TCL_SCRIPT_DIR}/dde
+ file delete -force ${TCL_SCRIPT_DIR}/reg
+}
+
+# For the following packages, cat their pkgIndex files to tclIndex
+file attributes ${TCL_SCRIPT_DIR}/tclIndex -readonly 0
+set fout [open ${TCL_SCRIPT_DIR}/tclIndex a]
+puts $fout {#
+# MANIFEST OF INCLUDED PACKAGES
+#
+set VFSROOT $dir
+}
+if {$TKDLL ne {} && [file exists $TKDLL]} {
+ file copy $TKDLL ${TCL_SCRIPT_DIR}
+ puts $fout [list package ifneeded Tk $TKVER "load \$dir $TKDLL"]
+}
+pkgIndexDir ${TCL_SCRIPT_DIR} $fout ${TCL_SCRIPT_DIR}
+close $fout
diff --git a/tools/str2c b/tools/str2c
deleted file mode 100644
index 588abdf..0000000
--- a/tools/str2c
+++ /dev/null
@@ -1,59 +0,0 @@
-#! /bin/sh
-#
-# Transform text (.ps, .tcl,...) into a C string
-#
-# 1997/10 -- dl
-#
-# restart with tclsh \
-exec tclsh "$0" ${1+"$@"}
-
-# Max string length
-# (some C compiler have a 2048 chars limits (so 2047 real chars with
-# the tariling 0) so we use 2000 to make the count nice)
-set MAX 2000
-
-if {$argc} {
- puts stderr "Usage: [file tail [info script]] < text > text.c"
- exit 1
-}
-
-set r [read stdin]
-
-proc translate {what} {
- regsub -all {\\} $what {\\\\} what
- regsub -all {"} $what {\\"} what
- regsub -all "\n" $what "\\\\n\\\\\n" what;
- return $what;
-}
-
-set lg [string length $r]
-if {$lg<$MAX} {
- puts "/*
- * Single part writeable string generated by str2c
- */
-static char data\[\]=\"[translate $r]\";"
-} else {
- puts "/*
- * Multi parts read only string generated by str2c
- */
-static const char * const data\[\]= {"
- set n 1
- for {set i 0} {$i<$lg} {incr i $MAX} {
- set part [string range $r $i [expr {$i+$MAX-1}]]
- set len [string length $part];
- puts "\t/* Start of part $n ($len characters) */"
- puts "\t\"[translate $part]\","
- puts "\t/* End of part $n */\n"
- incr n
- }
- puts "\tNULL\t/* End of data marker */\n};"
- puts "\n/* use for instance with:
- const char * const *chunk;
- for (chunk=data; *chunk; chunk++) {
- Tcl_AppendResult(interp, *chunk, (char *) NULL);
- }
-*/"
-}
-
-
-
diff --git a/tools/tcl.hpj.in b/tools/tcl.hpj.in
deleted file mode 100644
index a94cea6..0000000
--- a/tools/tcl.hpj.in
+++ /dev/null
@@ -1,19 +0,0 @@
-; This file is maintained by HCW. Do not modify this file directly.
-
-[OPTIONS]
-HCW=0
-LCID=0x409 0x0 0x0 ;English (United States)
-REPORT=Yes
-TITLE=Tcl/Tk Reference Manual
-CNT=tcl86.cnt
-COPYRIGHT=Copyright © 2000 Ajuba Solutions
-HLP=tcl86.hlp
-
-[FILES]
-tcl.rtf
-
-[WINDOWS]
-main="Tcl/Tk Reference Manual",,0
-
-[CONFIG]
-BrowseButtons()
diff --git a/tools/tclOOScript.tcl b/tools/tclOOScript.tcl
new file mode 100644
index 0000000..5e0145f
--- /dev/null
+++ b/tools/tclOOScript.tcl
@@ -0,0 +1,456 @@
+# tclOOScript.h --
+#
+# This file contains support scripts for TclOO. They are defined here so
+# that the code can be definitely run even in safe interpreters; TclOO's
+# core setup is safe.
+#
+# Copyright (c) 2012-2018 Donal K. Fellows
+# Copyright (c) 2013 Andreas Kupries
+# Copyright (c) 2017 Gerald Lester
+#
+# See the file "license.terms" for information on usage and redistribution of
+# this file, and for a DISCLAIMER OF ALL WARRANTIES.
+
+::namespace eval ::oo {
+ ::namespace path {}
+
+ #
+ # Commands that are made available to objects by default.
+ #
+ namespace eval Helpers {
+ ::namespace path {}
+
+ # ------------------------------------------------------------------
+ #
+ # callback, mymethod --
+ #
+ # Create a script prefix that calls a method on the current
+ # object. Same operation, two names.
+ #
+ # ------------------------------------------------------------------
+
+ proc callback {method args} {
+ list [uplevel 1 {::namespace which my}] $method {*}$args
+ }
+
+ # Make the [callback] command appear as [mymethod] too.
+ namespace export callback
+ namespace eval tmp {namespace import ::oo::Helpers::callback}
+ namespace export -clear
+ rename tmp::callback mymethod
+ namespace delete tmp
+
+ # ------------------------------------------------------------------
+ #
+ # classvariable --
+ #
+ # Link to a variable in the class of the current object.
+ #
+ # ------------------------------------------------------------------
+
+ proc classvariable {name args} {
+ # Get a reference to the class's namespace
+ set ns [info object namespace [uplevel 1 {self class}]]
+ # Double up the list of variable names
+ foreach v [list $name {*}$args] {
+ if {[string match *(*) $v]} {
+ set reason "can't create a scalar variable that looks like an array element"
+ return -code error -errorcode {TCL UPVAR LOCAL_ELEMENT} \
+ [format {bad variable name "%s": %s} $v $reason]
+ }
+ if {[string match *::* $v]} {
+ set reason "can't create a local variable with a namespace separator in it"
+ return -code error -errorcode {TCL UPVAR INVERTED} \
+ [format {bad variable name "%s": %s} $v $reason]
+ }
+ lappend vs $v $v
+ }
+ # Lastly, link the caller's local variables to the class's variables
+ tailcall namespace upvar $ns {*}$vs
+ }
+
+ # ------------------------------------------------------------------
+ #
+ # link --
+ #
+ # Make a command that invokes a method on the current object.
+ # The name of the command and the name of the method match by
+ # default.
+ #
+ # ------------------------------------------------------------------
+
+ proc link {args} {
+ set ns [uplevel 1 {::namespace current}]
+ foreach link $args {
+ if {[llength $link] == 2} {
+ lassign $link src dst
+ } elseif {[llength $link] == 1} {
+ lassign $link src
+ set dst $src
+ } else {
+ return -code error -errorcode {TCLOO CMDLINK FORMAT} \
+ "bad link description; must only have one or two elements"
+ }
+ if {![string match ::* $src]} {
+ set src [string cat $ns :: $src]
+ }
+ interp alias {} $src {} ${ns}::my $dst
+ trace add command ${ns}::my delete [list \
+ ::oo::UnlinkLinkedCommand $src]
+ }
+ return
+ }
+ }
+
+ # ----------------------------------------------------------------------
+ #
+ # UnlinkLinkedCommand --
+ #
+ # Callback used to remove linked command when the underlying mechanism
+ # that supports it is deleted.
+ #
+ # ----------------------------------------------------------------------
+
+ proc UnlinkLinkedCommand {cmd args} {
+ if {[namespace which $cmd] ne {}} {
+ rename $cmd {}
+ }
+ }
+
+ # ----------------------------------------------------------------------
+ #
+ # DelegateName --
+ #
+ # Utility that gets the name of the class delegate for a class. It's
+ # trivial, but makes working with them much easier as delegate names are
+ # intentionally hard to create by accident.
+ #
+ # ----------------------------------------------------------------------
+
+ proc DelegateName {class} {
+ string cat [info object namespace $class] {:: oo ::delegate}
+ }
+
+ # ----------------------------------------------------------------------
+ #
+ # MixinClassDelegates --
+ #
+ # Support code called *after* [oo::define] inside the constructor of a
+ # class that patches in the appropriate class delegates.
+ #
+ # ----------------------------------------------------------------------
+
+ proc MixinClassDelegates {class} {
+ if {![info object isa class $class]} {
+ return
+ }
+ set delegate [DelegateName $class]
+ if {![info object isa class $delegate]} {
+ return
+ }
+ foreach c [info class superclass $class] {
+ set d [DelegateName $c]
+ if {![info object isa class $d]} {
+ continue
+ }
+ define $delegate ::oo::define::superclass -append $d
+ }
+ objdefine $class ::oo::objdefine::mixin -append $delegate
+ }
+
+ # ----------------------------------------------------------------------
+ #
+ # UpdateClassDelegatesAfterClone --
+ #
+ # Support code that is like [MixinClassDelegates] except for when a
+ # class is cloned.
+ #
+ # ----------------------------------------------------------------------
+
+ proc UpdateClassDelegatesAfterClone {originObject targetObject} {
+ # Rebuild the class inheritance delegation class
+ set originDelegate [DelegateName $originObject]
+ set targetDelegate [DelegateName $targetObject]
+ if {
+ [info object isa class $originDelegate]
+ && ![info object isa class $targetDelegate]
+ } then {
+ copy $originDelegate $targetDelegate
+ objdefine $targetObject ::oo::objdefine::mixin -set \
+ {*}[lmap c [info object mixin $targetObject] {
+ if {$c eq $originDelegate} {set targetDelegate} {set c}
+ }]
+ }
+ }
+
+ # ----------------------------------------------------------------------
+ #
+ # oo::define::classmethod --
+ #
+ # Defines a class method. See define(n) for details.
+ #
+ # Note that the ::oo::define namespace is semi-public and a bit weird
+ # anyway, so we don't regard the namespace path as being under control:
+ # fully qualified names are used for everything.
+ #
+ # ----------------------------------------------------------------------
+
+ proc define::classmethod {name {args {}} {body {}}} {
+ # Create the method on the class if the caller gave arguments and body
+ ::set argc [::llength [::info level 0]]
+ ::if {$argc == 3} {
+ ::return -code error -errorcode {TCL WRONGARGS} [::format \
+ {wrong # args: should be "%s name ?args body?"} \
+ [::lindex [::info level 0] 0]]
+ }
+ ::set cls [::uplevel 1 self]
+ ::if {$argc == 4} {
+ ::oo::define [::oo::DelegateName $cls] method $name $args $body
+ }
+ # Make the connection by forwarding
+ ::tailcall forward $name myclass $name
+ }
+
+ # ----------------------------------------------------------------------
+ #
+ # oo::define::initialise, oo::define::initialize --
+ #
+ # Do specific initialisation for a class. See define(n) for details.
+ #
+ # Note that the ::oo::define namespace is semi-public and a bit weird
+ # anyway, so we don't regard the namespace path as being under control:
+ # fully qualified names are used for everything.
+ #
+ # ----------------------------------------------------------------------
+
+ proc define::initialise {body} {
+ ::set clsns [::info object namespace [::uplevel 1 self]]
+ ::tailcall apply [::list {} $body $clsns]
+ }
+
+ # Make the [initialise] definition appear as [initialize] too
+ namespace eval define {
+ ::namespace export initialise
+ ::namespace eval tmp {::namespace import ::oo::define::initialise}
+ ::namespace export -clear
+ ::rename tmp::initialise initialize
+ ::namespace delete tmp
+ }
+
+ # ----------------------------------------------------------------------
+ #
+ # Slot --
+ #
+ # The class of slot operations, which are basically lists at the low
+ # level of TclOO; this provides a more consistent interface to them.
+ #
+ # ----------------------------------------------------------------------
+
+ define Slot {
+ # ------------------------------------------------------------------
+ #
+ # Slot Get --
+ #
+ # Basic slot getter. Retrieves the contents of the slot.
+ # Particular slots must provide concrete non-erroring
+ # implementation.
+ #
+ # ------------------------------------------------------------------
+
+ method Get {} {
+ return -code error -errorcode {TCLOO ABSTRACT_SLOT} "unimplemented"
+ }
+
+ # ------------------------------------------------------------------
+ #
+ # Slot Set --
+ #
+ # Basic slot setter. Sets the contents of the slot. Particular
+ # slots must provide concrete non-erroring implementation.
+ #
+ # ------------------------------------------------------------------
+
+ method Set list {
+ return -code error -errorcode {TCLOO ABSTRACT_SLOT} "unimplemented"
+ }
+
+ # ------------------------------------------------------------------
+ #
+ # Slot Resolve --
+ #
+ # Helper that lets a slot convert a list of arguments of a
+ # particular type to their canonical forms. Defaults to doing
+ # nothing (suitable for simple strings).
+ #
+ # ------------------------------------------------------------------
+
+ method Resolve list {
+ return $list
+ }
+
+ # ------------------------------------------------------------------
+ #
+ # Slot -set, -append, -clear, --default-operation --
+ #
+ # Standard public slot operations. If a slot can't figure out
+ # what method to call directly, it uses --default-operation.
+ #
+ # ------------------------------------------------------------------
+
+ method -set args {
+ set my [namespace which my]
+ set args [lmap a $args {uplevel 1 [list $my Resolve $a]}]
+ tailcall my Set $args
+ }
+ method -append args {
+ set my [namespace which my]
+ set args [lmap a $args {uplevel 1 [list $my Resolve $a]}]
+ set current [uplevel 1 [list $my Get]]
+ tailcall my Set [list {*}$current {*}$args]
+ }
+ method -clear {} {tailcall my Set {}}
+ method -prepend args {
+ set my [namespace which my]
+ set args [lmap a $args {uplevel 1 [list $my Resolve $a]}]
+ set current [uplevel 1 [list $my Get]]
+ tailcall my Set [list {*}$args {*}$current]
+ }
+ method -remove args {
+ set my [namespace which my]
+ set args [lmap a $args {uplevel 1 [list $my Resolve $a]}]
+ set current [uplevel 1 [list $my Get]]
+ tailcall my Set [lmap val $current {
+ if {$val in $args} continue else {set val}
+ }]
+ }
+
+ # Default handling
+ forward --default-operation my -append
+ method unknown {args} {
+ set def --default-operation
+ if {[llength $args] == 0} {
+ tailcall my $def
+ } elseif {![string match -* [lindex $args 0]]} {
+ tailcall my $def {*}$args
+ }
+ next {*}$args
+ }
+
+ # Set up what is exported and what isn't
+ export -set -append -clear -prepend -remove
+ unexport unknown destroy
+ }
+
+ # Set the default operation differently for these slots
+ objdefine define::superclass forward --default-operation my -set
+ objdefine define::mixin forward --default-operation my -set
+ objdefine objdefine::mixin forward --default-operation my -set
+
+ # ----------------------------------------------------------------------
+ #
+ # oo::object <cloned> --
+ #
+ # Handler for cloning objects that clones basic bits (only!) of the
+ # object's namespace. Non-procedures, traces, sub-namespaces, etc. need
+ # more complex (and class-specific) handling.
+ #
+ # ----------------------------------------------------------------------
+
+ define object method <cloned> {originObject} {
+ # Copy over the procedures from the original namespace
+ foreach p [info procs [info object namespace $originObject]::*] {
+ set args [info args $p]
+ set idx -1
+ foreach a $args {
+ if {[info default $p $a d]} {
+ lset args [incr idx] [list $a $d]
+ } else {
+ lset args [incr idx] [list $a]
+ }
+ }
+ set b [info body $p]
+ set p [namespace tail $p]
+ proc $p $args $b
+ }
+ # Copy over the variables from the original namespace
+ foreach v [info vars [info object namespace $originObject]::*] {
+ upvar 0 $v vOrigin
+ namespace upvar [namespace current] [namespace tail $v] vNew
+ if {[info exists vOrigin]} {
+ if {[array exists vOrigin]} {
+ array set vNew [array get vOrigin]
+ } else {
+ set vNew $vOrigin
+ }
+ }
+ }
+ # General commands, sub-namespaces and advancd variable config (traces,
+ # etc) are *not* copied over. Classes that want that should do it
+ # themselves.
+ }
+
+ # ----------------------------------------------------------------------
+ #
+ # oo::class <cloned> --
+ #
+ # Handler for cloning classes, which fixes up the delegates.
+ #
+ # ----------------------------------------------------------------------
+
+ define class method <cloned> {originObject} {
+ next $originObject
+ # Rebuild the class inheritance delegation class
+ ::oo::UpdateClassDelegatesAfterClone $originObject [self]
+ }
+
+ # ----------------------------------------------------------------------
+ #
+ # oo::singleton --
+ #
+ # A metaclass that is used to make classes that only permit one instance
+ # of them to exist. See singleton(n).
+ #
+ # ----------------------------------------------------------------------
+
+ class create singleton {
+ superclass class
+ variable object
+ unexport create createWithNamespace
+ method new args {
+ if {![info exists object] || ![info object isa object $object]} {
+ set object [next {*}$args]
+ ::oo::objdefine $object {
+ method destroy {} {
+ ::return -code error -errorcode {TCLOO SINGLETON} \
+ "may not destroy a singleton object"
+ }
+ method <cloned> {originObject} {
+ ::return -code error -errorcode {TCLOO SINGLETON} \
+ "may not clone a singleton object"
+ }
+ }
+ }
+ return $object
+ }
+ }
+
+ # ----------------------------------------------------------------------
+ #
+ # oo::abstract --
+ #
+ # A metaclass that is used to make classes that can't be directly
+ # instantiated. See abstract(n).
+ #
+ # ----------------------------------------------------------------------
+
+ class create abstract {
+ superclass class
+ unexport create createWithNamespace new
+ }
+}
+
+# Local Variables:
+# mode: tcl
+# c-basic-offset: 4
+# fill-column: 78
+# End:
diff --git a/tools/tcltk-man2html-utils.tcl b/tools/tcltk-man2html-utils.tcl
index 34222e3..94440d5 100644
--- a/tools/tcltk-man2html-utils.tcl
+++ b/tools/tcltk-man2html-utils.tcl
@@ -43,14 +43,14 @@ proc indexfile {} {
if {[info exists ::TARGET] && $::TARGET eq "devsite"} {
return "index.tml"
} else {
- return "contents.htm"
+ return "index.html"
}
}
proc copyright {copyright {level {}}} {
# We don't actually generate a separate copyright page anymore
- #set page "${level}copyright.htm"
- #return "<A HREF=\"$page\">Copyright</A> &copy; [htmlize-text [lrange $copyright 2 end]]"
+ #set page "${level}copyright.html"
+ #return "<a href=\"$page\">Copyright</a> &copy; [htmlize-text [lrange $copyright 2 end]]"
# obfuscate any email addresses that may appear in name
set who [string map {@ (at)} [lrange $copyright 2 end]]
return "Copyright &copy; [htmlize-text $who]"
@@ -61,7 +61,7 @@ proc copyout {copyrights {level {}}} {
set out "<div class=\"copy\">"
foreach c $copyrights {
if {$count > 0} {
- append out <BR>
+ append out <br>
}
append out "[copyright $c $level]\n"
incr count
@@ -74,21 +74,17 @@ proc CSS {{level ""}} {
return "<link rel=\"stylesheet\" href=\"${level}$::CSSFILE\" type=\"text/css\" media=\"all\">\n"
}
-proc DOCTYPE {} {
- return "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">"
-}
-
proc htmlhead {title header args} {
set level ""
if {[lindex $args end] eq "../[indexfile]"} {
# XXX hack - assume same level for CSS file
set level "../"
}
- set out "[DOCTYPE]\n<HTML>\n<HEAD><TITLE>$title</TITLE>\n[CSS $level]</HEAD>\n"
+ set out "<!DOCTYPE html>\n<html lang=\"en\">\n<head><meta charset=\"utf-8\"><title>$title</title>\n[CSS $level]</head>\n"
foreach {uptitle url} $args {
set header "<a href=\"$url\">$uptitle</a> <small>&gt;</small> $header"
}
- append out "<BODY><H2>$header</H2>"
+ append out "<body><h2>$header</h2>"
global manual
if {[info exists manual(subheader)]} {
set subs {}
@@ -96,10 +92,10 @@ proc htmlhead {title header args} {
if {$name eq $title} {
lappend subs $name
} else {
- lappend subs "<A HREF=\"${level}$subdir/[indexfile]\">$name</A>"
+ lappend subs "<a href=\"${level}$subdir/[indexfile]\">$name</a>"
}
}
- append out "\n<H3>[join $subs { | }]</H3>"
+ append out "\n<h3>[join $subs { | }]</h3>"
}
return $out
}
@@ -116,6 +112,10 @@ proc parse-directive {line codename restname} {
return [regexp {^(\.[.a-zA-Z0-9]*) *(.*)} $line all code rest]
}
+proc nospace-text {text} {
+ return [regsub -all " " $text _]
+}
+
proc htmlize-text {text {charmap {}}} {
# contains some extras for use in nroff->html processing
# build on the list passed in, if any
@@ -220,19 +220,19 @@ proc process-text {text} {
while {[string first "\\" $text] >= 0} {
# C R
if {[regsub {^([^\\]*)\\fC([^\\]*)\\fR(.*)$} $text \
- {\1<TT>\2</TT>\3} text]} continue
+ {\1<tt>\2</tt>\3} text]} continue
# B R
if {[regsub {^([^\\]*)\\fB([^\\]*)\\fR(.*)$} $text \
- {\1<B>\2</B>\3} text]} continue
+ {\1<b>\2</b>\3} text]} continue
# B I
if {[regsub {^([^\\]*)\\fB([^\\]*)\\fI(.*)$} $text \
- {\1<B>\2</B>\\fI\3} text]} continue
+ {\1<b>\2</b>\\fI\3} text]} continue
# I R
if {[regsub {^([^\\]*)\\fI([^\\]*)\\fR(.*)$} $text \
- {\1<I>\2</I>\3} text]} continue
+ {\1<i>\2</i>\3} text]} continue
# I B
if {[regsub {^([^\\]*)\\fI([^\\]*)\\fB(.*)$} $text \
- {\1<I>\2</I>\\fB\3} text]} continue
+ {\1<i>\2</i>\\fB\3} text]} continue
# B B, I I, R R
if {
[regsub {^([^\\]*)\\fB([^\\]*)\\fB(.*)$} $text \
@@ -372,8 +372,8 @@ proc long-toc {text} {
set manual($manual(name)-id-$text) $here
set there L[incr manual(long-toc-n)]
lappend manual(section-toc) \
- "<DD><A HREF=\"$manual(name).htm#$here\" NAME=\"$there\">$text</A>"
- return "<A NAME=\"$here\">$text</A>"
+ "<dd><a href=\"$manual(name).html#$here\" name=\"[nospace-text $there]\" id=\"[nospace-text $there]\">$text</a>"
+ return "<a name=\"[nospace-text $here]\" id=\"[nospace-text $here]\">$text</a>"
}
proc option-toc {name class switch} {
@@ -398,24 +398,24 @@ proc option-toc {name class switch} {
set here M$first
set there L[incr manual(long-toc-n)]
set manual(standard-option-$manual(name)-$first) \
- "<A HREF=\"$manual(name).htm#$here\">$switch, $name, $class</A>"
+ "<a href=\"$manual(name).html#$here\">$switch, $name, $class</a>"
lappend manual(section-toc) \
- "<DD><A HREF=\"$manual(name).htm#$here\" NAME=\"$there\">$switch, $name, $class</A>"
- return "<A NAME=\"$here\">$switch</A>"
+ "<dd><a href=\"$manual(name).html#$here\" name=\"[nospace-text $there]\" id=\"[nospace-text $there]\">$switch, $name, $class</a>"
+ return "<a name=\"[nospace-text $here]\" id=\"[nospace-text $here]\">$switch</a>"
}
proc std-option-toc {name page} {
global manual
if {[info exists manual(standard-option-$page-$name)]} {
- lappend manual(section-toc) <DD>$manual(standard-option-$page-$name)
+ lappend manual(section-toc) <dd>$manual(standard-option-$page-$name)
return $manual(standard-option-$page-$name)
}
manerror "missing reference to \"$name\" in $page.n"
set here M[incr manual(section-toc-n)]
set there L[incr manual(long-toc-n)]
set other M$name
- lappend manual(section-toc) "<DD><A HREF=\"$page.htm#$other\">$name</A>"
- return "<A HREF=\"$page.htm#$other\">$name</A>"
+ lappend manual(section-toc) "<dd><a href=\"$page.html#$other\">$name</a>"
+ return "<a href=\"$page.html#$other\">$name</a>"
}
##
@@ -424,8 +424,8 @@ proc std-option-toc {name page} {
##
proc output-widget-options {rest} {
global manual
- man-puts <DL>
- lappend manual(section-toc) <DL>
+ man-puts <dl>
+ lappend manual(section-toc) <dl>
backup-text 1
set para {}
while {[next-op-is .OP rest]} {
@@ -456,11 +456,11 @@ proc output-widget-options {rest} {
if {![regexp {^(<.>)([\w]*)(</.>)$} $class all oclass class cclass]} {
error "not Class: $class"
}
- man-puts "$para<DT>Command-Line Name: $oswitch[option-toc $name $class $switch]$cswitch"
- man-puts "<DT>Database Name: $oname$name$cname"
- man-puts "<DT>Database Class: $oclass$class$cclass"
- man-puts <DD>[next-text]
- set para <P>
+ man-puts "$para<dt>Command-Line Name: $oswitch[option-toc $name $class $switch]$cswitch"
+ man-puts "<dt>Database Name: $oname$name$cname"
+ man-puts "<dt>Database Class: $oclass$class$cclass"
+ man-puts <dd>[next-text]
+ set para <p>
if {[next-op-is .RS rest]} {
while {[more-text]} {
@@ -486,8 +486,8 @@ proc output-widget-options {rest} {
}
}
}
- man-puts </DL>
- lappend manual(section-toc) </DL>
+ man-puts </dl>
+ lappend manual(section-toc) </dl>
}
##
@@ -498,18 +498,18 @@ proc output-RS-list {} {
if {[next-op-is .IP rest]} {
output-IP-list .RS .IP $rest
if {[match-text .RE .sp .RS @rest .IP @rest2]} {
- man-puts <P>$rest
+ man-puts <p>$rest
output-IP-list .RS .IP $rest2
}
if {[match-text .RE .sp .RS @rest .RE]} {
- man-puts <P>$rest
+ man-puts <p>$rest
return
}
if {[next-op-is .RE rest]} {
return
}
}
- man-puts <DL><DD>
+ man-puts <dl><dd>
while {[more-text]} {
set line [next-text]
if {[is-a-directive $line]} {
@@ -531,7 +531,7 @@ proc output-RS-list {} {
man-puts $line
}
}
- man-puts </DL>
+ man-puts </dl>
}
##
@@ -542,13 +542,13 @@ proc output-IP-list {context code rest} {
global manual
if {![string length $rest]} {
# blank label, plain indent, no contents entry
- man-puts <DL><DD>
+ man-puts <dl><dd>
while {[more-text]} {
set line [next-text]
if {[is-a-directive $line]} {
split-directive $line code rest
if {$code eq ".IP" && $rest eq {}} {
- man-puts "<P>"
+ man-puts "<p>"
continue
}
if {$code in {.br .DS .RS}} {
@@ -561,21 +561,21 @@ proc output-IP-list {context code rest} {
man-puts $line
}
}
- man-puts </DL>
+ man-puts </dl>
} else {
# labelled list, make contents
if {$context ne ".SH" && $context ne ".SS"} {
- man-puts <P>
+ man-puts <p>
}
- set dl "<DL class=\"[string tolower $manual(section)]\">"
- set enddl "</DL>"
+ set dl "<dl class=\"[string tolower $manual(section)]\">"
+ set enddl "</dl>"
if {$code eq ".IP"} {
if {[regexp {^\[[\da-f]+\]|\(?[\da-f]+\)$} $rest]} {
- set dl "<OL class=\"[string tolower $manual(section)]\">"
- set enddl "</OL>"
+ set dl "<ol class=\"[string tolower $manual(section)]\">"
+ set enddl "</ol>"
} elseif {"&bull;" eq $rest} {
- set dl "<UL class=\"[string tolower $manual(section)]\">"
- set enddl "</UL>"
+ set dl "<ul class=\"[string tolower $manual(section)]\">"
+ set enddl "</ul>"
}
}
man-puts $dl
@@ -594,15 +594,15 @@ proc output-IP-list {context code rest} {
continue
}
if {$manual(section) eq "ARGUMENTS"} {
- man-puts "$para<DT>$rest<DD>"
+ man-puts "$para<dt>$rest<dd>"
} elseif {[regexp {^\[([\da-f]+)\]$} $rest -> value]} {
- man-puts "$para<LI value=\"$value\">"
+ man-puts "$para<li value=\"$value\">"
} elseif {[regexp {^\(?([\da-f]+)\)$} $rest -> value]} {
- man-puts "$para<LI value=\"$value\">"
+ man-puts "$para<li value=\"$value\">"
} elseif {"&bull;" eq $rest} {
- man-puts "$para<LI>"
+ man-puts "$para<li>"
} else {
- man-puts "$para<DT>[long-toc $rest]<DD>"
+ man-puts "$para<dt>[long-toc $rest]<dd>"
}
}
.sp - .br - .DS - .CS {
@@ -628,18 +628,18 @@ proc output-IP-list {context code rest} {
.PP {
if {[match-text @rest1 .br @rest2 .RS]} {
# yet another nroff kludge as above
- man-puts "$para<DT>[long-toc $rest1]"
- man-puts "<DT>[long-toc $rest2]<DD>"
+ man-puts "$para<dt>[long-toc $rest1]"
+ man-puts "<dt>[long-toc $rest2]<dd>"
incr accept_RE 1
} elseif {[match-text @rest .RE]} {
# gad, this is getting ridiculous
if {!$accept_RE} {
- man-puts "$enddl<P>$rest$dl"
+ man-puts "$enddl<p>$rest$dl"
backup-text 1
set para {}
break
}
- man-puts "<P>$rest"
+ man-puts "<p>$rest"
incr accept_RE -1
} elseif {$accept_RE} {
output-directive $line
@@ -663,7 +663,7 @@ proc output-IP-list {context code rest} {
} else {
man-puts $line
}
- set para <P>
+ set para <p>
}
man-puts "$para$enddl"
lappend manual(section-toc) $enddl
@@ -686,7 +686,7 @@ proc output-name {line} {
# output line to manual page untouched
man-puts "$head &mdash; $tail"
# output line to long table of contents
- lappend manual(section-toc) "<DL><DD>$head &mdash; $tail</DD></DL>"
+ lappend manual(section-toc) "<dl><dd>$head &mdash; $tail</dd></dl>"
# separate out the names for future reference
foreach name [split $head ,] {
set name [string trim $name]
@@ -696,7 +696,7 @@ proc output-name {line} {
lappend manual(wing-toc) $name
lappend manual(name-$name) $manual(wing-file)/$manual(name)
}
- set manual(tooltip-$manual(wing-file)/$manual(name).htm) $line
+ set manual(tooltip-$manual(wing-file)/$manual(name).html) $line
}
##
@@ -721,7 +721,7 @@ proc cross-reference {ref} {
[regexp {^[A-Z0-9 ?!]+$} $ref]
&& [info exists manual($manname-id-$ref)]
} {
- return "<A HREF=\"#$manual($manname-id-$ref)\">$ref</A>"
+ return "<a href=\"#$manual($manname-id-$ref)\">$ref</a>"
} else {
set lref [string tolower $ref]
##
@@ -743,7 +743,7 @@ proc cross-reference {ref} {
(![info exists exclude_refs_map($mantail)] ||
$manual(name-$name) ni $exclude_refs_map($mantail))
} {
- return "<A HREF=\"../$manual(name-$name).htm\">$ref</A>"
+ return "<a href=\"../$manual(name-$name).html\">$ref</a>"
}
}
if {$lref in {end}} {
@@ -768,17 +768,17 @@ proc cross-reference {ref} {
if {$tcl_i >= 0 && $manual(wing-file) eq "TclCmd"
|| $manual(wing-file) eq "TclLib"} {
set tcl_ref [lindex $manref $tcl_i]
- return "<A HREF=\"../$tcl_ref.htm\">$ref</A>"
+ return "<a href=\"../$tcl_ref.html\">$ref</a>"
}
set tk_i [lsearch -glob $manref *TkCmd*]
if {$tk_i >= 0 && $manual(wing-file) eq "TkCmd"
|| $manual(wing-file) eq "TkLib"} {
set tk_ref [lindex $manref $tk_i]
- return "<A HREF=\"../$tk_ref.htm\">$ref</A>"
+ return "<a href=\"../$tk_ref.html\">$ref</a>"
}
if {$lref eq "exit" && $mantail eq "tclsh.1" && $tcl_i >= 0} {
set tcl_ref [lindex $manref $tcl_i]
- return "<A HREF=\"../$tcl_ref.htm\">$ref</A>"
+ return "<a href=\"../$tcl_ref.html\">$ref</a>"
}
puts stderr "multiple cross reference to $ref in $manref from $manual(wing-file)/$mantail"
return $ref
@@ -805,7 +805,7 @@ proc cross-reference {ref} {
##
## return the cross reference
##
- return "<A HREF=\"../$manref.htm\">$ref</A>"
+ return "<a href=\"../$manref.html\">$ref</a>"
}
##
@@ -828,7 +828,7 @@ proc insert-cross-references {text} {
##
## we identify cross references by:
## ``quotation''
- ## <B>emboldening</B>
+ ## <b>emboldening</b>
## Tcl_ prefix
## Tk_ prefix
## [a-zA-Z0-9]+ manual entry
@@ -839,9 +839,9 @@ proc insert-cross-references {text} {
##
unset -nocomplain offsets
foreach {name pattern} {
- anchor {<A } end-anchor {</A>}
+ anchor {<a } end-anchor {</a>}
quote {``} end-quote {''}
- bold {<B>} end-bold {</B>}
+ bold {<b>} end-bold {</b>}
c.tcl {Tcl_}
c.tk {Tk_}
c.ttk {Ttk_}
@@ -922,8 +922,8 @@ proc insert-cross-references {text} {
[expr {$offset(end-bold)-1}]]
set text [string range $text[set text ""] \
[expr {$offset(end-bold)+4}] end]
- regsub {http://[\w/.-]+} $body {<A HREF="&">&</A>} body
- append result <B> [cross-reference $body] </B>
+ regsub {http://[\w/.-]+} $body {<a href="&">&</a>} body
+ append result <b> [cross-reference $body] </b>
continue
}
anchor {
@@ -960,7 +960,7 @@ proc insert-cross-references {text} {
append result [string range $text 0 [expr {$off-1}]]
regexp -indices -start $off {http://[\w/.-]+} $text range
set url [string range $text {*}$range]
- append result "<A HREF=\"[string trimright $url .]\">$url</A>"
+ append result "<a href=\"[string trimright $url .]\">$url</a>"
set text [string range $text[set text ""] \
[expr {[lindex $range 1]+1}] end]
continue
@@ -981,7 +981,7 @@ proc output-directive {line} {
split-directive $line code rest
switch -exact -- $code {
.BS - .BE {
- # man-puts <HR>
+ # man-puts <hr>
}
.SH - .SS {
# drain any open lists
@@ -991,9 +991,9 @@ proc output-directive {line} {
set manual($manual(name)-$manual(section)) {}
lappend manual(has-$manual(section)) $manual(name)
if {$code ne ".SS"} {
- man-puts "<H3>[long-toc $manual(section)]</H3>"
+ man-puts "<h3>[long-toc $manual(section)]</h3>"
} else {
- man-puts "<H4>[long-toc $manual(section)]</H4>"
+ man-puts "<h4>[long-toc $manual(section)]</h4>"
}
# some sections can simply free wheel their way through the text
# some sections can be processed in their own loops
@@ -1013,7 +1013,7 @@ proc output-directive {line} {
}
}
H:SYNOPSIS {
- lappend manual(section-toc) <DL>
+ lappend manual(section-toc) <dl>
while {1} {
if {
[next-op-is .nf rest]
@@ -1032,7 +1032,7 @@ proc output-directive {line} {
break
}
if {[next-op-is .sp rest]} {
- #man-puts <P>
+ #man-puts <p>
continue
}
set more [next-text]
@@ -1045,15 +1045,15 @@ proc output-directive {line} {
regexp {^(\s*)(.*)} $more -> spaces more
set spaces [string map {" " "&nbsp;"} $spaces]
if {[string length $spaces]} {
- set spaces <TT>$spaces</TT>
+ set spaces <tt>$spaces</tt>
}
- man-puts $spaces$more<BR>
+ man-puts $spaces$more<br>
if {$manual(wing-file) in {TclLib TkLib}} {
- lappend manual(section-toc) <DD>$more
+ lappend manual(section-toc) <dd>$more
}
}
}
- lappend manual(section-toc) </DL>
+ lappend manual(section-toc) </dl>
return
}
{H:SEE ALSO} {
@@ -1071,11 +1071,11 @@ proc output-directive {line} {
set nmore {}
foreach cr [split $more ,] {
set cr [string trim $cr]
- if {![regexp {^<B>.*</B>$} $cr]} {
- set cr <B>$cr</B>
+ if {![regexp {^<b>.*</b>$} $cr]} {
+ set cr <b>$cr</b>
}
- if {[regexp {^<B>(.*)\([13n]\)</B>$} $cr all name]} {
- set cr <B>$name</B>
+ if {[regexp {^<b>(.*)\([13n]\)</b>$} $cr all name]} {
+ set cr <b>$name</b>
}
lappend nmore $cr
}
@@ -1099,9 +1099,9 @@ proc output-directive {line} {
foreach key [split $more ,] {
set key [string trim $key]
lappend manual(keyword-$key) [list $manual(name) \
- $manual(wing-file)/$manual(name).htm]
+ $manual(wing-file)/$manual(name).html]
set initial [string toupper [string index $key 0]]
- lappend keys "<A href=\"../Keywords/$initial.htm\#$key\">$key</A>"
+ lappend keys "<a href=\"../Keywords/$initial.html\#$key\">$key</a>"
}
man-puts [join $keys {, }]
}
@@ -1133,14 +1133,14 @@ proc output-directive {line} {
}
}
output-directive {.SH STANDARD OPTIONS}
- man-puts <DL>
- lappend manual(section-toc) <DL>
+ man-puts <dl>
+ lappend manual(section-toc) <dl>
foreach optionpair [lsort -dictionary -index 0 $optslist] {
lassign $optionpair option targetPage
- man-puts "<DT><B>[std-option-toc $option $targetPage]</B>"
+ man-puts "<dt><b>[std-option-toc $option $targetPage]</b>"
}
- man-puts </DL>
- lappend manual(section-toc) </DL>
+ man-puts </dl>
+ lappend manual(section-toc) </dl>
}
.OP {
output-widget-options $rest
@@ -1151,14 +1151,14 @@ proc output-directive {line} {
return
}
.PP - .sp {
- man-puts <P>
+ man-puts <p>
}
.RS {
output-RS-list
return
}
.br {
- man-puts <BR>
+ man-puts <br>
return
}
.DS {
@@ -1169,9 +1169,9 @@ proc output-directive {line} {
set td "<td><p class=\"tablecell\">"
set bodyText [string map [list \n <tr>$td \t $td] \n$stuff]
man-puts "<dl><dd><table border=\"0\">$bodyText</table></dl>"
- #man-puts <PRE>$stuff</PRE>
+ #man-puts <pre>$stuff</pre>
} elseif {[match-text .fi @ul1 @ul2 .nf @stuff .DE]} {
- man-puts "<PRE>[lindex $ul1 1][lindex $ul2 1]\n$stuff</PRE>"
+ man-puts "<pre>[lindex $ul1 1][lindex $ul2 1]\n$stuff</pre>"
} else {
manerror "unexpected .DS format:\n[expand-next-text 2]"
}
@@ -1182,7 +1182,7 @@ proc output-directive {line} {
# ???
}
if {[match-text @stuff .CE]} {
- man-puts <PRE>$stuff</PRE>
+ man-puts <pre>$stuff</pre>
} else {
manerror "unexpected .CS format:\n[expand-next-text 2]"
}
@@ -1191,54 +1191,54 @@ proc output-directive {line} {
.nf {
if {[match-text @more .fi]} {
foreach more [split $more \n] {
- man-puts $more<BR>
+ man-puts $more<br>
}
} elseif {[match-text .RS @more .RE .fi]} {
- man-puts <DL><DD>
+ man-puts <dl><dd>
foreach more [split $more \n] {
- man-puts $more<BR>
+ man-puts $more<br>
}
- man-puts </DL>
+ man-puts </dl>
} elseif {[match-text .RS @more .RS @more2 .RE .RE .fi]} {
- man-puts <DL><DD>
+ man-puts <dl><dd>
foreach more [split $more \n] {
- man-puts $more<BR>
+ man-puts $more<br>
}
- man-puts <DL><DD>
+ man-puts <dl><dd>
foreach more2 [split $more2 \n] {
- man-puts $more2<BR>
+ man-puts $more2<br>
}
- man-puts </DL></DL>
+ man-puts </dl></dl>
} elseif {[match-text .RS @more .RS @more2 .RE @more3 .RE .fi]} {
- man-puts <DL><DD>
+ man-puts <dl><dd>
foreach more [split $more \n] {
- man-puts $more<BR>
+ man-puts $more<br>
}
- man-puts <DL><DD>
+ man-puts <dl><dd>
foreach more2 [split $more2 \n] {
- man-puts $more2<BR>
+ man-puts $more2<br>
}
- man-puts </DL><DD>
+ man-puts </dl><dd>
foreach more3 [split $more3 \n] {
- man-puts $more3<BR>
+ man-puts $more3<br>
}
- man-puts </DL>
+ man-puts </dl>
} elseif {[match-text .sp .RS @more .RS @more2 .sp .RE .RE .fi]} {
- man-puts <P><DL><DD>
+ man-puts <p><dl><dd>
foreach more [split $more \n] {
- man-puts $more<BR>
+ man-puts $more<br>
}
- man-puts <DL><DD>
+ man-puts <dl><dd>
foreach more2 [split $more2 \n] {
- man-puts $more2<BR>
+ man-puts $more2<br>
}
- man-puts </DL></DL><P>
+ man-puts </dl></dl><p>
} elseif {[match-text .RS .sp @more .sp .RE .fi]} {
- man-puts <P><DL><DD>
+ man-puts <p><dl><dd>
foreach more [split $more \n] {
- man-puts $more<BR>
+ man-puts $more<br>
}
- man-puts </DL><P>
+ man-puts </dl><p>
} else {
manerror "ignoring $line"
}
@@ -1318,9 +1318,9 @@ proc make-manpage-section {outputDir sectionDescriptor} {
puts stderr "scanning section $manual(wing-name)"
# put the entry for this section into the short table of contents
if {[regexp {^(.+), version (.+)$} $manual(wing-name) -> name version]} {
- puts $manual(short-toc-fp) "<DT><A HREF=\"$manual(wing-file)/[indexfile]\" TITLE=\"version $version\">$name</A></DT><DD>$manual(wing-description)</DD>"
+ puts $manual(short-toc-fp) "<dt><a href=\"$manual(wing-file)/[indexfile]\" title=\"version $version\">$name</a></dt><dd>$manual(wing-description)</dd>"
} else {
- puts $manual(short-toc-fp) "<DT><A HREF=\"$manual(wing-file)/[indexfile]\">$manual(wing-name)</A></DT><DD>$manual(wing-description)</DD>"
+ puts $manual(short-toc-fp) "<dt><a href=\"$manual(wing-file)/[indexfile]\">$manual(wing-name)</a></dt><dd>$manual(wing-description)</dd>"
}
# initialize the wing table of contents
puts $manual(wing-toc-fp) [htmlhead $manual(wing-name) \
@@ -1606,7 +1606,7 @@ proc make-manpage-section {outputDir sectionDescriptor} {
# make the long table of contents for this page
#
set manual(toc-$manual(wing-file)-$manual(name)) \
- [concat <DL> $manual(section-toc) </DL>]
+ [concat <dl> $manual(section-toc) </dl>]
}
if {!$verbose} {
puts stderr ""
@@ -1636,15 +1636,15 @@ proc make-manpage-section {outputDir sectionDescriptor} {
set tail [lindex $tail [expr {[llength $tail]-1}]]
}
set tail [file tail $tail]
- if {[info exists manual(tooltip-$manual(wing-file)/$tail.htm)]} {
- set tooltip $manual(tooltip-$manual(wing-file)/$tail.htm)
+ if {[info exists manual(tooltip-$manual(wing-file)/$tail.html)]} {
+ set tooltip $manual(tooltip-$manual(wing-file)/$tail.html)
set tooltip [string map {[ {\[} ] {\]} $ {\$} \\ \\\\} $tooltip]
regsub {^[^-]+-\s*(.)} $tooltip {[string totitle \1]} tooltip
append rows([expr {$n%$nrows}]) \
- "<td> <a href=\"$tail.htm\" title=\"[subst $tooltip]\">$name</a> </td>"
+ "<td> <a href=\"$tail.html\" title=\"[subst $tooltip]\">$name</a> </td>"
} else {
append rows([expr {$n%$nrows}]) \
- "<td> <a href=\"$tail.htm\">$name</a> </td>"
+ "<td> <a href=\"$tail.html\">$name</a> </td>"
}
incr n
}
@@ -1658,7 +1658,7 @@ proc make-manpage-section {outputDir sectionDescriptor} {
# insert wing copyrights
#
puts $manual(wing-toc-fp) [copyout $manual(wing-copyrights) "../"]
- puts $manual(wing-toc-fp) "</BODY></HTML>"
+ puts $manual(wing-toc-fp) "</body></html>"
close $manual(wing-toc-fp)
set manual(merge-copyrights) \
[merge-copyrights $manual(merge-copyrights) $manual(wing-copyrights)]
diff --git a/tools/tcltk-man2html.tcl b/tools/tcltk-man2html.tcl
index a9327b8..efb7a13 100755..100644
--- a/tools/tcltk-man2html.tcl
+++ b/tools/tcltk-man2html.tcl
@@ -22,7 +22,7 @@ if {[catch {package require Tcl 8.6-} msg]} {
# Copyright (c) 1995-1997 Roger E. Critchlow Jr
# Copyright (c) 2004-2010 Donal K. Fellows
-set ::Version "50/8.6"
+set ::Version "50/8.7"
set ::CSSFILE "docs.css"
##
@@ -31,6 +31,52 @@ set ::CSSFILE "docs.css"
##
source [file join [file dirname [info script]] tcltk-man2html-utils.tcl]
+proc getversion {tclh {name {}}} {
+ if {[file exists $tclh]} {
+ set chan [open $tclh]
+ set data [read $chan]
+ close $chan
+ if {$name eq ""} {
+ set name [string toupper [file root [file tail $tclh]]]
+ }
+ # backslash isn't required in front of quote, but it keeps syntax
+ # highlighting straight in some editors
+ if {[regexp -lineanchor \
+ [string map [list @name@ $name] \
+ {^#define\s+@name@_VERSION\s+\"([^.])+\.([^.\"]+)}] \
+ $data -> major minor]} {
+ return [list $major $minor]
+ }
+ }
+}
+proc findversion {top name useversion} {
+ # Default search version is a glob pattern, switch it for string match:
+ if {$useversion eq {{,[8-9].[0-9]{,[.ab][0-9]{,[0-9]}}}}} {
+ set useversion {[8-9].[0-9]}
+ }
+ # Search:
+ set upper [string toupper $name]
+ foreach top1 [list $top $top/..] sub {{} generic} {
+ foreach dirname [
+ glob -nocomplain -tails -type d -directory $top1 *] {
+
+ set tclh [join [list $top1 $dirname {*}$sub ${name}.h] /]
+ set v [getversion $tclh $upper]
+ if {[llength $v]} {
+ lassign $v major minor
+ # to do
+ # use glob matching instead of string matching or add
+ # brace handling to [string matcch]
+ if {$useversion eq {} || [string match $useversion $major.$minor]} {
+ set top [file dirname [file dirname $tclh]]
+ set prefix [file dirname $top]
+ return [list $prefix [file tail $top] $major $minor]
+ }
+ }
+ }
+ }
+}
+
proc parse_command_line {} {
global argv Version
@@ -44,7 +90,9 @@ proc parse_command_line {} {
set tcldir {}
set webdir ../html
set build_tcl 0
+ set opt_build_tcl 0
set build_tk 0
+ set opt_build_tk 0
set verbose 0
# Default search version is a glob pattern
set useversion {{,[8-9].[0-9]{,[.ab][0-9]{,[0-9]}}}}
@@ -93,10 +141,12 @@ proc parse_command_line {} {
--tcl {
set build_tcl 1
+ set opt_build_tcl 1
}
--tk {
set build_tk 1
+ set opt_build_tk 1
}
--verbose=* {
@@ -115,22 +165,40 @@ proc parse_command_line {} {
set build_tk 1
}
+ set major ""
+ set minor ""
+
if {$build_tcl} {
- # Find Tcl.
+ # Find Tcl (firstly using glob pattern / backwards compatible way)
set tcldir [lindex [lsort [glob -nocomplain -tails -type d \
-directory $tcltkdir tcl$useversion]] end]
- if {$tcldir eq ""} {
+ if {$tcldir ne {}} {
+ # obtain version from generic header if we can:
+ lassign [getversion [file join $tcltkdir $tcldir generic tcl.h]] major minor
+ } else {
+ lassign [findversion $tcltkdir tcl $useversion] tcltkdir tcldir major minor
+ }
+ if {$tcldir eq {} && $opt_build_tcl} {
puts stderr "tcltk-man-html: couldn't find Tcl below $tcltkdir"
exit 1
}
- puts "using Tcl source directory $tcldir"
+ puts "using Tcl source directory $tcltkdir $tcldir"
}
+
if {$build_tk} {
- # Find Tk.
+ # Find Tk (firstly using glob pattern / backwards compatible way)
set tkdir [lindex [lsort [glob -nocomplain -tails -type d \
-directory $tcltkdir tk$useversion]] end]
- if {$tkdir eq ""} {
+ if {$tkdir ne {}} {
+ if {$major eq ""} {
+ # obtain version from generic header if we can:
+ lassign [getversion [file join $tcltkdir $tcldir generic tk.h]] major minor
+ }
+ } else {
+ lassign [findversion $tcltkdir tk $useversion] tcltkdir tkdir major minor
+ }
+ if {$tkdir eq {} && $opt_build_tk} {
puts stderr "tcltk-man-html: couldn't find Tk below $tcltkdir"
exit 1
}
@@ -143,7 +211,11 @@ proc parse_command_line {} {
global overall_title
set overall_title ""
if {$build_tcl} {
- append overall_title "[capitalize $tcldir]"
+ if {$major ne ""} {
+ append overall_title "Tcl $major.$minor"
+ } else {
+ append overall_title "Tcl [capitalize $tcldir]"
+ }
}
if {$build_tcl && $build_tk} {
append overall_title "/"
@@ -168,7 +240,7 @@ proc css-style args {
append style $tokens " \{" $body "\}\n"
}
proc css-stylesheet {} {
- set hBd "1px dotted #11577b"
+ set hBd "1px dotted #11577B"
css-style body div p th td li dd ul ol dl dt blockquote {
font-family: Verdana, sans-serif;
@@ -177,7 +249,7 @@ proc css-stylesheet {} {
font-family: 'Courier New', Courier, monospace;
}
css-style pre {
- background-color: #f6fcec;
+ background-color: #F6FCEC;
border-top: 1px solid #6A6A6A;
border-bottom: 1px solid #6A6A6A;
padding: 1em;
@@ -197,20 +269,20 @@ proc css-stylesheet {} {
}
css-style h1 {
font-size: 18px;
- color: #11577b;
+ color: #11577B;
border-bottom: $hBd;
margin-top: 0px;
}
css-style h2 {
font-size: 14px;
- color: #11577b;
- background-color: #c5dce8;
+ color: #11577B;
+ background-color: #C5DCE8;
padding-left: 1em;
border: 1px solid #6A6A6A;
}
css-style h3 h4 {
color: #1674A4;
- background-color: #e8f2f6;
+ background-color: #E8F2F6;
border-bottom: $hBd;
border-top: $hBd;
}
@@ -224,16 +296,16 @@ proc css-stylesheet {} {
width: 20em;
float: left;
padding: 2px;
- border-top: 1px solid #999;
+ border-top: 1px solid #999999;
}
css-style ".keylist dt" { font-weight: bold; }
css-style ".keylist dd" ".arguments dd" {
margin-left: 20em;
padding: 2px;
- border-top: 1px solid #999;
+ border-top: 1px solid #999999;
}
css-style .copy {
- background-color: #f6fcfc;
+ background-color: #F6FCFC;
white-space: pre;
font-size: 80%;
border-top: 1px solid #6A6A6A;
@@ -262,7 +334,7 @@ proc make-man-pages {html args} {
set manual(short-toc-n) 1
set manual(short-toc-fp) [open $html/[indexfile] w]
puts $manual(short-toc-fp) [htmlhead $overall_title $overall_title]
- puts $manual(short-toc-fp) "<DL class=\"keylist\">"
+ puts $manual(short-toc-fp) "<dl class=\"keylist\">"
set manual(merge-copyrights) {}
foreach arg $args {
@@ -306,13 +378,13 @@ proc make-man-pages {html args} {
foreach a $letters {
set keys [array names manual "keyword-\[[string totitle $a$a]\]*"]
if {[llength $keys]} {
- lappend keyheader "<A HREF=\"$a.htm\">$a</A>"
+ lappend keyheader "<a href=\"$a.html\">$a</a>"
} else {
# No keywords for this letter
lappend keyheader $a
}
}
- set keyheader <H3>[join $keyheader " |\n"]</H3>
+ set keyheader <h3>[join $keyheader " |\n"]</h3>
puts $keyfp $keyheader
foreach a $letters {
set keys [array names manual "keyword-\[[string totitle $a$a]\]*"]
@@ -320,16 +392,16 @@ proc make-man-pages {html args} {
continue
}
# Per-keyword page
- set afp [open $html/Keywords/$a.htm w]
+ set afp [open $html/Keywords/$a.html w]
puts $afp [htmlhead "$tcltkdesc Keywords - $a" \
"$tcltkdesc Keywords - $a" \
$overall_title "../[indexfile]"]
puts $afp $keyheader
- puts $afp "<DL class=\"keylist\">"
+ puts $afp "<dl class=\"keylist\">"
foreach k [lsort -dictionary $keys] {
set k [string range $k 8 end]
- puts $afp "<DT><A NAME=\"$k\">$k</A></DT>"
- puts $afp "<DD>"
+ puts $afp "<dt><a name=\"[nospace-text $k]\" id=\"[nospace-text $k]\">$k</a></dt>"
+ puts $afp "<dd>"
set refs {}
foreach man $manual(keyword-$k) {
set name [lindex $man 0]
@@ -339,32 +411,32 @@ proc make-man-pages {html args} {
if {[string match {*[<>""]*} $tooltip]} {
manerror "bad tooltip for $file: \"$tooltip\""
}
- lappend refs "<A HREF=\"../$file\" TITLE=\"$tooltip\">$name</A>"
+ lappend refs "<a href=\"../$file\" title=\"$tooltip\">$name</a>"
} else {
- lappend refs "<A HREF=\"../$file\">$name</A>"
+ lappend refs "<a href=\"../$file\">$name</a>"
}
}
- puts $afp "[join $refs {, }]</DD>"
+ puts $afp "[join $refs {, }]</dd>"
}
- puts $afp "</DL>"
+ puts $afp "</dl>"
# insert merged copyrights
puts $afp [copyout $manual(merge-copyrights)]
- puts $afp "</BODY></HTML>"
+ puts $afp "</body></html>"
close $afp
}
# insert merged copyrights
puts $keyfp [copyout $manual(merge-copyrights)]
- puts $keyfp "</BODY></HTML>"
+ puts $keyfp "</body></html>"
close $keyfp
##
## finish off short table of contents
##
- puts $manual(short-toc-fp) "<DT><A HREF=\"Keywords/[indexfile]\">Keywords</A><DD>The keywords from the $tcltkdesc man pages."
- puts $manual(short-toc-fp) "</DL>"
+ puts $manual(short-toc-fp) "<dt><a href=\"Keywords/[indexfile]\">Keywords</a><dd>The keywords from the $tcltkdesc man pages."
+ puts $manual(short-toc-fp) "</dl>"
# insert merged copyrights
puts $manual(short-toc-fp) [copyout $manual(merge-copyrights)]
- puts $manual(short-toc-fp) "</BODY></HTML>"
+ puts $manual(short-toc-fp) "</body></html>"
close $manual(short-toc-fp)
##
@@ -396,7 +468,7 @@ proc make-man-pages {html args} {
} else {
puts -nonewline stderr .
}
- set outfd [open $html/$manual(wing-file)/$manual(name).htm w]
+ set outfd [open $html/$manual(wing-file)/$manual(name).html w]
puts $outfd [htmlhead "$manual($manual(wing-file)-$manual(name)-title)" \
$manual(name) $wing_name "[indexfile]" \
$overall_title "../[indexfile]"]
@@ -414,7 +486,7 @@ proc make-man-pages {html args} {
foreach item $text {
puts $outfd [insert-cross-references $item]
}
- puts $outfd "</BODY></HTML>"
+ puts $outfd "</body></html>"
} on error msg {
if {$verbose} {
puts stderr $msg
@@ -733,9 +805,9 @@ try {
[list $tcltkdir/{$appdir}/doc/*.1 "$tcltkdesc Applications" UserCmd \
"The interpreters which implement $cmdesc."] \
[plus-base $build_tcl $tcldir doc/*.n {Tcl Commands} TclCmd \
- "The commands which the <B>tclsh</B> interpreter implements."] \
+ "The commands which the <b>tclsh</b> interpreter implements."] \
[plus-base $build_tk $tkdir doc/*.n {Tk Commands} TkCmd \
- "The additional commands which the <B>wish</B> interpreter implements."] \
+ "The additional commands which the <b>wish</b> interpreter implements."] \
{*}[plus-pkgs n {*}$packageBuildList] \
[plus-base $build_tcl $tcldir doc/*.3 {Tcl C API} TclLib \
"The C functions which a Tcl extended C program may use."] \
diff --git a/tools/tsdPerf.c b/tools/tsdPerf.c
index 40004b1..7a599e0 100644
--- a/tools/tsdPerf.c
+++ b/tools/tsdPerf.c
@@ -5,21 +5,21 @@ extern DLLEXPORT Tcl_PackageInitProc Tsdperf_Init;
static Tcl_ThreadDataKey key;
typedef struct {
- int value;
+ Tcl_WideInt value;
} TsdPerf;
static int
tsdPerfSetObjCmd(ClientData cdata, Tcl_Interp *interp, int objc, Tcl_Obj *const *objv) {
TsdPerf *perf = Tcl_GetThreadData(&key, sizeof(TsdPerf));
- int i;
+ Tcl_WideInt i;
if (2 != objc) {
Tcl_WrongNumArgs(interp, 1, objv, "value");
return TCL_ERROR;
}
- if (TCL_OK != Tcl_GetIntFromObj(interp, objv[1], &i)) {
+ if (TCL_OK != Tcl_GetWideIntFromObj(interp, objv[1], &i)) {
return TCL_ERROR;
}
@@ -33,14 +33,14 @@ tsdPerfGetObjCmd(ClientData cdata, Tcl_Interp *interp, int objc, Tcl_Obj *const
TsdPerf *perf = Tcl_GetThreadData(&key, sizeof(TsdPerf));
- Tcl_SetObjResult(interp, Tcl_NewIntObj(perf->value));
+ Tcl_SetObjResult(interp, Tcl_NewWideIntObj(perf->value));
return TCL_OK;
}
int
Tsdperf_Init(Tcl_Interp *interp) {
- if (Tcl_InitStubs(interp, TCL_VERSION, 0) == NULL) {
+ if (Tcl_InitStubs(interp, "8.5-", 0) == NULL) {
return TCL_ERROR;
}