#!/bin/sh
# this shellscript extracts:
#  Tcl
#
INPUT_FILE=/tmp/removeMe
OUTPUT_FILE=/tmp/removeMeToo
TO_WORD=PleaseDontFindThis
COL_CMD="col -b"
MAN_ARGS=""
MAN_CMD="man"
MAN_PATH=""
HELP_ROOT=./xfhelp/pages/

ARGC=$#
while [ $ARGC -gt 0 ]; do
  C=$1
  shift
  ARGC=`expr $ARGC - 1`
  case $C in
  -c)
    if [ $ARGC -gt 0 ]; then
      C=$1
      shift
      ARGC=`expr $ARGC - 1`
      COL_CMD=$C
    else
      echo "makeTcl error: expected col command for -c"
      exit 2
    fi;;
  -m)
    if [ $ARGC -gt 0 ]; then
      C=$1
      shift
      ARGC=`expr $ARGC - 1`
      MAN_PATH=$C
    else
      echo "makeTcl error: expected pathnames for -m"
      exit 2
    fi;;
  *)
    echo "makeTcl error: unknown option"
    echo "usage:"
    echo -n "makeTcl "
    echo -n "[-c <col command>] "
    echo -n "[-m <man path>] "
    exit 2
  esac
done

if ( test "$COL_CMD" = "" ); then
  COL_CMD="col -b"
fi

if ( test "$MAN_PATH" = "" ); then
  MAN_PATH=$MANPATH
fi

mkdir $HELP_ROOT 1>/dev/null 2>&1
mkdir $HELP_ROOT/Tcl 1>/dev/null 2>&1

rm $INPUT_FILE 1>/dev/null 2>&1

(MANPATH=$MAN_PATH; export MANPATH; $MAN_CMD $MAN_ARGS Tcl 2>/dev/null) | $COL_CMD > $INPUT_FILE 2>/dev/null
LINE_NUMBER=`wc -l $INPUT_FILE | awk '{print $1}'`
if ( test -s $INPUT_FILE -a $LINE_NUMBER -gt 10 ); then
  echo ""
  echo "Extracting from: Tcl"
  for i in "^INTRODUCTION" \
           "^INTERPRETERS" \
           "^DATA[ 	]+TYPES" \
           "^BASIC[ 	]+COMMAND[ 	]+SYNTAX" \
           "^EXPRESSIONS" "^LIST" \
           "^REGULAR[ 	]+EXPRESSIONS" \
           "^COMMAND[ 	]+RESULTS" \
           "^PROCEDURES" \
           "^VARIABLES[ 	]+-[ 	]+SCALARS[ 	]+AND[ 	]+ARRAYS" \
           "^BUILT-IN[ 	]+VARIABLES" \
           "^COMMAND[ 	]+RESULTS"; do
    FROM_LINE=`egrep -n "$i" $INPUT_FILE | awk -F: '{print $1}'`
    case $i in
      "^INTRODUCTION")
	echo "Extracting: INTRODUCTION"
  	TO_WORD="^INTERPRETERS"
	OUTPUT_FILE=Intro.H;;
      "^INTERPRETERS")
	echo "Extracting: INTERPRETERS"
	TO_WORD="^DATA[ 	]+TYPES"
	OUTPUT_FILE=Interpreter.H;;
      "^DATA[ 	]+TYPES")
	echo "Extracting: DATA TYPES"
	TO_WORD="^BASIC[ 	]+COMMAND[ 	]+SYNTAX"
	OUTPUT_FILE=DataTypes.H;;
      "^BASIC[ 	]+COMMAND[ 	]+SYNTAX")
	echo "Extracting: BASIC COMMAND SYNTAX"
	TO_WORD="^EXPRESSIONS"
	OUTPUT_FILE=Syntax.H;;
      "^EXPRESSIONS")
	echo "Extracting: EXPRESSIONS"
	TO_WORD="^LIST"
	OUTPUT_FILE=Expression.H;;
      "^LIST")
	echo "Extracting: LIST"
	TO_WORD="^REGULAR[ 	]+EXPRESSIONS"
	OUTPUT_FILE=Lists.H;;
      "^REGULAR[ 	]+EXPRESSIONS")
	echo "Extracting: REGULAR EXPRESSIONS"
	TO_WORD="^COMMAND[ 	]+RESULTS"
	OUTPUT_FILE=RegExp.H;;
      "^COMMAND[ 	]+RESULTS")
	echo "Extracting: COMMAND RESULTS"
	TO_WORD="^PROCEDURES"
	OUTPUT_FILE=CmdResults.H;;
      "^PROCEDURES")
	echo "Extracting: PROCEDURES"
	TO_WORD="^VARIABLES[ 	]+-[ 	]+SCALARS[ 	]+AND[ 	]+ARRAYS"
	OUTPUT_FILE=Procedures.H;;
      "^VARIABLES[ 	]+-[ 	]+SCALARS[ 	]+AND[ 	]+ARRAYS")
	echo "Extracting: VARIABLES - SCALARS AND ARRAYS"
	TO_WORD="^BUILT-IN[ 	]+COMMANDS"
	OUTPUT_FILE=Variables.H;;
      "^BUILT-IN[ 	]+VARIABLES")
	echo "Extracting: BUILT-IN VARIABLES"
	TO_WORD="^AUTHOR"
	OUTPUT_FILE=BuiltInVars.H;;
    esac
    TO_LINE=`egrep -n "$TO_WORD" $INPUT_FILE | awk -F: '{print $1}'`
    if ( test "$FROM_LINE" = ""); then
      echo "I could not find: $i"
    fi
    if ( test "$TO_LINE" = ""); then
      echo "I could not find: $TO_WORD"
    fi
    if ( test "$FROM_LINE" != "" && test "$TO_LINE" != ""); then
      awk '
        BEGIN {
          fromLine='$FROM_LINE'
          toLine='$TO_LINE'
        }
        {
          if (NR >= fromLine && NR < toLine) {
            print
          }
        }' < $INPUT_FILE | sed -e '/^[ 	]*[0-9][0-9]*$/d' | sed -e "/Tcl(n)/d" | sed -e "/Tcl(1)/d" | sed -e "/Tcl(3)/d" | uniq > $HELP_ROOT/Tcl/$OUTPUT_FILE
    fi
  done

  for i in "^[ 	]+append[ 	]+varName[ 	]+value" \
           "^[ 	]+array[ 	]+option[ 	]+arrayName" \
           "^[ 	]+break[ 	|]*$" \
           "^[ 	]+case[ 	]+string[ 	]+.in.[ 	]+pat" \
           "^[ 	]+catch[ 	]+command[ 	]+.varName." \
           "^[ 	]+cd[ 	]+.dirName." \
           "^[ 	]+close[ 	]+fileId" \
           "^[ 	]+concat[ 	]+arg[ 	]+.arg[ 	]+...." \
           "^[ 	]+continue[ 	|]*$" \
           "^[ 	]+eof[ 	]+fileId" \
           "^[ 	]+error[ 	]+message[ 	]+.info.[ 	]+.code." \
           "^[ 	]+eval[ 	]+arg[ 	]+.arg[ 	]+...." \
           "^[ 	]+exec[ 	]+arg[ 	]+.arg[ 	]+...." \
           "^[ 	]+exit[ 	]+.returnCode." \
           "^[ 	]+expr[ 	]+arg" \
           "^[ 	]+file[ 	]+option[ 	]+name[ 	]+.arg[ 	]+arg[ 	]+...." \
           "^[ 	]+flush[ 	]+fileId" \
           "^[ 	]+for[ 	]+start[ 	]+test[ 	]+next[ 	]+body" \
           "^[ 	]+foreach[ 	]+varname[ 	]+list[ 	]+body" \
           "^[ 	]+format[ 	]+formatString[ 	]+.arg[ 	]+arg[ 	]+...." \
           "^[ 	]+gets[ 	]+fileId[ 	]+.varName." \
           "^[ 	]+glob[ 	]+.-nocomplain.[ 	]+filename[ 	]+.filename[ 	]+...." \
           "^[ 	]+global[ 	]+varname[ 	]+.varname[ 	]+...." \
           "^[ 	]+history[ 	]+.option.[ 	]+.arg[ 	]+arg[ 	]+...." \
           "^[ 	]+if[ 	]+expr1[ 	]+.then.[ 	]+body1[ 	]+elseif[ 	]+expr2" \
           "^[ 	]+incr[ 	]+varName[ 	]+.increment." \
           "^[ 	]+info[ 	]+option[ 	]+.arg[ 	]+arg[ 	]+...." \
           "^[ 	]+join[ 	]+list[ 	]+.joinString." \
           "^[ 	]+lappend[ 	]+varName[ 	]+value[ 	]+.value[ 	]+value[ 	]+...." \
           "^[ 	]+lindex[ 	]+list[ 	]+index" \
           "^[ 	]+linsert[ 	]+list[ 	]+index[ 	]+element[ 	]+.element[ 	]+element[ 	]+...." \
           "^[ 	]+list[ 	]+arg[ 	]+.arg[ 	]+...." \
           "^[ 	]+llength[ 	]+list" \
           "^[ 	]+lrange[ 	]+list[ 	]+first[ 	]+last" \
           "^[ 	]+lreplace[ 	]+list[ 	]+first[ 	]+last[ 	]+.element[ 	]+element[ 	]+...." \
           "^[ 	]+lsearch[ 	]+list[ 	]+pattern" \
           "^[ 	]+lsort[ 	]+list" \
           "^[ 	]+open[ 	]+fileName[ 	]+.access." \
           "^[ 	]+proc[ 	]+name[ 	]+args[ 	]+body" \
           "^[ 	]+puts[ 	]+.-nonewline.[ 	]+.fileId.[ 	]+string" \
           "^[ 	]+pwd" \
           "^[ 	]+read[ 	]+.-nonewline.[ 	]+fileId[ 	|]*$" \
           "^[ 	]+regexp[ 	]+.-indices.[ 	]+.-nocase.[ 	]+exp[ 	]+string[ 	]+.matchVar." \
           "^[ 	]+regsub[ 	]+.-all.[ 	]+.-nocase.[ 	]+exp[ 	]+string[ 	]+subSpec[ 	]+varName" \
           "^[ 	]+rename[ 	]+oldName[ 	]+newName" \
           "^[ 	]+return[ 	]+.value.[ 	|]*$" \
           "^[ 	]+scan[ 	]+string[ 	]+format[ 	]+varname1[ 	]+.varname2[ 	]+...." \
           "^[ 	]+seek[ 	]+fileId[ 	]+offset[ 	]+.origin." \
           "^[ 	]+set[ 	]+varname[ 	]+.value." \
           "^[ 	]+source[ 	]+fileName" \
           "^[ 	]+split[ 	]+string[ 	]+.splitChars." \
           "^[ 	]+string[ 	]+option[ 	]+arg[ 	]+.arg[ 	]+...." \
           "^[ 	]+tell[ 	]+fileId" \
           "^[ 	]+time[ 	]+command[ 	]+.count." \
           "^[ 	]+trace[ 	]+option[ 	]+.arg[ 	]+arg[ 	]+...." \
           "^[ 	]+unknown[ 	]+cmdName[ 	]+.arg[ 	]+arg[ 	]+...." \
           "^[ 	]+unset[ 	]+name[ 	]+.name[ 	]+name[ 	]+...." \
           "^[ 	]+uplevel[ 	]+.level.[ 	]+command[ 	]+.command[ 	]+...." \
           "^[ 	]+upvar[ 	]+.level.[ 	]+otherVar[ 	]+myVar[ 	]+.otherVar[ 	]+myVar[ 	]+...." \
           "^[ 	]+while[ 	]+test[ 	]+body"; do
    FROM_LINE=`egrep -n "$i" $INPUT_FILE | awk -F: '{print $1}'`
    case $i in
      "^[ 	]+append[ 	]+varName[ 	]+value")
	echo "Extracting: append"
	TO_WORD="^[ 	]+array[ 	]+option[ 	]+arrayName"
	OUTPUT_FILE=append.H;;
      "^[ 	]+array[ 	]+option[ 	]+arrayName")
	echo "Extracting: array"
	TO_WORD="^[ 	]+break[ 	|]*$"
	OUTPUT_FILE=array.H;;
      "^[ 	]+break[ 	|]*$")
	echo "Extracting: break"
	TO_WORD="^[ 	]+case[ 	]+string[ 	]+.in.[ 	]+pat"
	OUTPUT_FILE=break.H;;
      "^[ 	]+case[ 	]+string[ 	]+.in.[ 	]+pat")
	echo "Extracting: case"
	TO_WORD="^[ 	]+catch[ 	]+command[ 	]+.varName."
	OUTPUT_FILE=case.H;;
      "^[ 	]+catch[ 	]+command[ 	]+.varName.")
	echo "Extracting: catch"
	TO_WORD="^[ 	]+cd[ 	]+.dirName."
	OUTPUT_FILE=catch.H;;
      "^[ 	]+cd[ 	]+.dirName.")
	echo "Extracting: cd"
	TO_WORD="^[ 	]+close[ 	]+fileId"
	OUTPUT_FILE=cd.H;;
      "^[ 	]+close[ 	]+fileId")
	echo "Extracting: close"
	TO_WORD="^[ 	]+concat[ 	]+arg[ 	]+.arg[ 	]+...."
	OUTPUT_FILE=close.H;;
      "^[ 	]+concat[ 	]+arg[ 	]+.arg[ 	]+....")
	echo "Extracting: concat"
	TO_WORD="^[ 	]+continue[ 	|]*$"
	OUTPUT_FILE=concat.H;;
      "^[ 	]+continue[ 	|]*$")
	echo "Extracting: continue"
	TO_WORD="^[ 	]+eof[ 	]+fileId"
  	OUTPUT_FILE=continue.H;;
      "^[ 	]+eof[ 	]+fileId")
	echo "Extracting: eof"
	TO_WORD="^[ 	]+error[ 	]+message[ 	]+.info.[ 	]+.code."
	OUTPUT_FILE=eof.H;;
      "^[ 	]+error[ 	]+message[ 	]+.info.[ 	]+.code.")
	echo "Extracting: error"
	TO_WORD="^[ 	]+eval[ 	]+arg[ 	]+.arg[ 	]+...."
	OUTPUT_FILE=error.H;;
      "^[ 	]+eval[ 	]+arg[ 	]+.arg[ 	]+....")
	echo "Extracting: eval"
	TO_WORD="^[ 	]+exec[ 	]+arg[ 	]+.arg[ 	]+...."
	OUTPUT_FILE=eval.H;;
      "^[ 	]+exec[ 	]+arg[ 	]+.arg[ 	]+....")
	echo "Extracting: exec"
	TO_WORD="^[ 	]+exit[ 	]+.returnCode."
	OUTPUT_FILE=exec.H;;
      "^[ 	]+exit[ 	]+.returnCode.")
	echo "Extracting: exit"
	TO_WORD="^[ 	]+expr[ 	]+arg"
	OUTPUT_FILE=exit.H;;
      "^[ 	]+expr[ 	]+arg")
	echo "Extracting: expr"
	TO_WORD="^[ 	]+file[ 	]+option[ 	]+name[ 	]+.arg[ 	]+arg[ 	]+...."
	OUTPUT_FILE=expr.H;;
      "^[ 	]+file[ 	]+option[ 	]+name[ 	]+.arg[ 	]+arg[ 	]+....")
	echo "Extracting: file"
	TO_WORD="^[ 	]+flush[ 	]+fileId"
	OUTPUT_FILE=file.H;;
      "^[ 	]+flush[ 	]+fileId")
	echo "Extracting: flush"
	TO_WORD="^[ 	]+for[ 	]+start[ 	]+test[ 	]+next[ 	]+body"
	OUTPUT_FILE=flush.H;;
      "^[ 	]+for[ 	]+start[ 	]+test[ 	]+next[ 	]+body")
	echo "Extracting: for"
	TO_WORD="^[ 	]+foreach[ 	]+varname[ 	]+list[ 	]+body"
	OUTPUT_FILE=for.H;;
      "^[ 	]+foreach[ 	]+varname[ 	]+list[ 	]+body")
	echo "Extracting: foreach"
	TO_WORD="^[ 	]+format[ 	]+formatString[ 	]+.arg[ 	]+arg[ 	]+...."
	OUTPUT_FILE=foreach.H;;
      "^[ 	]+format[ 	]+formatString[ 	]+.arg[ 	]+arg[ 	]+....")
	echo "Extracting: format"
	TO_WORD="^[ 	]+gets[ 	]+fileId[ 	]+.varName."
	OUTPUT_FILE=format.H;;
      "^[ 	]+gets[ 	]+fileId[ 	]+.varName.")
	echo "Extracting: gets"
	TO_WORD="^[ 	]+glob[ 	]+.-nocomplain.[ 	]+filename[ 	]+.filename[ 	]+...."
	OUTPUT_FILE=gets.H;;
      "^[ 	]+glob[ 	]+.-nocomplain.[ 	]+filename[ 	]+.filename[ 	]+....")
	echo "Extracting: glob"
	TO_WORD="^[ 	]+global[ 	]+varname[ 	]+.varname[ 	]+...."
	OUTPUT_FILE=glob.H;;
      "^[ 	]+global[ 	]+varname[ 	]+.varname[ 	]+....")
	echo "Extracting: global"
	TO_WORD="^[ 	]+history[ 	]+.option.[ 	]+.arg[ 	]+arg[ 	]+...."
	OUTPUT_FILE=global.H;;
      "^[ 	]+history[ 	]+.option.[ 	]+.arg[ 	]+arg[ 	]+....")
	echo "Extracting: history"
	TO_WORD="^[ 	]+if[ 	]+expr1[ 	]+.then.[ 	]+body1[ 	]+elseif[ 	]+expr2"
	OUTPUT_FILE=history.H;;
      "^[ 	]+if[ 	]+expr1[ 	]+.then.[ 	]+body1[ 	]+elseif[ 	]+expr2")
	echo "Extracting: if"
	TO_WORD="^[ 	]+incr[ 	]+varName[ 	]+.increment."
	OUTPUT_FILE=if.H;;
      "^[ 	]+incr[ 	]+varName[ 	]+.increment.")
	echo "Extracting: incr"
	TO_WORD="^[ 	]+info[ 	]+option[ 	]+.arg[ 	]+arg[ 	]+...."
	OUTPUT_FILE=incr.H;;
      "^[ 	]+info[ 	]+option[ 	]+.arg[ 	]+arg[ 	]+....")
	echo "Extracting: info"
	TO_WORD="^[ 	]+join[ 	]+list[ 	]+.joinString."
	OUTPUT_FILE=info.H;;
      "^[ 	]+join[ 	]+list[ 	]+.joinString.")
	echo "Extracting: join"
	TO_WORD="^[ 	]+lappend[ 	]+varName[ 	]+value[ 	]+.value[ 	]+value[ 	]+...."
	OUTPUT_FILE=join.H;;
      "^[ 	]+lappend[ 	]+varName[ 	]+value[ 	]+.value[ 	]+value[ 	]+....")
	echo "Extracting: lappend"
	TO_WORD="^[ 	]+lindex[ 	]+list[ 	]+index"
	OUTPUT_FILE=lappend.H;;
      "^[ 	]+lindex[ 	]+list[ 	]+index")
	echo "Extracting: lindex"
	TO_WORD="^[ 	]+linsert[ 	]+list[ 	]+index[ 	]+element[ 	]+.element[ 	]+element[ 	]+...."
	OUTPUT_FILE=lindex.H;;
      "^[ 	]+linsert[ 	]+list[ 	]+index[ 	]+element[ 	]+.element[ 	]+element[ 	]+....")
	echo "Extracting: linsert"
	TO_WORD="^[ 	]+list[ 	]+arg[ 	]+.arg[ 	]+...."
	OUTPUT_FILE=linsert.H;;
      "^[ 	]+list[ 	]+arg[ 	]+.arg[ 	]+....")
	echo "Extracting: list"
	TO_WORD="^[ 	]+llength[ 	]+list"
	OUTPUT_FILE=list.H;;
      "^[ 	]+llength[ 	]+list")
	echo "Extracting: llength"
	TO_WORD="^[ 	]+lrange[ 	]+list[ 	]+first[ 	]+last"
	OUTPUT_FILE=llength.H;;
      "^[ 	]+lrange[ 	]+list[ 	]+first[ 	]+last")
	echo "Extracting: lrange"
	TO_WORD="^[ 	]+lreplace[ 	]+list[ 	]+first[ 	]+last[ 	]+.element[ 	]+element[ 	]+...."
	OUTPUT_FILE=lrange.H;;
      "^[ 	]+lreplace[ 	]+list[ 	]+first[ 	]+last[ 	]+.element[ 	]+element[ 	]+....")
	echo "Extracting: lreplace"
	TO_WORD="^[ 	]+lsearch[ 	]+list[ 	]+pattern"
	OUTPUT_FILE=lreplace.H;;
      "^[ 	]+lsearch[ 	]+list[ 	]+pattern")
	echo "Extracting: lsearch"
	TO_WORD="^[ 	]+lsort[ 	]+list"
	OUTPUT_FILE=lsearch.H;;
      "^[ 	]+lsort[ 	]+list")
	echo "Extracting: lsort"
	TO_WORD="^[ 	]+open[ 	]+fileName[ 	]+.access."
	OUTPUT_FILE=lsort.H;;
      "^[ 	]+open[ 	]+fileName[ 	]+.access.")
	echo "Extracting: open"
	TO_WORD="^[ 	]+proc[ 	]+name[ 	]+args[ 	]+body"
	OUTPUT_FILE=open.H;;
      "^[ 	]+proc[ 	]+name[ 	]+args[ 	]+body")
	echo "Extracting: proc"
	TO_WORD="^[ 	]+puts[ 	]+.-nonewline.[ 	]+.fileId.[ 	]+string"
	OUTPUT_FILE=proc.H;;
      "^[ 	]+puts[ 	]+.-nonewline.[ 	]+.fileId.[ 	]+string")
	echo "Extracting: puts"
	TO_WORD="^[ 	]+pwd"
	OUTPUT_FILE=puts.H;;
      "^[ 	]+pwd")
	echo "Extracting: pwd"
	TO_WORD="^[ 	]+read[ 	]+.-nonewline.[ 	]+fileId[ 	|]*$"
	OUTPUT_FILE=pwd.H;;
      "^[ 	]+read[ 	]+.-nonewline.[ 	]+fileId[ 	|]*$")
	echo "Extracting: read"
	TO_WORD="^[ 	]+regexp[ 	]+.-indices.[ 	]+.-nocase.[ 	]+exp[ 	]+string[ 	]+.matchVar."
	OUTPUT_FILE=read.H;;
      "^[ 	]+regexp[ 	]+.-indices.[ 	]+.-nocase.[ 	]+exp[ 	]+string[ 	]+.matchVar.")
	echo "Extracting: regexp"
	TO_WORD="^[ 	]+regsub[ 	]+.-all.[ 	]+.-nocase.[ 	]+exp[ 	]+string[ 	]+subSpec[ 	]+varName"
	OUTPUT_FILE=regexp.H;;
      "^[ 	]+regsub[ 	]+.-all.[ 	]+.-nocase.[ 	]+exp[ 	]+string[ 	]+subSpec[ 	]+varName")
	echo "Extracting: regsub"
	TO_WORD="^[ 	]+rename[ 	]+oldName[ 	]+newName"
	OUTPUT_FILE=regsub.H;;
      "^[ 	]+rename[ 	]+oldName[ 	]+newName")
	echo "Extracting: rename"
	TO_WORD="^[ 	]+return[ 	]+.value.[ 	|]*$"
	OUTPUT_FILE=rename.H;;
      "^[ 	]+return[ 	]+.value.[ 	|]*$")
	echo "Extracting: return"
	TO_WORD="^[ 	]+scan[ 	]+string[ 	]+format[ 	]+varname1[ 	]+.varname2[ 	]+...."
	OUTPUT_FILE=return.H;;
      "^[ 	]+scan[ 	]+string[ 	]+format[ 	]+varname1[ 	]+.varname2[ 	]+....")
	echo "Extracting: scan"
	TO_WORD="^[ 	]+seek[ 	]+fileId[ 	]+offset[ 	]+.origin."
	OUTPUT_FILE=scan.H;;
      "^[ 	]+seek[ 	]+fileId[ 	]+offset[ 	]+.origin.")
	echo "Extracting: seek"
	TO_WORD="^[ 	]+set[ 	]+varname[ 	]+.value."
	OUTPUT_FILE=seek.H;;
      "^[ 	]+set[ 	]+varname[ 	]+.value.")
	echo "Extracting: set"
	TO_WORD="^[ 	]+source[ 	]+fileName"
	OUTPUT_FILE=set.H;;
      "^[ 	]+source[ 	]+fileName")
	echo "Extracting: source"
	TO_WORD="^[ 	]+split[ 	]+string[ 	]+.splitChars."
	OUTPUT_FILE=source.H;;
      "^[ 	]+split[ 	]+string[ 	]+.splitChars.")
	echo "Extracting: split"
	TO_WORD="^[ 	]+string[ 	]+option[ 	]+arg[ 	]+.arg[ 	]+...."
	OUTPUT_FILE=split.H;;
      "^[ 	]+string[ 	]+option[ 	]+arg[ 	]+.arg[ 	]+....")
	echo "Extracting: string"
	TO_WORD="^[ 	]+tell[ 	]+fileId"
	OUTPUT_FILE=string.H;;
      "^[ 	]+tell[ 	]+fileId")
	echo "Extracting: tell"
	TO_WORD="^[ 	]+time[ 	]+command[ 	]+.count."
	OUTPUT_FILE=tell.H;;
      "^[ 	]+time[ 	]+command[ 	]+.count.")
	echo "Extracting: time"
	TO_WORD="^[ 	]+trace[ 	]+option[ 	]+.arg[ 	]+arg[ 	]+...."
	OUTPUT_FILE=time.H;;
      "^[ 	]+trace[ 	]+option[ 	]+.arg[ 	]+arg[ 	]+....")
	echo "Extracting: trace"
	TO_WORD="^[ 	]+unknown[ 	]+cmdName[ 	]+.arg[ 	]+arg[ 	]+...."
	OUTPUT_FILE=trace.H;;
      "^[ 	]+unknown[ 	]+cmdName[ 	]+.arg[ 	]+arg[ 	]+....")
	echo "Extracting: unknown"
	TO_WORD="^[ 	]+unset[ 	]+name[ 	]+.name[ 	]+name[ 	]+...."
	OUTPUT_FILE=unknown.H;;
      "^[ 	]+unset[ 	]+name[ 	]+.name[ 	]+name[ 	]+....")
	echo "Extracting: unset"
	TO_WORD="^[ 	]+uplevel[ 	]+.level.[ 	]+command[ 	]+.command[ 	]+...."
	OUTPUT_FILE=unset.H;;
      "^[ 	]+uplevel[ 	]+.level.[ 	]+command[ 	]+.command[ 	]+....")
	echo "Extracting: uplevel"
	TO_WORD="^[ 	]+upvar[ 	]+.level.[ 	]+otherVar[ 	]+myVar[ 	]+.otherVar[ 	]+myVar[ 	]+...."
	OUTPUT_FILE=uplevel.H;;
      "^[ 	]+upvar[ 	]+.level.[ 	]+otherVar[ 	]+myVar[ 	]+.otherVar[ 	]+myVar[ 	]+....")
	echo "Extracting: upvar"
	TO_WORD="^[ 	]+while[ 	]+test[ 	]+body"
	OUTPUT_FILE=upvar.H;;
      "^[ 	]+while[ 	]+test[ 	]+body")
	echo "Extracting: while"
	TO_WORD="^BUILT-IN[ 	]+VARIABLES"
	OUTPUT_FILE=while.H;;
    esac
    TO_LINE=`egrep -n "$TO_WORD" $INPUT_FILE | awk -F: '{print $1}'`
    if ( test "$FROM_LINE" = ""); then
      echo "I could not find: $i"
    fi
    if ( test "$TO_LINE" = ""); then
      echo "I could not find: $TO_WORD"
    fi
    if ( test "$FROM_LINE" != "" && test "$TO_LINE" != ""); then
      awk '
        BEGIN {
          fromLine='$FROM_LINE'
          toLine='$TO_LINE'
        }
        {
          if (NR >= fromLine && NR < toLine) {
            print
          }
        }' < $INPUT_FILE | sed -e '/^[ 	]*[0-9][0-9]*$/d' | sed -e "/Tcl(n)/d" | sed -e "/Tcl(1)/d" | sed -e "/Tcl(3)/d" | uniq > $HELP_ROOT/Tcl/$OUTPUT_FILE
    fi
  done
else
  echo "I was not able to find: Tcl"
fi

rm $INPUT_FILE 1>/dev/null 2>&1
