mirror of
https://github.com/Gator96100/ProxSpace.git
synced 2025-08-14 02:27:03 -07:00
Added missing git tools and libraries
This commit is contained in:
parent
74afd8405c
commit
e5839ac008
1482 changed files with 279435 additions and 0 deletions
BIN
msys/mingw/bin/WhoUses.exe
Normal file
BIN
msys/mingw/bin/WhoUses.exe
Normal file
Binary file not shown.
BIN
msys/mingw/bin/acountry.exe
Normal file
BIN
msys/mingw/bin/acountry.exe
Normal file
Binary file not shown.
BIN
msys/mingw/bin/adig.exe
Normal file
BIN
msys/mingw/bin/adig.exe
Normal file
Binary file not shown.
BIN
msys/mingw/bin/ahost.exe
Normal file
BIN
msys/mingw/bin/ahost.exe
Normal file
Binary file not shown.
BIN
msys/mingw/bin/antiword.exe
Normal file
BIN
msys/mingw/bin/antiword.exe
Normal file
Binary file not shown.
BIN
msys/mingw/bin/blocked-file-util.exe
Normal file
BIN
msys/mingw/bin/blocked-file-util.exe
Normal file
Binary file not shown.
BIN
msys/mingw/bin/bunzip2.exe
Normal file
BIN
msys/mingw/bin/bunzip2.exe
Normal file
Binary file not shown.
BIN
msys/mingw/bin/bzcat.exe
Normal file
BIN
msys/mingw/bin/bzcat.exe
Normal file
Binary file not shown.
76
msys/mingw/bin/bzcmp
Normal file
76
msys/mingw/bin/bzcmp
Normal file
|
@ -0,0 +1,76 @@
|
|||
#!/bin/sh
|
||||
# sh is buggy on RS/6000 AIX 3.2. Replace above line with #!/bin/ksh
|
||||
|
||||
# Bzcmp/diff wrapped for bzip2,
|
||||
# adapted from zdiff by Philippe Troin <phil@fifi.org> for Debian GNU/Linux.
|
||||
|
||||
# Bzcmp and bzdiff are used to invoke the cmp or the diff pro-
|
||||
# gram on compressed files. All options specified are passed
|
||||
# directly to cmp or diff. If only 1 file is specified, then
|
||||
# the files compared are file1 and an uncompressed file1.gz.
|
||||
# If two files are specified, then they are uncompressed (if
|
||||
# necessary) and fed to cmp or diff. The exit status from cmp
|
||||
# or diff is preserved.
|
||||
|
||||
PATH="/usr/bin:/bin:$PATH"; export PATH
|
||||
prog=`echo $0 | sed 's|.*/||'`
|
||||
case "$prog" in
|
||||
*cmp) comp=${CMP-cmp} ;;
|
||||
*) comp=${DIFF-diff} ;;
|
||||
esac
|
||||
|
||||
OPTIONS=
|
||||
FILES=
|
||||
for ARG
|
||||
do
|
||||
case "$ARG" in
|
||||
-*) OPTIONS="$OPTIONS $ARG";;
|
||||
*) if test -f "$ARG"; then
|
||||
FILES="$FILES $ARG"
|
||||
else
|
||||
echo "${prog}: $ARG not found or not a regular file"
|
||||
exit 1
|
||||
fi ;;
|
||||
esac
|
||||
done
|
||||
if test -z "$FILES"; then
|
||||
echo "Usage: $prog [${comp}_options] file [file]"
|
||||
exit 1
|
||||
fi
|
||||
tmp=`mktemp ${TMPDIR:-/tmp}/bzdiff.XXXXXXXXXX` || {
|
||||
echo 'cannot create a temporary file' >&2
|
||||
exit 1
|
||||
}
|
||||
set $FILES
|
||||
if test $# -eq 1; then
|
||||
FILE=`echo "$1" | sed 's/.bz2$//'`
|
||||
bzip2 -cd "$FILE.bz2" | $comp $OPTIONS - "$FILE"
|
||||
STAT="$?"
|
||||
|
||||
elif test $# -eq 2; then
|
||||
case "$1" in
|
||||
*.bz2)
|
||||
case "$2" in
|
||||
*.bz2)
|
||||
F=`echo "$2" | sed 's|.*/||;s|.bz2$||'`
|
||||
bzip2 -cdfq "$2" > $tmp
|
||||
bzip2 -cdfq "$1" | $comp $OPTIONS - $tmp
|
||||
STAT="$?"
|
||||
/bin/rm -f $tmp;;
|
||||
|
||||
*) bzip2 -cdfq "$1" | $comp $OPTIONS - "$2"
|
||||
STAT="$?";;
|
||||
esac;;
|
||||
*) case "$2" in
|
||||
*.bz2)
|
||||
bzip2 -cdfq "$2" | $comp $OPTIONS "$1" -
|
||||
STAT="$?";;
|
||||
*) $comp $OPTIONS "$1" "$2"
|
||||
STAT="$?";;
|
||||
esac;;
|
||||
esac
|
||||
exit "$STAT"
|
||||
else
|
||||
echo "Usage: $prog [${comp}_options] file [file]"
|
||||
exit 1
|
||||
fi
|
76
msys/mingw/bin/bzdiff
Normal file
76
msys/mingw/bin/bzdiff
Normal file
|
@ -0,0 +1,76 @@
|
|||
#!/bin/sh
|
||||
# sh is buggy on RS/6000 AIX 3.2. Replace above line with #!/bin/ksh
|
||||
|
||||
# Bzcmp/diff wrapped for bzip2,
|
||||
# adapted from zdiff by Philippe Troin <phil@fifi.org> for Debian GNU/Linux.
|
||||
|
||||
# Bzcmp and bzdiff are used to invoke the cmp or the diff pro-
|
||||
# gram on compressed files. All options specified are passed
|
||||
# directly to cmp or diff. If only 1 file is specified, then
|
||||
# the files compared are file1 and an uncompressed file1.gz.
|
||||
# If two files are specified, then they are uncompressed (if
|
||||
# necessary) and fed to cmp or diff. The exit status from cmp
|
||||
# or diff is preserved.
|
||||
|
||||
PATH="/usr/bin:/bin:$PATH"; export PATH
|
||||
prog=`echo $0 | sed 's|.*/||'`
|
||||
case "$prog" in
|
||||
*cmp) comp=${CMP-cmp} ;;
|
||||
*) comp=${DIFF-diff} ;;
|
||||
esac
|
||||
|
||||
OPTIONS=
|
||||
FILES=
|
||||
for ARG
|
||||
do
|
||||
case "$ARG" in
|
||||
-*) OPTIONS="$OPTIONS $ARG";;
|
||||
*) if test -f "$ARG"; then
|
||||
FILES="$FILES $ARG"
|
||||
else
|
||||
echo "${prog}: $ARG not found or not a regular file"
|
||||
exit 1
|
||||
fi ;;
|
||||
esac
|
||||
done
|
||||
if test -z "$FILES"; then
|
||||
echo "Usage: $prog [${comp}_options] file [file]"
|
||||
exit 1
|
||||
fi
|
||||
tmp=`mktemp ${TMPDIR:-/tmp}/bzdiff.XXXXXXXXXX` || {
|
||||
echo 'cannot create a temporary file' >&2
|
||||
exit 1
|
||||
}
|
||||
set $FILES
|
||||
if test $# -eq 1; then
|
||||
FILE=`echo "$1" | sed 's/.bz2$//'`
|
||||
bzip2 -cd "$FILE.bz2" | $comp $OPTIONS - "$FILE"
|
||||
STAT="$?"
|
||||
|
||||
elif test $# -eq 2; then
|
||||
case "$1" in
|
||||
*.bz2)
|
||||
case "$2" in
|
||||
*.bz2)
|
||||
F=`echo "$2" | sed 's|.*/||;s|.bz2$||'`
|
||||
bzip2 -cdfq "$2" > $tmp
|
||||
bzip2 -cdfq "$1" | $comp $OPTIONS - $tmp
|
||||
STAT="$?"
|
||||
/bin/rm -f $tmp;;
|
||||
|
||||
*) bzip2 -cdfq "$1" | $comp $OPTIONS - "$2"
|
||||
STAT="$?";;
|
||||
esac;;
|
||||
*) case "$2" in
|
||||
*.bz2)
|
||||
bzip2 -cdfq "$2" | $comp $OPTIONS "$1" -
|
||||
STAT="$?";;
|
||||
*) $comp $OPTIONS "$1" "$2"
|
||||
STAT="$?";;
|
||||
esac;;
|
||||
esac
|
||||
exit "$STAT"
|
||||
else
|
||||
echo "Usage: $prog [${comp}_options] file [file]"
|
||||
exit 1
|
||||
fi
|
132
msys/mingw/bin/bzegrep
Normal file
132
msys/mingw/bin/bzegrep
Normal file
|
@ -0,0 +1,132 @@
|
|||
#!/bin/sh
|
||||
|
||||
# bzgrep -- a wrapper around a grep program that decompresses files as needed
|
||||
# Adapted from zgrep of the Debian gzip package by Anibal Monsalve Salazar.
|
||||
# Adapted from a version sent by Charles Levert <charles@comm.polymtl.ca>
|
||||
|
||||
# Copyright (C) 1998, 2001, 2002 Free Software Foundation
|
||||
# Copyright (C) 1993 Jean-loup Gailly
|
||||
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
# 02111-1307, USA.
|
||||
|
||||
PATH="/usr/bin:$PATH"; export PATH
|
||||
|
||||
prog=`echo "$0" | sed 's|.*/||'`
|
||||
case "$prog" in
|
||||
*egrep) grep=${EGREP-egrep} ;;
|
||||
*fgrep) grep=${FGREP-fgrep} ;;
|
||||
*) grep=${GREP-grep} ;;
|
||||
esac
|
||||
|
||||
pat=""
|
||||
after_dash_dash=""
|
||||
files_with_matches=0
|
||||
files_without_matches=0
|
||||
no_filename=0
|
||||
with_filename=0
|
||||
|
||||
while test $# -ne 0; do
|
||||
case "$after_dash_dash$1" in
|
||||
--d* | --rec*) echo >&2 "$0: $1: option not supported"; exit 2;;
|
||||
--files-with-*) files_with_matches=1;;
|
||||
--files-witho*) files_without_matches=1;;
|
||||
--no-f*) no_filename=1;;
|
||||
--wi*) with_filename=1;;
|
||||
--*) ;;
|
||||
-*)
|
||||
case "$1" in
|
||||
-*[dr]*) echo >&2 "$0: $1: option not supported"; exit 2;;
|
||||
esac
|
||||
case "$1" in
|
||||
-*H*) with_filename=1;;
|
||||
esac
|
||||
case "$1" in
|
||||
-*h*) no_filename=1;;
|
||||
esac
|
||||
case "$1" in
|
||||
-*L*) files_without_matches=1;;
|
||||
esac
|
||||
case "$1" in
|
||||
-*l*) files_with_matches=1;;
|
||||
esac;;
|
||||
esac
|
||||
case "$after_dash_dash$1" in
|
||||
-[ef]) opt="$opt $1"; shift; pat="$1"
|
||||
if test "$grep" = grep; then # grep is buggy with -e on SVR4
|
||||
grep=egrep
|
||||
fi;;
|
||||
-[ABCdm])opt="$opt $1 $2"; shift;;
|
||||
--) opt="$opt $1"; after_dash_dash=1;;
|
||||
-*) opt="$opt $1";;
|
||||
*) if test -z "$pat"; then
|
||||
pat="$1"
|
||||
else
|
||||
break;
|
||||
fi;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
if test -z "$pat"; then
|
||||
echo "grep through bzip2 files"
|
||||
echo "usage: $prog [grep_options] pattern [files]"
|
||||
exit 2
|
||||
fi
|
||||
|
||||
if test $# -eq 0; then
|
||||
bzip2 -cdfq | $grep $opt "$pat"
|
||||
exit $?
|
||||
fi
|
||||
|
||||
res=0
|
||||
for i do
|
||||
bzip2 -cdfq -- "$i" |
|
||||
if test $files_with_matches -eq 1; then
|
||||
$grep $opt "$pat" > /dev/null && printf "%s\n" "$i"
|
||||
elif test $files_without_matches -eq 1; then
|
||||
$grep $opt "$pat" > /dev/null || printf "%s\n" "$i"
|
||||
elif test $with_filename -eq 0 && { test $# -eq 1 || test $no_filename -eq 1; }; then
|
||||
$grep $opt "$pat"
|
||||
else
|
||||
i=$(echo "$i" | sed -e 's/[\\|&]/\\&/g')
|
||||
if test $with_filename -eq 1; then
|
||||
sed_script="s|^[^:]*:|${i}:|"
|
||||
else
|
||||
sed_script="s|^|${i}:|"
|
||||
fi
|
||||
# Hack adapted from GPLed code at
|
||||
# http://home.comcast.net/~j.p.h/cus-faq-2
|
||||
# Has the same effect as the following two lines of bash:
|
||||
#
|
||||
# $grep $opt "$pat" | sed "$sed_script"
|
||||
# exit ${PIPESTATUS[0]}
|
||||
#
|
||||
# Inside the `...`, fd4 goes to the pipe whose other end is read
|
||||
# and passed to eval; fd1 is the normal standard output
|
||||
# preserved the line before with exec 3>&1
|
||||
exec 3>&1
|
||||
eval `
|
||||
exec 4>&1 >&3 3>&-
|
||||
{
|
||||
$grep $opt "$pat" 4>&-; echo "r=$?;" >&4
|
||||
} | sed "$sed_script"
|
||||
`
|
||||
exit $r
|
||||
fi
|
||||
r=$?
|
||||
test $res -lt $r && res=$r
|
||||
done
|
||||
exit $res
|
132
msys/mingw/bin/bzfgrep
Normal file
132
msys/mingw/bin/bzfgrep
Normal file
|
@ -0,0 +1,132 @@
|
|||
#!/bin/sh
|
||||
|
||||
# bzgrep -- a wrapper around a grep program that decompresses files as needed
|
||||
# Adapted from zgrep of the Debian gzip package by Anibal Monsalve Salazar.
|
||||
# Adapted from a version sent by Charles Levert <charles@comm.polymtl.ca>
|
||||
|
||||
# Copyright (C) 1998, 2001, 2002 Free Software Foundation
|
||||
# Copyright (C) 1993 Jean-loup Gailly
|
||||
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
# 02111-1307, USA.
|
||||
|
||||
PATH="/usr/bin:$PATH"; export PATH
|
||||
|
||||
prog=`echo "$0" | sed 's|.*/||'`
|
||||
case "$prog" in
|
||||
*egrep) grep=${EGREP-egrep} ;;
|
||||
*fgrep) grep=${FGREP-fgrep} ;;
|
||||
*) grep=${GREP-grep} ;;
|
||||
esac
|
||||
|
||||
pat=""
|
||||
after_dash_dash=""
|
||||
files_with_matches=0
|
||||
files_without_matches=0
|
||||
no_filename=0
|
||||
with_filename=0
|
||||
|
||||
while test $# -ne 0; do
|
||||
case "$after_dash_dash$1" in
|
||||
--d* | --rec*) echo >&2 "$0: $1: option not supported"; exit 2;;
|
||||
--files-with-*) files_with_matches=1;;
|
||||
--files-witho*) files_without_matches=1;;
|
||||
--no-f*) no_filename=1;;
|
||||
--wi*) with_filename=1;;
|
||||
--*) ;;
|
||||
-*)
|
||||
case "$1" in
|
||||
-*[dr]*) echo >&2 "$0: $1: option not supported"; exit 2;;
|
||||
esac
|
||||
case "$1" in
|
||||
-*H*) with_filename=1;;
|
||||
esac
|
||||
case "$1" in
|
||||
-*h*) no_filename=1;;
|
||||
esac
|
||||
case "$1" in
|
||||
-*L*) files_without_matches=1;;
|
||||
esac
|
||||
case "$1" in
|
||||
-*l*) files_with_matches=1;;
|
||||
esac;;
|
||||
esac
|
||||
case "$after_dash_dash$1" in
|
||||
-[ef]) opt="$opt $1"; shift; pat="$1"
|
||||
if test "$grep" = grep; then # grep is buggy with -e on SVR4
|
||||
grep=egrep
|
||||
fi;;
|
||||
-[ABCdm])opt="$opt $1 $2"; shift;;
|
||||
--) opt="$opt $1"; after_dash_dash=1;;
|
||||
-*) opt="$opt $1";;
|
||||
*) if test -z "$pat"; then
|
||||
pat="$1"
|
||||
else
|
||||
break;
|
||||
fi;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
if test -z "$pat"; then
|
||||
echo "grep through bzip2 files"
|
||||
echo "usage: $prog [grep_options] pattern [files]"
|
||||
exit 2
|
||||
fi
|
||||
|
||||
if test $# -eq 0; then
|
||||
bzip2 -cdfq | $grep $opt "$pat"
|
||||
exit $?
|
||||
fi
|
||||
|
||||
res=0
|
||||
for i do
|
||||
bzip2 -cdfq -- "$i" |
|
||||
if test $files_with_matches -eq 1; then
|
||||
$grep $opt "$pat" > /dev/null && printf "%s\n" "$i"
|
||||
elif test $files_without_matches -eq 1; then
|
||||
$grep $opt "$pat" > /dev/null || printf "%s\n" "$i"
|
||||
elif test $with_filename -eq 0 && { test $# -eq 1 || test $no_filename -eq 1; }; then
|
||||
$grep $opt "$pat"
|
||||
else
|
||||
i=$(echo "$i" | sed -e 's/[\\|&]/\\&/g')
|
||||
if test $with_filename -eq 1; then
|
||||
sed_script="s|^[^:]*:|${i}:|"
|
||||
else
|
||||
sed_script="s|^|${i}:|"
|
||||
fi
|
||||
# Hack adapted from GPLed code at
|
||||
# http://home.comcast.net/~j.p.h/cus-faq-2
|
||||
# Has the same effect as the following two lines of bash:
|
||||
#
|
||||
# $grep $opt "$pat" | sed "$sed_script"
|
||||
# exit ${PIPESTATUS[0]}
|
||||
#
|
||||
# Inside the `...`, fd4 goes to the pipe whose other end is read
|
||||
# and passed to eval; fd1 is the normal standard output
|
||||
# preserved the line before with exec 3>&1
|
||||
exec 3>&1
|
||||
eval `
|
||||
exec 4>&1 >&3 3>&-
|
||||
{
|
||||
$grep $opt "$pat" 4>&-; echo "r=$?;" >&4
|
||||
} | sed "$sed_script"
|
||||
`
|
||||
exit $r
|
||||
fi
|
||||
r=$?
|
||||
test $res -lt $r && res=$r
|
||||
done
|
||||
exit $res
|
132
msys/mingw/bin/bzgrep
Normal file
132
msys/mingw/bin/bzgrep
Normal file
|
@ -0,0 +1,132 @@
|
|||
#!/bin/sh
|
||||
|
||||
# bzgrep -- a wrapper around a grep program that decompresses files as needed
|
||||
# Adapted from zgrep of the Debian gzip package by Anibal Monsalve Salazar.
|
||||
# Adapted from a version sent by Charles Levert <charles@comm.polymtl.ca>
|
||||
|
||||
# Copyright (C) 1998, 2001, 2002 Free Software Foundation
|
||||
# Copyright (C) 1993 Jean-loup Gailly
|
||||
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
# 02111-1307, USA.
|
||||
|
||||
PATH="/usr/bin:$PATH"; export PATH
|
||||
|
||||
prog=`echo "$0" | sed 's|.*/||'`
|
||||
case "$prog" in
|
||||
*egrep) grep=${EGREP-egrep} ;;
|
||||
*fgrep) grep=${FGREP-fgrep} ;;
|
||||
*) grep=${GREP-grep} ;;
|
||||
esac
|
||||
|
||||
pat=""
|
||||
after_dash_dash=""
|
||||
files_with_matches=0
|
||||
files_without_matches=0
|
||||
no_filename=0
|
||||
with_filename=0
|
||||
|
||||
while test $# -ne 0; do
|
||||
case "$after_dash_dash$1" in
|
||||
--d* | --rec*) echo >&2 "$0: $1: option not supported"; exit 2;;
|
||||
--files-with-*) files_with_matches=1;;
|
||||
--files-witho*) files_without_matches=1;;
|
||||
--no-f*) no_filename=1;;
|
||||
--wi*) with_filename=1;;
|
||||
--*) ;;
|
||||
-*)
|
||||
case "$1" in
|
||||
-*[dr]*) echo >&2 "$0: $1: option not supported"; exit 2;;
|
||||
esac
|
||||
case "$1" in
|
||||
-*H*) with_filename=1;;
|
||||
esac
|
||||
case "$1" in
|
||||
-*h*) no_filename=1;;
|
||||
esac
|
||||
case "$1" in
|
||||
-*L*) files_without_matches=1;;
|
||||
esac
|
||||
case "$1" in
|
||||
-*l*) files_with_matches=1;;
|
||||
esac;;
|
||||
esac
|
||||
case "$after_dash_dash$1" in
|
||||
-[ef]) opt="$opt $1"; shift; pat="$1"
|
||||
if test "$grep" = grep; then # grep is buggy with -e on SVR4
|
||||
grep=egrep
|
||||
fi;;
|
||||
-[ABCdm])opt="$opt $1 $2"; shift;;
|
||||
--) opt="$opt $1"; after_dash_dash=1;;
|
||||
-*) opt="$opt $1";;
|
||||
*) if test -z "$pat"; then
|
||||
pat="$1"
|
||||
else
|
||||
break;
|
||||
fi;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
if test -z "$pat"; then
|
||||
echo "grep through bzip2 files"
|
||||
echo "usage: $prog [grep_options] pattern [files]"
|
||||
exit 2
|
||||
fi
|
||||
|
||||
if test $# -eq 0; then
|
||||
bzip2 -cdfq | $grep $opt "$pat"
|
||||
exit $?
|
||||
fi
|
||||
|
||||
res=0
|
||||
for i do
|
||||
bzip2 -cdfq -- "$i" |
|
||||
if test $files_with_matches -eq 1; then
|
||||
$grep $opt "$pat" > /dev/null && printf "%s\n" "$i"
|
||||
elif test $files_without_matches -eq 1; then
|
||||
$grep $opt "$pat" > /dev/null || printf "%s\n" "$i"
|
||||
elif test $with_filename -eq 0 && { test $# -eq 1 || test $no_filename -eq 1; }; then
|
||||
$grep $opt "$pat"
|
||||
else
|
||||
i=$(echo "$i" | sed -e 's/[\\|&]/\\&/g')
|
||||
if test $with_filename -eq 1; then
|
||||
sed_script="s|^[^:]*:|${i}:|"
|
||||
else
|
||||
sed_script="s|^|${i}:|"
|
||||
fi
|
||||
# Hack adapted from GPLed code at
|
||||
# http://home.comcast.net/~j.p.h/cus-faq-2
|
||||
# Has the same effect as the following two lines of bash:
|
||||
#
|
||||
# $grep $opt "$pat" | sed "$sed_script"
|
||||
# exit ${PIPESTATUS[0]}
|
||||
#
|
||||
# Inside the `...`, fd4 goes to the pipe whose other end is read
|
||||
# and passed to eval; fd1 is the normal standard output
|
||||
# preserved the line before with exec 3>&1
|
||||
exec 3>&1
|
||||
eval `
|
||||
exec 4>&1 >&3 3>&-
|
||||
{
|
||||
$grep $opt "$pat" 4>&-; echo "r=$?;" >&4
|
||||
} | sed "$sed_script"
|
||||
`
|
||||
exit $r
|
||||
fi
|
||||
r=$?
|
||||
test $res -lt $r && res=$r
|
||||
done
|
||||
exit $res
|
BIN
msys/mingw/bin/bzip2.exe
Normal file
BIN
msys/mingw/bin/bzip2.exe
Normal file
Binary file not shown.
BIN
msys/mingw/bin/bzip2recover.exe
Normal file
BIN
msys/mingw/bin/bzip2recover.exe
Normal file
Binary file not shown.
61
msys/mingw/bin/bzless
Normal file
61
msys/mingw/bin/bzless
Normal file
|
@ -0,0 +1,61 @@
|
|||
#!/bin/sh
|
||||
|
||||
# Bzmore wrapped for bzip2,
|
||||
# adapted from zmore by Philippe Troin <phil@fifi.org> for Debian GNU/Linux.
|
||||
|
||||
PATH="/usr/bin:$PATH"; export PATH
|
||||
|
||||
prog=`echo $0 | sed 's|.*/||'`
|
||||
case "$prog" in
|
||||
*less) more=less ;;
|
||||
*) more=more ;;
|
||||
esac
|
||||
|
||||
if test "`echo -n a`" = "-n a"; then
|
||||
# looks like a SysV system:
|
||||
n1=''; n2='\c'
|
||||
else
|
||||
n1='-n'; n2=''
|
||||
fi
|
||||
oldtty=`stty -g 2>/dev/null`
|
||||
if stty -cbreak 2>/dev/null; then
|
||||
cb='cbreak'; ncb='-cbreak'
|
||||
else
|
||||
# 'stty min 1' resets eof to ^a on both SunOS and SysV!
|
||||
cb='min 1 -icanon'; ncb='icanon eof ^d'
|
||||
fi
|
||||
if test $? -eq 0 && test -n "$oldtty"; then
|
||||
trap 'stty $oldtty 2>/dev/null; exit' 0 INT QUIT TRAP USR1 PIPE TERM
|
||||
else
|
||||
trap 'stty $ncb echo 2>/dev/null; exit' 0 INT QUIT TRAP USR1 PIPE TERM
|
||||
fi
|
||||
|
||||
if test $# = 0; then
|
||||
if test -t 0; then
|
||||
echo usage: $prog files...
|
||||
else
|
||||
bzip2 -cdfq | eval $more
|
||||
fi
|
||||
else
|
||||
FIRST=1
|
||||
for FILE
|
||||
do
|
||||
if test $FIRST -eq 0; then
|
||||
echo $n1 "--More--(Next file: $FILE)$n2"
|
||||
stty $cb -echo 2>/dev/null
|
||||
ANS=`dd bs=1 count=1 2>/dev/null`
|
||||
stty $ncb echo 2>/dev/null
|
||||
echo " "
|
||||
if test "$ANS" = 'e' || test "$ANS" = 'q'; then
|
||||
exit
|
||||
fi
|
||||
fi
|
||||
if test "$ANS" != 's'; then
|
||||
echo "------> $FILE <------"
|
||||
bzip2 -cdfq "$FILE" | eval $more
|
||||
fi
|
||||
if test -t; then
|
||||
FIRST=0
|
||||
fi
|
||||
done
|
||||
fi
|
61
msys/mingw/bin/bzmore
Normal file
61
msys/mingw/bin/bzmore
Normal file
|
@ -0,0 +1,61 @@
|
|||
#!/bin/sh
|
||||
|
||||
# Bzmore wrapped for bzip2,
|
||||
# adapted from zmore by Philippe Troin <phil@fifi.org> for Debian GNU/Linux.
|
||||
|
||||
PATH="/usr/bin:$PATH"; export PATH
|
||||
|
||||
prog=`echo $0 | sed 's|.*/||'`
|
||||
case "$prog" in
|
||||
*less) more=less ;;
|
||||
*) more=more ;;
|
||||
esac
|
||||
|
||||
if test "`echo -n a`" = "-n a"; then
|
||||
# looks like a SysV system:
|
||||
n1=''; n2='\c'
|
||||
else
|
||||
n1='-n'; n2=''
|
||||
fi
|
||||
oldtty=`stty -g 2>/dev/null`
|
||||
if stty -cbreak 2>/dev/null; then
|
||||
cb='cbreak'; ncb='-cbreak'
|
||||
else
|
||||
# 'stty min 1' resets eof to ^a on both SunOS and SysV!
|
||||
cb='min 1 -icanon'; ncb='icanon eof ^d'
|
||||
fi
|
||||
if test $? -eq 0 && test -n "$oldtty"; then
|
||||
trap 'stty $oldtty 2>/dev/null; exit' 0 INT QUIT TRAP USR1 PIPE TERM
|
||||
else
|
||||
trap 'stty $ncb echo 2>/dev/null; exit' 0 INT QUIT TRAP USR1 PIPE TERM
|
||||
fi
|
||||
|
||||
if test $# = 0; then
|
||||
if test -t 0; then
|
||||
echo usage: $prog files...
|
||||
else
|
||||
bzip2 -cdfq | eval $more
|
||||
fi
|
||||
else
|
||||
FIRST=1
|
||||
for FILE
|
||||
do
|
||||
if test $FIRST -eq 0; then
|
||||
echo $n1 "--More--(Next file: $FILE)$n2"
|
||||
stty $cb -echo 2>/dev/null
|
||||
ANS=`dd bs=1 count=1 2>/dev/null`
|
||||
stty $ncb echo 2>/dev/null
|
||||
echo " "
|
||||
if test "$ANS" = 'e' || test "$ANS" = 'q'; then
|
||||
exit
|
||||
fi
|
||||
fi
|
||||
if test "$ANS" != 's'; then
|
||||
echo "------> $FILE <------"
|
||||
bzip2 -cdfq "$FILE" | eval $more
|
||||
fi
|
||||
if test -t; then
|
||||
FIRST=0
|
||||
fi
|
||||
done
|
||||
fi
|
BIN
msys/mingw/bin/connect.exe
Normal file
BIN
msys/mingw/bin/connect.exe
Normal file
Binary file not shown.
BIN
msys/mingw/bin/create-shortcut.exe
Normal file
BIN
msys/mingw/bin/create-shortcut.exe
Normal file
Binary file not shown.
BIN
msys/mingw/bin/curl.exe
Normal file
BIN
msys/mingw/bin/curl.exe
Normal file
Binary file not shown.
BIN
msys/mingw/bin/edit_test.exe
Normal file
BIN
msys/mingw/bin/edit_test.exe
Normal file
Binary file not shown.
BIN
msys/mingw/bin/edit_test_dll.exe
Normal file
BIN
msys/mingw/bin/edit_test_dll.exe
Normal file
Binary file not shown.
BIN
msys/mingw/bin/envsubst.exe
Normal file
BIN
msys/mingw/bin/envsubst.exe
Normal file
Binary file not shown.
BIN
msys/mingw/bin/gettext.exe
Normal file
BIN
msys/mingw/bin/gettext.exe
Normal file
Binary file not shown.
121
msys/mingw/bin/gettext.sh
Normal file
121
msys/mingw/bin/gettext.sh
Normal file
|
@ -0,0 +1,121 @@
|
|||
#! /bin/sh
|
||||
#
|
||||
# Copyright (C) 2003, 2005-2007, 2011, 2015-2016 Free Software Foundation, Inc.
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Lesser General Public License as published by
|
||||
# the Free Software Foundation; either version 2.1 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Lesser General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Lesser General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
|
||||
# Find a way to echo strings without interpreting backslash.
|
||||
if test "X`(echo '\t') 2>/dev/null`" = 'X\t'; then
|
||||
echo='echo'
|
||||
else
|
||||
if test "X`(printf '%s\n' '\t') 2>/dev/null`" = 'X\t'; then
|
||||
echo='printf %s\n'
|
||||
else
|
||||
echo_func () {
|
||||
cat <<EOT
|
||||
$*
|
||||
EOT
|
||||
}
|
||||
echo='echo_func'
|
||||
fi
|
||||
fi
|
||||
|
||||
# This script is primarily a shell function library. In order for
|
||||
# ". gettext.sh" to find it, we install it in $PREFIX/bin (that is usually
|
||||
# contained in $PATH), rather than in some other location such as
|
||||
# $PREFIX/share/sh-scripts or $PREFIX/share/gettext. In order to not violate
|
||||
# the Filesystem Hierarchy Standard when doing so, this script is executable.
|
||||
# Therefore it needs to support the standard --help and --version.
|
||||
if test -z "${ZSH_VERSION+set}"; then
|
||||
# zsh is not POSIX compliant: By default, while ". gettext.sh" is executed,
|
||||
# it sets $0 to "gettext.sh", defeating the purpose of this test. But
|
||||
# fortunately we know that when running under zsh, this script is always
|
||||
# being sourced, not executed, because hardly anyone is crazy enough to
|
||||
# install zsh as /bin/sh.
|
||||
case "$0" in
|
||||
gettext.sh | */gettext.sh | *\\gettext.sh)
|
||||
progname=$0
|
||||
package=gettext-runtime
|
||||
version=0.19.8.1
|
||||
# func_usage
|
||||
# outputs to stdout the --help usage message.
|
||||
func_usage ()
|
||||
{
|
||||
echo "GNU gettext shell script function library version $version"
|
||||
echo "Usage: . gettext.sh"
|
||||
}
|
||||
# func_version
|
||||
# outputs to stdout the --version message.
|
||||
func_version ()
|
||||
{
|
||||
echo "$progname (GNU $package) $version"
|
||||
echo "Copyright (C) 2003-2007 Free Software Foundation, Inc.
|
||||
License GPLv2+: GNU GPL version 2 or later <http://gnu.org/licenses/gpl.html>
|
||||
This is free software: you are free to change and redistribute it.
|
||||
There is NO WARRANTY, to the extent permitted by law."
|
||||
echo "Written by" "Bruno Haible"
|
||||
}
|
||||
if test $# = 1; then
|
||||
case "$1" in
|
||||
--help | --hel | --he | --h )
|
||||
func_usage; exit 0 ;;
|
||||
--version | --versio | --versi | --vers | --ver | --ve | --v )
|
||||
func_version; exit 0 ;;
|
||||
esac
|
||||
fi
|
||||
func_usage 1>&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
# eval_gettext MSGID
|
||||
# looks up the translation of MSGID and substitutes shell variables in the
|
||||
# result.
|
||||
eval_gettext () {
|
||||
gettext "$1" | (export PATH `envsubst --variables "$1"`; envsubst "$1")
|
||||
}
|
||||
|
||||
# eval_ngettext MSGID MSGID-PLURAL COUNT
|
||||
# looks up the translation of MSGID / MSGID-PLURAL for COUNT and substitutes
|
||||
# shell variables in the result.
|
||||
eval_ngettext () {
|
||||
ngettext "$1" "$2" "$3" | (export PATH `envsubst --variables "$1 $2"`; envsubst "$1 $2")
|
||||
}
|
||||
|
||||
# Note: This use of envsubst is much safer than using the shell built-in 'eval'
|
||||
# would be.
|
||||
# 1) The security problem with Chinese translations that happen to use a
|
||||
# character such as \xe0\x60 is avoided.
|
||||
# 2) The security problem with malevolent translators who put in command lists
|
||||
# like "$(...)" or "`...`" is avoided.
|
||||
# 3) The translations can only refer to shell variables that are already
|
||||
# mentioned in MSGID or MSGID-PLURAL.
|
||||
#
|
||||
# Note: "export PATH" above is a dummy; this is for the case when
|
||||
# `envsubst --variables ...` returns nothing.
|
||||
#
|
||||
# Note: In eval_ngettext above, "$1 $2" means a string whose variables set is
|
||||
# the union of the variables set of "$1" and "$2".
|
||||
#
|
||||
# Note: The minimal use of backquote above ensures that trailing newlines are
|
||||
# not dropped, not from the gettext invocation and not from the value of any
|
||||
# shell variable.
|
||||
#
|
||||
# Note: Field splitting on the `envsubst --variables ...` result is desired,
|
||||
# since envsubst outputs the variables, separated by newlines. Pathname
|
||||
# wildcard expansion or tilde expansion has no effect here, since the words
|
||||
# output by "envsubst --variables ..." consist solely of alphanumeric
|
||||
# characters and underscore.
|
1347
msys/mingw/bin/gettextize
Normal file
1347
msys/mingw/bin/gettextize
Normal file
File diff suppressed because it is too large
Load diff
BIN
msys/mingw/bin/git-lfs.exe
Normal file
BIN
msys/mingw/bin/git-lfs.exe
Normal file
Binary file not shown.
BIN
msys/mingw/bin/git-receive-pack.exe
Normal file
BIN
msys/mingw/bin/git-receive-pack.exe
Normal file
Binary file not shown.
BIN
msys/mingw/bin/git-upload-archive.exe
Normal file
BIN
msys/mingw/bin/git-upload-archive.exe
Normal file
Binary file not shown.
BIN
msys/mingw/bin/git-upload-pack.exe
Normal file
BIN
msys/mingw/bin/git-upload-pack.exe
Normal file
Binary file not shown.
12645
msys/mingw/bin/gitk
Normal file
12645
msys/mingw/bin/gitk
Normal file
File diff suppressed because it is too large
Load diff
BIN
msys/mingw/bin/odt2txt.exe
Normal file
BIN
msys/mingw/bin/odt2txt.exe
Normal file
Binary file not shown.
BIN
msys/mingw/bin/openssl.exe
Normal file
BIN
msys/mingw/bin/openssl.exe
Normal file
Binary file not shown.
BIN
msys/mingw/bin/pdftotext.exe
Normal file
BIN
msys/mingw/bin/pdftotext.exe
Normal file
Binary file not shown.
BIN
msys/mingw/bin/proxy-lookup.exe
Normal file
BIN
msys/mingw/bin/proxy-lookup.exe
Normal file
Binary file not shown.
BIN
msys/mingw/bin/recode-sr-latin.exe
Normal file
BIN
msys/mingw/bin/recode-sr-latin.exe
Normal file
Binary file not shown.
883
msys/mingw/bin/sqlite3_analyzer.sh
Normal file
883
msys/mingw/bin/sqlite3_analyzer.sh
Normal file
|
@ -0,0 +1,883 @@
|
|||
#! /bin/sh
|
||||
# restart with tclsh \
|
||||
exec tclsh "$0" ${1+"$@"}
|
||||
package require sqlite3
|
||||
|
||||
# Run this TCL script using "testfixture" in order get a report that shows
|
||||
# how much disk space is used by a particular data to actually store data
|
||||
# versus how much space is unused.
|
||||
#
|
||||
|
||||
if {[catch {
|
||||
|
||||
# Argument $tname is the name of a table within the database opened by
|
||||
# database handle [db]. Return true if it is a WITHOUT ROWID table, or
|
||||
# false otherwise.
|
||||
#
|
||||
proc is_without_rowid {tname} {
|
||||
set t [string map {' ''} $tname]
|
||||
db eval "PRAGMA index_list = '$t'" o {
|
||||
if {$o(origin) == "pk"} {
|
||||
set n $o(name)
|
||||
if {0==[db one { SELECT count(*) FROM sqlite_master WHERE name=$n }]} {
|
||||
return 1
|
||||
}
|
||||
}
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
# Read and run TCL commands from standard input. Used to implement
|
||||
# the --tclsh option.
|
||||
#
|
||||
proc tclsh {} {
|
||||
set line {}
|
||||
while {![eof stdin]} {
|
||||
if {$line!=""} {
|
||||
puts -nonewline "> "
|
||||
} else {
|
||||
puts -nonewline "% "
|
||||
}
|
||||
flush stdout
|
||||
append line [gets stdin]
|
||||
if {[info complete $line]} {
|
||||
if {[catch {uplevel #0 $line} result]} {
|
||||
puts stderr "Error: $result"
|
||||
} elseif {$result!=""} {
|
||||
puts $result
|
||||
}
|
||||
set line {}
|
||||
} else {
|
||||
append line \n
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
# Get the name of the database to analyze
|
||||
#
|
||||
proc usage {} {
|
||||
set argv0 [file rootname [file tail [info script]]]
|
||||
puts stderr "Usage: $argv0 ?--pageinfo? ?--stats? database-filename"
|
||||
puts stderr {
|
||||
Analyze the SQLite3 database file specified by the "database-filename"
|
||||
argument and output a report detailing size and storage efficiency
|
||||
information for the database and its constituent tables and indexes.
|
||||
|
||||
Options:
|
||||
|
||||
--pageinfo Show how each page of the database-file is used
|
||||
|
||||
--stats Output SQL text that creates a new database containing
|
||||
statistics about the database that was analyzed
|
||||
|
||||
--tclsh Run the built-in TCL interpreter interactively (for debugging)
|
||||
|
||||
--version Show the version number of SQLite
|
||||
}
|
||||
exit 1
|
||||
}
|
||||
set file_to_analyze {}
|
||||
set flags(-pageinfo) 0
|
||||
set flags(-stats) 0
|
||||
set flags(-debug) 0
|
||||
append argv {}
|
||||
foreach arg $argv {
|
||||
if {[regexp {^-+pageinfo$} $arg]} {
|
||||
set flags(-pageinfo) 1
|
||||
} elseif {[regexp {^-+stats$} $arg]} {
|
||||
set flags(-stats) 1
|
||||
} elseif {[regexp {^-+debug$} $arg]} {
|
||||
set flags(-debug) 1
|
||||
} elseif {[regexp {^-+tclsh$} $arg]} {
|
||||
tclsh
|
||||
exit 0
|
||||
} elseif {[regexp {^-+version$} $arg]} {
|
||||
sqlite3 mem :memory:
|
||||
puts [mem one {SELECT sqlite_version()||' '||sqlite_source_id()}]
|
||||
mem close
|
||||
exit 0
|
||||
} elseif {[regexp {^-} $arg]} {
|
||||
puts stderr "Unknown option: $arg"
|
||||
usage
|
||||
} elseif {$file_to_analyze!=""} {
|
||||
usage
|
||||
} else {
|
||||
set file_to_analyze $arg
|
||||
}
|
||||
}
|
||||
if {$file_to_analyze==""} usage
|
||||
set root_filename $file_to_analyze
|
||||
regexp {^file:(//)?([^?]*)} $file_to_analyze all x1 root_filename
|
||||
if {![file exists $root_filename]} {
|
||||
puts stderr "No such file: $root_filename"
|
||||
exit 1
|
||||
}
|
||||
if {![file readable $root_filename]} {
|
||||
puts stderr "File is not readable: $root_filename"
|
||||
exit 1
|
||||
}
|
||||
set true_file_size [file size $root_filename]
|
||||
if {$true_file_size<512} {
|
||||
puts stderr "Empty or malformed database: $root_filename"
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Compute the total file size assuming test_multiplexor is being used.
|
||||
# Assume that SQLITE_ENABLE_8_3_NAMES might be enabled
|
||||
#
|
||||
set extension [file extension $root_filename]
|
||||
set pattern $root_filename
|
||||
append pattern {[0-3][0-9][0-9]}
|
||||
foreach f [glob -nocomplain $pattern] {
|
||||
incr true_file_size [file size $f]
|
||||
set extension {}
|
||||
}
|
||||
if {[string length $extension]>=2 && [string length $extension]<=4} {
|
||||
set pattern [file rootname $root_filename]
|
||||
append pattern {.[0-3][0-9][0-9]}
|
||||
foreach f [glob -nocomplain $pattern] {
|
||||
incr true_file_size [file size $f]
|
||||
}
|
||||
}
|
||||
|
||||
# Open the database
|
||||
#
|
||||
if {[catch {sqlite3 db $file_to_analyze -uri 1} msg]} {
|
||||
puts stderr "error trying to open $file_to_analyze: $msg"
|
||||
exit 1
|
||||
}
|
||||
if {$flags(-debug)} {
|
||||
proc dbtrace {txt} {puts $txt; flush stdout;}
|
||||
db trace ::dbtrace
|
||||
}
|
||||
|
||||
db eval {SELECT count(*) FROM sqlite_master}
|
||||
set pageSize [expr {wide([db one {PRAGMA page_size}])}]
|
||||
|
||||
if {$flags(-pageinfo)} {
|
||||
db eval {CREATE VIRTUAL TABLE temp.stat USING dbstat}
|
||||
db eval {SELECT name, path, pageno FROM temp.stat ORDER BY pageno} {
|
||||
puts "$pageno $name $path"
|
||||
}
|
||||
exit 0
|
||||
}
|
||||
if {$flags(-stats)} {
|
||||
db eval {CREATE VIRTUAL TABLE temp.stat USING dbstat}
|
||||
puts "BEGIN;"
|
||||
puts "CREATE TABLE stats("
|
||||
puts " name STRING, /* Name of table or index */"
|
||||
puts " path INTEGER, /* Path to page from root */"
|
||||
puts " pageno INTEGER, /* Page number */"
|
||||
puts " pagetype STRING, /* 'internal', 'leaf' or 'overflow' */"
|
||||
puts " ncell INTEGER, /* Cells on page (0 for overflow) */"
|
||||
puts " payload INTEGER, /* Bytes of payload on this page */"
|
||||
puts " unused INTEGER, /* Bytes of unused space on this page */"
|
||||
puts " mx_payload INTEGER, /* Largest payload size of all cells */"
|
||||
puts " pgoffset INTEGER, /* Offset of page in file */"
|
||||
puts " pgsize INTEGER /* Size of the page */"
|
||||
puts ");"
|
||||
db eval {SELECT quote(name) || ',' ||
|
||||
quote(path) || ',' ||
|
||||
quote(pageno) || ',' ||
|
||||
quote(pagetype) || ',' ||
|
||||
quote(ncell) || ',' ||
|
||||
quote(payload) || ',' ||
|
||||
quote(unused) || ',' ||
|
||||
quote(mx_payload) || ',' ||
|
||||
quote(pgoffset) || ',' ||
|
||||
quote(pgsize) AS x FROM stat} {
|
||||
puts "INSERT INTO stats VALUES($x);"
|
||||
}
|
||||
puts "COMMIT;"
|
||||
exit 0
|
||||
}
|
||||
|
||||
|
||||
# In-memory database for collecting statistics. This script loops through
|
||||
# the tables and indices in the database being analyzed, adding a row for each
|
||||
# to an in-memory database (for which the schema is shown below). It then
|
||||
# queries the in-memory db to produce the space-analysis report.
|
||||
#
|
||||
sqlite3 mem :memory:
|
||||
if {$flags(-debug)} {
|
||||
proc dbtrace {txt} {puts $txt; flush stdout;}
|
||||
mem trace ::dbtrace
|
||||
}
|
||||
set tabledef {CREATE TABLE space_used(
|
||||
name clob, -- Name of a table or index in the database file
|
||||
tblname clob, -- Name of associated table
|
||||
is_index boolean, -- TRUE if it is an index, false for a table
|
||||
is_without_rowid boolean, -- TRUE if WITHOUT ROWID table
|
||||
nentry int, -- Number of entries in the BTree
|
||||
leaf_entries int, -- Number of leaf entries
|
||||
depth int, -- Depth of the b-tree
|
||||
payload int, -- Total amount of data stored in this table or index
|
||||
ovfl_payload int, -- Total amount of data stored on overflow pages
|
||||
ovfl_cnt int, -- Number of entries that use overflow
|
||||
mx_payload int, -- Maximum payload size
|
||||
int_pages int, -- Number of interior pages used
|
||||
leaf_pages int, -- Number of leaf pages used
|
||||
ovfl_pages int, -- Number of overflow pages used
|
||||
int_unused int, -- Number of unused bytes on interior pages
|
||||
leaf_unused int, -- Number of unused bytes on primary pages
|
||||
ovfl_unused int, -- Number of unused bytes on overflow pages
|
||||
gap_cnt int, -- Number of gaps in the page layout
|
||||
compressed_size int -- Total bytes stored on disk
|
||||
);}
|
||||
mem eval $tabledef
|
||||
|
||||
# Create a temporary "dbstat" virtual table.
|
||||
#
|
||||
db eval {CREATE VIRTUAL TABLE temp.stat USING dbstat}
|
||||
db eval {CREATE TEMP TABLE dbstat AS SELECT * FROM temp.stat
|
||||
ORDER BY name, path}
|
||||
db eval {DROP TABLE temp.stat}
|
||||
|
||||
set isCompressed 0
|
||||
set compressOverhead 0
|
||||
set depth 0
|
||||
set sql { SELECT name, tbl_name FROM sqlite_master WHERE rootpage>0 }
|
||||
foreach {name tblname} [concat sqlite_master sqlite_master [db eval $sql]] {
|
||||
|
||||
set is_index [expr {$name!=$tblname}]
|
||||
set is_without_rowid [is_without_rowid $name]
|
||||
db eval {
|
||||
SELECT
|
||||
sum(ncell) AS nentry,
|
||||
sum((pagetype=='leaf')*ncell) AS leaf_entries,
|
||||
sum(payload) AS payload,
|
||||
sum((pagetype=='overflow') * payload) AS ovfl_payload,
|
||||
sum(path LIKE '%+000000') AS ovfl_cnt,
|
||||
max(mx_payload) AS mx_payload,
|
||||
sum(pagetype=='internal') AS int_pages,
|
||||
sum(pagetype=='leaf') AS leaf_pages,
|
||||
sum(pagetype=='overflow') AS ovfl_pages,
|
||||
sum((pagetype=='internal') * unused) AS int_unused,
|
||||
sum((pagetype=='leaf') * unused) AS leaf_unused,
|
||||
sum((pagetype=='overflow') * unused) AS ovfl_unused,
|
||||
sum(pgsize) AS compressed_size,
|
||||
max((length(CASE WHEN path LIKE '%+%' THEN '' ELSE path END)+3)/4)
|
||||
AS depth
|
||||
FROM temp.dbstat WHERE name = $name
|
||||
} break
|
||||
|
||||
set total_pages [expr {$leaf_pages+$int_pages+$ovfl_pages}]
|
||||
set storage [expr {$total_pages*$pageSize}]
|
||||
if {!$isCompressed && $storage>$compressed_size} {
|
||||
set isCompressed 1
|
||||
set compressOverhead 14
|
||||
}
|
||||
|
||||
# Column 'gap_cnt' is set to the number of non-contiguous entries in the
|
||||
# list of pages visited if the b-tree structure is traversed in a top-down
|
||||
# fashion (each node visited before its child-tree is passed). Any overflow
|
||||
# chains present are traversed from start to finish before any child-tree
|
||||
# is.
|
||||
#
|
||||
set gap_cnt 0
|
||||
set prev 0
|
||||
db eval {
|
||||
SELECT pageno, pagetype FROM temp.dbstat
|
||||
WHERE name=$name
|
||||
ORDER BY pageno
|
||||
} {
|
||||
if {$prev>0 && $pagetype=="leaf" && $pageno!=$prev+1} {
|
||||
incr gap_cnt
|
||||
}
|
||||
set prev $pageno
|
||||
}
|
||||
mem eval {
|
||||
INSERT INTO space_used VALUES(
|
||||
$name,
|
||||
$tblname,
|
||||
$is_index,
|
||||
$is_without_rowid,
|
||||
$nentry,
|
||||
$leaf_entries,
|
||||
$depth,
|
||||
$payload,
|
||||
$ovfl_payload,
|
||||
$ovfl_cnt,
|
||||
$mx_payload,
|
||||
$int_pages,
|
||||
$leaf_pages,
|
||||
$ovfl_pages,
|
||||
$int_unused,
|
||||
$leaf_unused,
|
||||
$ovfl_unused,
|
||||
$gap_cnt,
|
||||
$compressed_size
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
proc integerify {real} {
|
||||
if {[string is double -strict $real]} {
|
||||
return [expr {wide($real)}]
|
||||
} else {
|
||||
return 0
|
||||
}
|
||||
}
|
||||
mem function int integerify
|
||||
|
||||
# Quote a string for use in an SQL query. Examples:
|
||||
#
|
||||
# [quote {hello world}] == {'hello world'}
|
||||
# [quote {hello world's}] == {'hello world''s'}
|
||||
#
|
||||
proc quote {txt} {
|
||||
return [string map {' ''} $txt]
|
||||
}
|
||||
|
||||
# Output a title line
|
||||
#
|
||||
proc titleline {title} {
|
||||
if {$title==""} {
|
||||
puts [string repeat * 79]
|
||||
} else {
|
||||
set len [string length $title]
|
||||
set stars [string repeat * [expr 79-$len-5]]
|
||||
puts "*** $title $stars"
|
||||
}
|
||||
}
|
||||
|
||||
# Generate a single line of output in the statistics section of the
|
||||
# report.
|
||||
#
|
||||
proc statline {title value {extra {}}} {
|
||||
set len [string length $title]
|
||||
set dots [string repeat . [expr 50-$len]]
|
||||
set len [string length $value]
|
||||
set sp2 [string range { } $len end]
|
||||
if {$extra ne ""} {
|
||||
set extra " $extra"
|
||||
}
|
||||
puts "$title$dots $value$sp2$extra"
|
||||
}
|
||||
|
||||
# Generate a formatted percentage value for $num/$denom
|
||||
#
|
||||
proc percent {num denom {of {}}} {
|
||||
if {$denom==0.0} {return ""}
|
||||
set v [expr {$num*100.0/$denom}]
|
||||
set of {}
|
||||
if {$v==100.0 || $v<0.001 || ($v>1.0 && $v<99.0)} {
|
||||
return [format {%5.1f%% %s} $v $of]
|
||||
} elseif {$v<0.1 || $v>99.9} {
|
||||
return [format {%7.3f%% %s} $v $of]
|
||||
} else {
|
||||
return [format {%6.2f%% %s} $v $of]
|
||||
}
|
||||
}
|
||||
|
||||
proc divide {num denom} {
|
||||
if {$denom==0} {return 0.0}
|
||||
return [format %.2f [expr double($num)/double($denom)]]
|
||||
}
|
||||
|
||||
# Generate a subreport that covers some subset of the database.
|
||||
# the $where clause determines which subset to analyze.
|
||||
#
|
||||
proc subreport {title where showFrag} {
|
||||
global pageSize file_pgcnt compressOverhead
|
||||
|
||||
# Query the in-memory database for the sum of various statistics
|
||||
# for the subset of tables/indices identified by the WHERE clause in
|
||||
# $where. Note that even if the WHERE clause matches no rows, the
|
||||
# following query returns exactly one row (because it is an aggregate).
|
||||
#
|
||||
# The results of the query are stored directly by SQLite into local
|
||||
# variables (i.e. $nentry, $payload etc.).
|
||||
#
|
||||
mem eval "
|
||||
SELECT
|
||||
int(sum(
|
||||
CASE WHEN (is_without_rowid OR is_index) THEN nentry
|
||||
ELSE leaf_entries
|
||||
END
|
||||
)) AS nentry,
|
||||
int(sum(payload)) AS payload,
|
||||
int(sum(ovfl_payload)) AS ovfl_payload,
|
||||
max(mx_payload) AS mx_payload,
|
||||
int(sum(ovfl_cnt)) as ovfl_cnt,
|
||||
int(sum(leaf_pages)) AS leaf_pages,
|
||||
int(sum(int_pages)) AS int_pages,
|
||||
int(sum(ovfl_pages)) AS ovfl_pages,
|
||||
int(sum(leaf_unused)) AS leaf_unused,
|
||||
int(sum(int_unused)) AS int_unused,
|
||||
int(sum(ovfl_unused)) AS ovfl_unused,
|
||||
int(sum(gap_cnt)) AS gap_cnt,
|
||||
int(sum(compressed_size)) AS compressed_size,
|
||||
int(max(depth)) AS depth,
|
||||
count(*) AS cnt
|
||||
FROM space_used WHERE $where" {} {}
|
||||
|
||||
# Output the sub-report title, nicely decorated with * characters.
|
||||
#
|
||||
puts ""
|
||||
titleline $title
|
||||
puts ""
|
||||
|
||||
# Calculate statistics and store the results in TCL variables, as follows:
|
||||
#
|
||||
# total_pages: Database pages consumed.
|
||||
# total_pages_percent: Pages consumed as a percentage of the file.
|
||||
# storage: Bytes consumed.
|
||||
# payload_percent: Payload bytes used as a percentage of $storage.
|
||||
# total_unused: Unused bytes on pages.
|
||||
# avg_payload: Average payload per btree entry.
|
||||
# avg_fanout: Average fanout for internal pages.
|
||||
# avg_unused: Average unused bytes per btree entry.
|
||||
# avg_meta: Average metadata overhead per entry.
|
||||
# ovfl_cnt_percent: Percentage of btree entries that use overflow pages.
|
||||
#
|
||||
set total_pages [expr {$leaf_pages+$int_pages+$ovfl_pages}]
|
||||
set total_pages_percent [percent $total_pages $file_pgcnt]
|
||||
set storage [expr {$total_pages*$pageSize}]
|
||||
set payload_percent [percent $payload $storage {of storage consumed}]
|
||||
set total_unused [expr {$ovfl_unused+$int_unused+$leaf_unused}]
|
||||
set avg_payload [divide $payload $nentry]
|
||||
set avg_unused [divide $total_unused $nentry]
|
||||
set total_meta [expr {$storage - $payload - $total_unused}]
|
||||
set total_meta [expr {$total_meta + 4*($ovfl_pages - $ovfl_cnt)}]
|
||||
set meta_percent [percent $total_meta $storage {of metadata}]
|
||||
set avg_meta [divide $total_meta $nentry]
|
||||
if {$int_pages>0} {
|
||||
# TODO: Is this formula correct?
|
||||
set nTab [mem eval "
|
||||
SELECT count(*) FROM (
|
||||
SELECT DISTINCT tblname FROM space_used WHERE $where AND is_index=0
|
||||
)
|
||||
"]
|
||||
set avg_fanout [mem eval "
|
||||
SELECT (sum(leaf_pages+int_pages)-$nTab)/sum(int_pages) FROM space_used
|
||||
WHERE $where
|
||||
"]
|
||||
set avg_fanout [format %.2f $avg_fanout]
|
||||
}
|
||||
set ovfl_cnt_percent [percent $ovfl_cnt $nentry {of all entries}]
|
||||
|
||||
# Print out the sub-report statistics.
|
||||
#
|
||||
statline {Percentage of total database} $total_pages_percent
|
||||
statline {Number of entries} $nentry
|
||||
statline {Bytes of storage consumed} $storage
|
||||
if {$compressed_size!=$storage} {
|
||||
set compressed_size [expr {$compressed_size+$compressOverhead*$total_pages}]
|
||||
set pct [expr {$compressed_size*100.0/$storage}]
|
||||
set pct [format {%5.1f%%} $pct]
|
||||
statline {Bytes used after compression} $compressed_size $pct
|
||||
}
|
||||
statline {Bytes of payload} $payload $payload_percent
|
||||
statline {Bytes of metadata} $total_meta $meta_percent
|
||||
if {$cnt==1} {statline {B-tree depth} $depth}
|
||||
statline {Average payload per entry} $avg_payload
|
||||
statline {Average unused bytes per entry} $avg_unused
|
||||
statline {Average metadata per entry} $avg_meta
|
||||
if {[info exists avg_fanout]} {
|
||||
statline {Average fanout} $avg_fanout
|
||||
}
|
||||
if {$showFrag && $total_pages>1} {
|
||||
set fragmentation [percent $gap_cnt [expr {$total_pages-1}]]
|
||||
statline {Non-sequential pages} $gap_cnt $fragmentation
|
||||
}
|
||||
statline {Maximum payload per entry} $mx_payload
|
||||
statline {Entries that use overflow} $ovfl_cnt $ovfl_cnt_percent
|
||||
if {$int_pages>0} {
|
||||
statline {Index pages used} $int_pages
|
||||
}
|
||||
statline {Primary pages used} $leaf_pages
|
||||
statline {Overflow pages used} $ovfl_pages
|
||||
statline {Total pages used} $total_pages
|
||||
if {$int_unused>0} {
|
||||
set int_unused_percent [
|
||||
percent $int_unused [expr {$int_pages*$pageSize}] {of index space}]
|
||||
statline "Unused bytes on index pages" $int_unused $int_unused_percent
|
||||
}
|
||||
statline "Unused bytes on primary pages" $leaf_unused [
|
||||
percent $leaf_unused [expr {$leaf_pages*$pageSize}] {of primary space}]
|
||||
statline "Unused bytes on overflow pages" $ovfl_unused [
|
||||
percent $ovfl_unused [expr {$ovfl_pages*$pageSize}] {of overflow space}]
|
||||
statline "Unused bytes on all pages" $total_unused [
|
||||
percent $total_unused $storage {of all space}]
|
||||
return 1
|
||||
}
|
||||
|
||||
# Calculate the overhead in pages caused by auto-vacuum.
|
||||
#
|
||||
# This procedure calculates and returns the number of pages used by the
|
||||
# auto-vacuum 'pointer-map'. If the database does not support auto-vacuum,
|
||||
# then 0 is returned. The two arguments are the size of the database file in
|
||||
# pages and the page size used by the database (in bytes).
|
||||
proc autovacuum_overhead {filePages pageSize} {
|
||||
|
||||
# Set $autovacuum to non-zero for databases that support auto-vacuum.
|
||||
set autovacuum [db one {PRAGMA auto_vacuum}]
|
||||
|
||||
# If the database is not an auto-vacuum database or the file consists
|
||||
# of one page only then there is no overhead for auto-vacuum. Return zero.
|
||||
if {0==$autovacuum || $filePages==1} {
|
||||
return 0
|
||||
}
|
||||
|
||||
# The number of entries on each pointer map page. The layout of the
|
||||
# database file is one pointer-map page, followed by $ptrsPerPage other
|
||||
# pages, followed by a pointer-map page etc. The first pointer-map page
|
||||
# is the second page of the file overall.
|
||||
set ptrsPerPage [expr double($pageSize/5)]
|
||||
|
||||
# Return the number of pointer map pages in the database.
|
||||
return [expr wide(ceil( ($filePages-1.0)/($ptrsPerPage+1.0) ))]
|
||||
}
|
||||
|
||||
|
||||
# Calculate the summary statistics for the database and store the results
|
||||
# in TCL variables. They are output below. Variables are as follows:
|
||||
#
|
||||
# pageSize: Size of each page in bytes.
|
||||
# file_bytes: File size in bytes.
|
||||
# file_pgcnt: Number of pages in the file.
|
||||
# file_pgcnt2: Number of pages in the file (calculated).
|
||||
# av_pgcnt: Pages consumed by the auto-vacuum pointer-map.
|
||||
# av_percent: Percentage of the file consumed by auto-vacuum pointer-map.
|
||||
# inuse_pgcnt: Data pages in the file.
|
||||
# inuse_percent: Percentage of pages used to store data.
|
||||
# free_pgcnt: Free pages calculated as (<total pages> - <in-use pages>)
|
||||
# free_pgcnt2: Free pages in the file according to the file header.
|
||||
# free_percent: Percentage of file consumed by free pages (calculated).
|
||||
# free_percent2: Percentage of file consumed by free pages (header).
|
||||
# ntable: Number of tables in the db.
|
||||
# nindex: Number of indices in the db.
|
||||
# nautoindex: Number of indices created automatically.
|
||||
# nmanindex: Number of indices created manually.
|
||||
# user_payload: Number of bytes of payload in table btrees
|
||||
# (not including sqlite_master)
|
||||
# user_percent: $user_payload as a percentage of total file size.
|
||||
|
||||
### The following, setting $file_bytes based on the actual size of the file
|
||||
### on disk, causes this tool to choke on zipvfs databases. So set it based
|
||||
### on the return of [PRAGMA page_count] instead.
|
||||
if 0 {
|
||||
set file_bytes [file size $file_to_analyze]
|
||||
set file_pgcnt [expr {$file_bytes/$pageSize}]
|
||||
}
|
||||
set file_pgcnt [db one {PRAGMA page_count}]
|
||||
set file_bytes [expr {$file_pgcnt * $pageSize}]
|
||||
|
||||
set av_pgcnt [autovacuum_overhead $file_pgcnt $pageSize]
|
||||
set av_percent [percent $av_pgcnt $file_pgcnt]
|
||||
|
||||
set sql {SELECT sum(leaf_pages+int_pages+ovfl_pages) FROM space_used}
|
||||
set inuse_pgcnt [expr wide([mem eval $sql])]
|
||||
set inuse_percent [percent $inuse_pgcnt $file_pgcnt]
|
||||
|
||||
set free_pgcnt [expr {$file_pgcnt-$inuse_pgcnt-$av_pgcnt}]
|
||||
set free_percent [percent $free_pgcnt $file_pgcnt]
|
||||
set free_pgcnt2 [db one {PRAGMA freelist_count}]
|
||||
set free_percent2 [percent $free_pgcnt2 $file_pgcnt]
|
||||
|
||||
set file_pgcnt2 [expr {$inuse_pgcnt+$free_pgcnt2+$av_pgcnt}]
|
||||
|
||||
set ntable [db eval {SELECT count(*)+1 FROM sqlite_master WHERE type='table'}]
|
||||
set nindex [db eval {SELECT count(*) FROM sqlite_master WHERE type='index'}]
|
||||
set sql {SELECT count(*) FROM sqlite_master WHERE name LIKE 'sqlite_autoindex%'}
|
||||
set nautoindex [db eval $sql]
|
||||
set nmanindex [expr {$nindex-$nautoindex}]
|
||||
|
||||
# set total_payload [mem eval "SELECT sum(payload) FROM space_used"]
|
||||
set user_payload [mem one {SELECT int(sum(payload)) FROM space_used
|
||||
WHERE NOT is_index AND name NOT LIKE 'sqlite_master'}]
|
||||
set user_percent [percent $user_payload $file_bytes]
|
||||
|
||||
# Output the summary statistics calculated above.
|
||||
#
|
||||
puts "/** Disk-Space Utilization Report For $root_filename"
|
||||
puts ""
|
||||
statline {Page size in bytes} $pageSize
|
||||
statline {Pages in the whole file (measured)} $file_pgcnt
|
||||
statline {Pages in the whole file (calculated)} $file_pgcnt2
|
||||
statline {Pages that store data} $inuse_pgcnt $inuse_percent
|
||||
statline {Pages on the freelist (per header)} $free_pgcnt2 $free_percent2
|
||||
statline {Pages on the freelist (calculated)} $free_pgcnt $free_percent
|
||||
statline {Pages of auto-vacuum overhead} $av_pgcnt $av_percent
|
||||
statline {Number of tables in the database} $ntable
|
||||
statline {Number of indices} $nindex
|
||||
statline {Number of defined indices} $nmanindex
|
||||
statline {Number of implied indices} $nautoindex
|
||||
if {$isCompressed} {
|
||||
statline {Size of uncompressed content in bytes} $file_bytes
|
||||
set efficiency [percent $true_file_size $file_bytes]
|
||||
statline {Size of compressed file on disk} $true_file_size $efficiency
|
||||
} else {
|
||||
statline {Size of the file in bytes} $file_bytes
|
||||
}
|
||||
statline {Bytes of user payload stored} $user_payload $user_percent
|
||||
|
||||
# Output table rankings
|
||||
#
|
||||
puts ""
|
||||
titleline "Page counts for all tables with their indices"
|
||||
puts ""
|
||||
mem eval {SELECT tblname, count(*) AS cnt,
|
||||
int(sum(int_pages+leaf_pages+ovfl_pages)) AS size
|
||||
FROM space_used GROUP BY tblname ORDER BY size+0 DESC, tblname} {} {
|
||||
statline [string toupper $tblname] $size [percent $size $file_pgcnt]
|
||||
}
|
||||
puts ""
|
||||
titleline "Page counts for all tables and indices separately"
|
||||
puts ""
|
||||
mem eval {
|
||||
SELECT
|
||||
upper(name) AS nm,
|
||||
int(int_pages+leaf_pages+ovfl_pages) AS size
|
||||
FROM space_used
|
||||
ORDER BY size+0 DESC, name} {} {
|
||||
statline $nm $size [percent $size $file_pgcnt]
|
||||
}
|
||||
if {$isCompressed} {
|
||||
puts ""
|
||||
titleline "Bytes of disk space used after compression"
|
||||
puts ""
|
||||
set csum 0
|
||||
mem eval {SELECT tblname,
|
||||
int(sum(compressed_size)) +
|
||||
$compressOverhead*sum(int_pages+leaf_pages+ovfl_pages)
|
||||
AS csize
|
||||
FROM space_used GROUP BY tblname ORDER BY csize+0 DESC, tblname} {} {
|
||||
incr csum $csize
|
||||
statline [string toupper $tblname] $csize [percent $csize $true_file_size]
|
||||
}
|
||||
set overhead [expr {$true_file_size - $csum}]
|
||||
if {$overhead>0} {
|
||||
statline {Header and free space} $overhead [percent $overhead $true_file_size]
|
||||
}
|
||||
}
|
||||
|
||||
# Output subreports
|
||||
#
|
||||
if {$nindex>0} {
|
||||
subreport {All tables and indices} 1 0
|
||||
}
|
||||
subreport {All tables} {NOT is_index} 0
|
||||
if {$nindex>0} {
|
||||
subreport {All indices} {is_index} 0
|
||||
}
|
||||
foreach tbl [mem eval {SELECT DISTINCT tblname name FROM space_used
|
||||
ORDER BY name}] {
|
||||
set qn [quote $tbl]
|
||||
set name [string toupper $tbl]
|
||||
set n [mem eval {SELECT count(*) FROM space_used WHERE tblname=$tbl}]
|
||||
if {$n>1} {
|
||||
set idxlist [mem eval "SELECT name FROM space_used
|
||||
WHERE tblname='$qn' AND is_index
|
||||
ORDER BY 1"]
|
||||
subreport "Table $name and all its indices" "tblname='$qn'" 0
|
||||
subreport "Table $name w/o any indices" "name='$qn'" 1
|
||||
if {[llength $idxlist]>1} {
|
||||
subreport "Indices of table $name" "tblname='$qn' AND is_index" 0
|
||||
}
|
||||
foreach idx $idxlist {
|
||||
set qidx [quote $idx]
|
||||
subreport "Index [string toupper $idx] of table $name" "name='$qidx'" 1
|
||||
}
|
||||
} else {
|
||||
subreport "Table $name" "name='$qn'" 1
|
||||
}
|
||||
}
|
||||
|
||||
# Output instructions on what the numbers above mean.
|
||||
#
|
||||
puts ""
|
||||
titleline Definitions
|
||||
puts {
|
||||
Page size in bytes
|
||||
|
||||
The number of bytes in a single page of the database file.
|
||||
Usually 1024.
|
||||
|
||||
Number of pages in the whole file
|
||||
}
|
||||
puts " The number of $pageSize-byte pages that go into forming the complete
|
||||
database"
|
||||
puts {
|
||||
Pages that store data
|
||||
|
||||
The number of pages that store data, either as primary B*Tree pages or
|
||||
as overflow pages. The number at the right is the data pages divided by
|
||||
the total number of pages in the file.
|
||||
|
||||
Pages on the freelist
|
||||
|
||||
The number of pages that are not currently in use but are reserved for
|
||||
future use. The percentage at the right is the number of freelist pages
|
||||
divided by the total number of pages in the file.
|
||||
|
||||
Pages of auto-vacuum overhead
|
||||
|
||||
The number of pages that store data used by the database to facilitate
|
||||
auto-vacuum. This is zero for databases that do not support auto-vacuum.
|
||||
|
||||
Number of tables in the database
|
||||
|
||||
The number of tables in the database, including the SQLITE_MASTER table
|
||||
used to store schema information.
|
||||
|
||||
Number of indices
|
||||
|
||||
The total number of indices in the database.
|
||||
|
||||
Number of defined indices
|
||||
|
||||
The number of indices created using an explicit CREATE INDEX statement.
|
||||
|
||||
Number of implied indices
|
||||
|
||||
The number of indices used to implement PRIMARY KEY or UNIQUE constraints
|
||||
on tables.
|
||||
|
||||
Size of the file in bytes
|
||||
|
||||
The total amount of disk space used by the entire database files.
|
||||
|
||||
Bytes of user payload stored
|
||||
|
||||
The total number of bytes of user payload stored in the database. The
|
||||
schema information in the SQLITE_MASTER table is not counted when
|
||||
computing this number. The percentage at the right shows the payload
|
||||
divided by the total file size.
|
||||
|
||||
Percentage of total database
|
||||
|
||||
The amount of the complete database file that is devoted to storing
|
||||
information described by this category.
|
||||
|
||||
Number of entries
|
||||
|
||||
The total number of B-Tree key/value pairs stored under this category.
|
||||
|
||||
Bytes of storage consumed
|
||||
|
||||
The total amount of disk space required to store all B-Tree entries
|
||||
under this category. The is the total number of pages used times
|
||||
the pages size.
|
||||
|
||||
Bytes of payload
|
||||
|
||||
The amount of payload stored under this category. Payload is the data
|
||||
part of table entries and the key part of index entries. The percentage
|
||||
at the right is the bytes of payload divided by the bytes of storage
|
||||
consumed.
|
||||
|
||||
Bytes of metadata
|
||||
|
||||
The amount of formatting and structural information stored in the
|
||||
table or index. Metadata includes the btree page header, the cell pointer
|
||||
array, the size field for each cell, the left child pointer or non-leaf
|
||||
cells, the overflow pointers for overflow cells, and the rowid value for
|
||||
rowid table cells. In other words, metadata is everything that is neither
|
||||
unused space nor content. The record header in the payload is counted as
|
||||
content, not metadata.
|
||||
|
||||
Average payload per entry
|
||||
|
||||
The average amount of payload on each entry. This is just the bytes of
|
||||
payload divided by the number of entries.
|
||||
|
||||
Average unused bytes per entry
|
||||
|
||||
The average amount of free space remaining on all pages under this
|
||||
category on a per-entry basis. This is the number of unused bytes on
|
||||
all pages divided by the number of entries.
|
||||
|
||||
Non-sequential pages
|
||||
|
||||
The number of pages in the table or index that are out of sequence.
|
||||
Many filesystems are optimized for sequential file access so a small
|
||||
number of non-sequential pages might result in faster queries,
|
||||
especially for larger database files that do not fit in the disk cache.
|
||||
Note that after running VACUUM, the root page of each table or index is
|
||||
at the beginning of the database file and all other pages are in a
|
||||
separate part of the database file, resulting in a single non-
|
||||
sequential page.
|
||||
|
||||
Maximum payload per entry
|
||||
|
||||
The largest payload size of any entry.
|
||||
|
||||
Entries that use overflow
|
||||
|
||||
The number of entries that user one or more overflow pages.
|
||||
|
||||
Total pages used
|
||||
|
||||
This is the number of pages used to hold all information in the current
|
||||
category. This is the sum of index, primary, and overflow pages.
|
||||
|
||||
Index pages used
|
||||
|
||||
This is the number of pages in a table B-tree that hold only key (rowid)
|
||||
information and no data.
|
||||
|
||||
Primary pages used
|
||||
|
||||
This is the number of B-tree pages that hold both key and data.
|
||||
|
||||
Overflow pages used
|
||||
|
||||
The total number of overflow pages used for this category.
|
||||
|
||||
Unused bytes on index pages
|
||||
|
||||
The total number of bytes of unused space on all index pages. The
|
||||
percentage at the right is the number of unused bytes divided by the
|
||||
total number of bytes on index pages.
|
||||
|
||||
Unused bytes on primary pages
|
||||
|
||||
The total number of bytes of unused space on all primary pages. The
|
||||
percentage at the right is the number of unused bytes divided by the
|
||||
total number of bytes on primary pages.
|
||||
|
||||
Unused bytes on overflow pages
|
||||
|
||||
The total number of bytes of unused space on all overflow pages. The
|
||||
percentage at the right is the number of unused bytes divided by the
|
||||
total number of bytes on overflow pages.
|
||||
|
||||
Unused bytes on all pages
|
||||
|
||||
The total number of bytes of unused space on all primary and overflow
|
||||
pages. The percentage at the right is the number of unused bytes
|
||||
divided by the total number of bytes.
|
||||
}
|
||||
|
||||
# Output a dump of the in-memory database. This can be used for more
|
||||
# complex offline analysis.
|
||||
#
|
||||
titleline {}
|
||||
puts "The entire text of this report can be sourced into any SQL database"
|
||||
puts "engine for further analysis. All of the text above is an SQL comment."
|
||||
puts "The data used to generate this report follows:"
|
||||
puts "*/"
|
||||
puts "BEGIN;"
|
||||
puts $tabledef
|
||||
unset -nocomplain x
|
||||
mem eval {SELECT * FROM space_used} x {
|
||||
puts -nonewline "INSERT INTO space_used VALUES"
|
||||
set sep (
|
||||
foreach col $x(*) {
|
||||
set v $x($col)
|
||||
if {$v=="" || ![string is double $v]} {set v '[quote $v]'}
|
||||
puts -nonewline $sep$v
|
||||
set sep ,
|
||||
}
|
||||
puts ");"
|
||||
}
|
||||
puts "COMMIT;"
|
||||
|
||||
} err]} {
|
||||
puts "ERROR: $err"
|
||||
puts $errorInfo
|
||||
exit 1
|
||||
}
|
BIN
msys/mingw/bin/tclsh.exe
Normal file
BIN
msys/mingw/bin/tclsh.exe
Normal file
Binary file not shown.
BIN
msys/mingw/bin/tclsh86.exe
Normal file
BIN
msys/mingw/bin/tclsh86.exe
Normal file
Binary file not shown.
18
msys/mingw/bin/update-ca-trust
Normal file
18
msys/mingw/bin/update-ca-trust
Normal file
|
@ -0,0 +1,18 @@
|
|||
#!/bin/sh
|
||||
|
||||
#set -vx
|
||||
|
||||
# At this time, while this script is trivial, we ignore any parameters given.
|
||||
# However, for backwards compatibility reasons, future versions of this script must
|
||||
# support the syntax "update-ca-trust extract" trigger the generation of output
|
||||
# files in $DEST.
|
||||
|
||||
DEST=/mingw64/etc/pki/ca-trust/extracted
|
||||
|
||||
# OpenSSL PEM bundle that includes trust flags
|
||||
# (BEGIN TRUSTED CERTIFICATE)
|
||||
/mingw64/bin/p11-kit extract --format=openssl-bundle --filter=certificates --overwrite --comment $DEST/openssl/ca-bundle.trust.crt
|
||||
/mingw64/bin/p11-kit extract --format=pem-bundle --filter=ca-anchors --overwrite --comment --purpose server-auth $DEST/pem/tls-ca-bundle.pem
|
||||
/mingw64/bin/p11-kit extract --format=pem-bundle --filter=ca-anchors --overwrite --comment --purpose email $DEST/pem/email-ca-bundle.pem
|
||||
/mingw64/bin/p11-kit extract --format=pem-bundle --filter=ca-anchors --overwrite --comment --purpose code-signing $DEST/pem/objsign-ca-bundle.pem
|
||||
/mingw64/bin/p11-kit extract --format=java-cacerts --filter=ca-anchors --overwrite --purpose server-auth $DEST/java/cacerts
|
BIN
msys/mingw/bin/wintoast.exe
Normal file
BIN
msys/mingw/bin/wintoast.exe
Normal file
Binary file not shown.
BIN
msys/mingw/bin/wish.exe
Normal file
BIN
msys/mingw/bin/wish.exe
Normal file
Binary file not shown.
BIN
msys/mingw/bin/wish86.exe
Normal file
BIN
msys/mingw/bin/wish86.exe
Normal file
Binary file not shown.
BIN
msys/mingw/bin/x86_64-w64-mingw32-deflatehd.exe
Normal file
BIN
msys/mingw/bin/x86_64-w64-mingw32-deflatehd.exe
Normal file
Binary file not shown.
BIN
msys/mingw/bin/x86_64-w64-mingw32-inflatehd.exe
Normal file
BIN
msys/mingw/bin/x86_64-w64-mingw32-inflatehd.exe
Normal file
Binary file not shown.
BIN
msys/mingw/bin/xmlwf.exe
Normal file
BIN
msys/mingw/bin/xmlwf.exe
Normal file
Binary file not shown.
BIN
msys/mingw/bin/zipcmp.exe
Normal file
BIN
msys/mingw/bin/zipcmp.exe
Normal file
Binary file not shown.
BIN
msys/mingw/bin/zipmerge.exe
Normal file
BIN
msys/mingw/bin/zipmerge.exe
Normal file
Binary file not shown.
BIN
msys/mingw/bin/ziptool.exe
Normal file
BIN
msys/mingw/bin/ziptool.exe
Normal file
Binary file not shown.
15
msys/mingw/etc/gitattributes
Normal file
15
msys/mingw/etc/gitattributes
Normal file
|
@ -0,0 +1,15 @@
|
|||
*.doc diff=astextplain
|
||||
*.DOC diff=astextplain
|
||||
*.docx diff=astextplain
|
||||
*.DOCX diff=astextplain
|
||||
*.docm diff=astextplain
|
||||
*.DOCM diff=astextplain
|
||||
*.dot diff=astextplain
|
||||
*.DOT diff=astextplain
|
||||
*.dotm diff=astextplain
|
||||
*.DOTM diff=astextplain
|
||||
*.pdf diff=astextplain
|
||||
*.PDF diff=astextplain
|
||||
*.rtf diff=astextplain
|
||||
*.RTF diff=astextplain
|
||||
|
14
msys/mingw/etc/gitconfig
Normal file
14
msys/mingw/etc/gitconfig
Normal file
|
@ -0,0 +1,14 @@
|
|||
[http]
|
||||
sslCAInfo = C:/Program Files/Git/mingw64/ssl/certs/ca-bundle.crt
|
||||
sslBackend = openssl
|
||||
[diff "astextplain"]
|
||||
textconv = astextplain
|
||||
[filter "lfs"]
|
||||
clean = git-lfs clean -- %f
|
||||
smudge = git-lfs smudge -- %f
|
||||
process = git-lfs filter-process
|
||||
required = true
|
||||
[credential]
|
||||
helper = manager
|
||||
[core]
|
||||
editor = 'C:\\Program Files\\Notepad++\\notepad++.exe' -multiInst -notabbar -nosession -noPlugin
|
BIN
msys/mingw/etc/pki/ca-trust/extracted/java/cacerts
Normal file
BIN
msys/mingw/etc/pki/ca-trust/extracted/java/cacerts
Normal file
Binary file not shown.
5376
msys/mingw/etc/pki/ca-trust/extracted/openssl/ca-bundle.trust.crt
Normal file
5376
msys/mingw/etc/pki/ca-trust/extracted/openssl/ca-bundle.trust.crt
Normal file
File diff suppressed because it is too large
Load diff
3251
msys/mingw/etc/pki/ca-trust/extracted/pem/email-ca-bundle.pem
Normal file
3251
msys/mingw/etc/pki/ca-trust/extracted/pem/email-ca-bundle.pem
Normal file
File diff suppressed because it is too large
Load diff
2823
msys/mingw/etc/pki/ca-trust/extracted/pem/objsign-ca-bundle.pem
Normal file
2823
msys/mingw/etc/pki/ca-trust/extracted/pem/objsign-ca-bundle.pem
Normal file
File diff suppressed because it is too large
Load diff
4137
msys/mingw/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem
Normal file
4137
msys/mingw/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem
Normal file
File diff suppressed because it is too large
Load diff
34
msys/mingw/lib/cmake/c-ares/c-ares-config.cmake
Normal file
34
msys/mingw/lib/cmake/c-ares/c-ares-config.cmake
Normal file
|
@ -0,0 +1,34 @@
|
|||
|
||||
####### Expanded from @PACKAGE_INIT@ by configure_package_config_file() #######
|
||||
####### Any changes to this file will be overwritten by the next CMake run ####
|
||||
####### The input file was c-ares-config.cmake.in ########
|
||||
|
||||
get_filename_component(PACKAGE_PREFIX_DIR "${CMAKE_CURRENT_LIST_DIR}/../../../" ABSOLUTE)
|
||||
|
||||
macro(set_and_check _var _file)
|
||||
set(${_var} "${_file}")
|
||||
if(NOT EXISTS "${_file}")
|
||||
message(FATAL_ERROR "File or directory ${_file} referenced by variable ${_var} does not exist !")
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
####################################################################################
|
||||
|
||||
set_and_check(c-ares_INCLUDE_DIR "${PACKAGE_PREFIX_DIR}/include")
|
||||
|
||||
include("${CMAKE_CURRENT_LIST_DIR}/c-ares-targets.cmake")
|
||||
|
||||
set(c-ares_LIBRARY c-ares::cares)
|
||||
|
||||
if(ON)
|
||||
add_library(c-ares::cares_shared INTERFACE IMPORTED)
|
||||
set_target_properties(c-ares::cares_shared PROPERTIES INTERFACE_LINK_LIBRARIES "c-ares::cares")
|
||||
set(c-ares_SHARED_LIBRARY c-ares::cares_shared)
|
||||
elseif(ON)
|
||||
add_library(c-ares::cares_static INTERFACE IMPORTED)
|
||||
set_target_properties(c-ares::cares_static PROPERTIES INTERFACE_LINK_LIBRARIES "c-ares::cares")
|
||||
endif()
|
||||
|
||||
if(ON)
|
||||
set(c-ares_STATIC_LIBRARY c-ares::cares_static)
|
||||
endif()
|
29
msys/mingw/lib/cmake/c-ares/c-ares-targets-release.cmake
Normal file
29
msys/mingw/lib/cmake/c-ares/c-ares-targets-release.cmake
Normal file
|
@ -0,0 +1,29 @@
|
|||
#----------------------------------------------------------------
|
||||
# Generated CMake target import file for configuration "Release".
|
||||
#----------------------------------------------------------------
|
||||
|
||||
# Commands may need to know the format version.
|
||||
set(CMAKE_IMPORT_FILE_VERSION 1)
|
||||
|
||||
# Import target "c-ares::cares" for configuration "Release"
|
||||
set_property(TARGET c-ares::cares APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE)
|
||||
set_target_properties(c-ares::cares PROPERTIES
|
||||
IMPORTED_IMPLIB_RELEASE "${_IMPORT_PREFIX}/lib/libcares.dll.a"
|
||||
IMPORTED_LOCATION_RELEASE "${_IMPORT_PREFIX}/bin/libcares-2.dll"
|
||||
)
|
||||
|
||||
list(APPEND _IMPORT_CHECK_TARGETS c-ares::cares )
|
||||
list(APPEND _IMPORT_CHECK_FILES_FOR_c-ares::cares "${_IMPORT_PREFIX}/lib/libcares.dll.a" "${_IMPORT_PREFIX}/bin/libcares-2.dll" )
|
||||
|
||||
# Import target "c-ares::cares_static" for configuration "Release"
|
||||
set_property(TARGET c-ares::cares_static APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE)
|
||||
set_target_properties(c-ares::cares_static PROPERTIES
|
||||
IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "C"
|
||||
IMPORTED_LOCATION_RELEASE "${_IMPORT_PREFIX}/lib/libcares.a"
|
||||
)
|
||||
|
||||
list(APPEND _IMPORT_CHECK_TARGETS c-ares::cares_static )
|
||||
list(APPEND _IMPORT_CHECK_FILES_FOR_c-ares::cares_static "${_IMPORT_PREFIX}/lib/libcares.a" )
|
||||
|
||||
# Commands beyond this point should not need to know the version.
|
||||
set(CMAKE_IMPORT_FILE_VERSION)
|
108
msys/mingw/lib/cmake/c-ares/c-ares-targets.cmake
Normal file
108
msys/mingw/lib/cmake/c-ares/c-ares-targets.cmake
Normal file
|
@ -0,0 +1,108 @@
|
|||
# Generated by CMake
|
||||
|
||||
if("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" LESS 2.5)
|
||||
message(FATAL_ERROR "CMake >= 2.6.0 required")
|
||||
endif()
|
||||
cmake_policy(PUSH)
|
||||
cmake_policy(VERSION 2.6)
|
||||
#----------------------------------------------------------------
|
||||
# Generated CMake target import file.
|
||||
#----------------------------------------------------------------
|
||||
|
||||
# Commands may need to know the format version.
|
||||
set(CMAKE_IMPORT_FILE_VERSION 1)
|
||||
|
||||
# Protect against multiple inclusion, which would fail when already imported targets are added once more.
|
||||
set(_targetsDefined)
|
||||
set(_targetsNotDefined)
|
||||
set(_expectedTargets)
|
||||
foreach(_expectedTarget c-ares::cares c-ares::cares_static)
|
||||
list(APPEND _expectedTargets ${_expectedTarget})
|
||||
if(NOT TARGET ${_expectedTarget})
|
||||
list(APPEND _targetsNotDefined ${_expectedTarget})
|
||||
endif()
|
||||
if(TARGET ${_expectedTarget})
|
||||
list(APPEND _targetsDefined ${_expectedTarget})
|
||||
endif()
|
||||
endforeach()
|
||||
if("${_targetsDefined}" STREQUAL "${_expectedTargets}")
|
||||
unset(_targetsDefined)
|
||||
unset(_targetsNotDefined)
|
||||
unset(_expectedTargets)
|
||||
set(CMAKE_IMPORT_FILE_VERSION)
|
||||
cmake_policy(POP)
|
||||
return()
|
||||
endif()
|
||||
if(NOT "${_targetsDefined}" STREQUAL "")
|
||||
message(FATAL_ERROR "Some (but not all) targets in this export set were already defined.\nTargets Defined: ${_targetsDefined}\nTargets not yet defined: ${_targetsNotDefined}\n")
|
||||
endif()
|
||||
unset(_targetsDefined)
|
||||
unset(_targetsNotDefined)
|
||||
unset(_expectedTargets)
|
||||
|
||||
|
||||
# Compute the installation prefix relative to this file.
|
||||
get_filename_component(_IMPORT_PREFIX "${CMAKE_CURRENT_LIST_FILE}" PATH)
|
||||
get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH)
|
||||
get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH)
|
||||
get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH)
|
||||
if(_IMPORT_PREFIX STREQUAL "/")
|
||||
set(_IMPORT_PREFIX "")
|
||||
endif()
|
||||
|
||||
# Create imported target c-ares::cares
|
||||
add_library(c-ares::cares SHARED IMPORTED)
|
||||
|
||||
set_target_properties(c-ares::cares PROPERTIES
|
||||
INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include"
|
||||
INTERFACE_LINK_LIBRARIES "ws2_32"
|
||||
)
|
||||
|
||||
# Create imported target c-ares::cares_static
|
||||
add_library(c-ares::cares_static STATIC IMPORTED)
|
||||
|
||||
set_target_properties(c-ares::cares_static PROPERTIES
|
||||
INTERFACE_COMPILE_DEFINITIONS "CARES_STATICLIB"
|
||||
INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include"
|
||||
INTERFACE_LINK_LIBRARIES "ws2_32"
|
||||
)
|
||||
|
||||
if(CMAKE_VERSION VERSION_LESS 2.8.12)
|
||||
message(FATAL_ERROR "This file relies on consumers using CMake 2.8.12 or greater.")
|
||||
endif()
|
||||
|
||||
# Load information for each installed configuration.
|
||||
get_filename_component(_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH)
|
||||
file(GLOB CONFIG_FILES "${_DIR}/c-ares-targets-*.cmake")
|
||||
foreach(f ${CONFIG_FILES})
|
||||
include(${f})
|
||||
endforeach()
|
||||
|
||||
# Cleanup temporary variables.
|
||||
set(_IMPORT_PREFIX)
|
||||
|
||||
# Loop over all imported files and verify that they actually exist
|
||||
foreach(target ${_IMPORT_CHECK_TARGETS} )
|
||||
foreach(file ${_IMPORT_CHECK_FILES_FOR_${target}} )
|
||||
if(NOT EXISTS "${file}" )
|
||||
message(FATAL_ERROR "The imported target \"${target}\" references the file
|
||||
\"${file}\"
|
||||
but this file does not exist. Possible reasons include:
|
||||
* The file was deleted, renamed, or moved to another location.
|
||||
* An install or uninstall procedure did not complete successfully.
|
||||
* The installation package was faulty and contained
|
||||
\"${CMAKE_CURRENT_LIST_FILE}\"
|
||||
but not all the files it references.
|
||||
")
|
||||
endif()
|
||||
endforeach()
|
||||
unset(_IMPORT_CHECK_FILES_FOR_${target})
|
||||
endforeach()
|
||||
unset(_IMPORT_CHECK_TARGETS)
|
||||
|
||||
# This file does not depend on other imported targets which have
|
||||
# been exported from the same project but in a separate export set.
|
||||
|
||||
# Commands beyond this point should not need to know the version.
|
||||
set(CMAKE_IMPORT_FILE_VERSION)
|
||||
cmake_policy(POP)
|
7
msys/mingw/lib/dde1.4/pkgIndex.tcl
Normal file
7
msys/mingw/lib/dde1.4/pkgIndex.tcl
Normal file
|
@ -0,0 +1,7 @@
|
|||
if {([info commands ::tcl::pkgconfig] eq "")
|
||||
|| ([info sharedlibextension] ne ".dll")} return
|
||||
if {[::tcl::pkgconfig get debug]} {
|
||||
package ifneeded dde 1.4.0 [list load [file join $dir tcldde14g.dll] dde]
|
||||
} else {
|
||||
package ifneeded dde 1.4.0 [list load [file join $dir tcldde14.dll] dde]
|
||||
}
|
BIN
msys/mingw/lib/dde1.4/tcldde14.dll
Normal file
BIN
msys/mingw/lib/dde1.4/tcldde14.dll
Normal file
Binary file not shown.
BIN
msys/mingw/lib/engines/4758ccaeay32.dll
Normal file
BIN
msys/mingw/lib/engines/4758ccaeay32.dll
Normal file
Binary file not shown.
BIN
msys/mingw/lib/engines/aepeay32.dll
Normal file
BIN
msys/mingw/lib/engines/aepeay32.dll
Normal file
Binary file not shown.
BIN
msys/mingw/lib/engines/atallaeay32.dll
Normal file
BIN
msys/mingw/lib/engines/atallaeay32.dll
Normal file
Binary file not shown.
BIN
msys/mingw/lib/engines/capieay32.dll
Normal file
BIN
msys/mingw/lib/engines/capieay32.dll
Normal file
Binary file not shown.
BIN
msys/mingw/lib/engines/chileay32.dll
Normal file
BIN
msys/mingw/lib/engines/chileay32.dll
Normal file
Binary file not shown.
BIN
msys/mingw/lib/engines/cswifteay32.dll
Normal file
BIN
msys/mingw/lib/engines/cswifteay32.dll
Normal file
Binary file not shown.
BIN
msys/mingw/lib/engines/gmpeay32.dll
Normal file
BIN
msys/mingw/lib/engines/gmpeay32.dll
Normal file
Binary file not shown.
BIN
msys/mingw/lib/engines/gosteay32.dll
Normal file
BIN
msys/mingw/lib/engines/gosteay32.dll
Normal file
Binary file not shown.
BIN
msys/mingw/lib/engines/nuroneay32.dll
Normal file
BIN
msys/mingw/lib/engines/nuroneay32.dll
Normal file
Binary file not shown.
BIN
msys/mingw/lib/engines/padlockeay32.dll
Normal file
BIN
msys/mingw/lib/engines/padlockeay32.dll
Normal file
Binary file not shown.
BIN
msys/mingw/lib/engines/surewareeay32.dll
Normal file
BIN
msys/mingw/lib/engines/surewareeay32.dll
Normal file
Binary file not shown.
BIN
msys/mingw/lib/engines/ubseceay32.dll
Normal file
BIN
msys/mingw/lib/engines/ubseceay32.dll
Normal file
Binary file not shown.
151
msys/mingw/lib/itcl4.1.0/itcl.tcl
Normal file
151
msys/mingw/lib/itcl4.1.0/itcl.tcl
Normal file
|
@ -0,0 +1,151 @@
|
|||
#
|
||||
# itcl.tcl
|
||||
# ----------------------------------------------------------------------
|
||||
# Invoked automatically upon startup to customize the interpreter
|
||||
# for [incr Tcl].
|
||||
# ----------------------------------------------------------------------
|
||||
# AUTHOR: Michael J. McLennan
|
||||
# Bell Labs Innovations for Lucent Technologies
|
||||
# mmclennan@lucent.com
|
||||
# http://www.tcltk.com/itcl
|
||||
# ----------------------------------------------------------------------
|
||||
# Copyright (c) 1993-1998 Lucent Technologies, Inc.
|
||||
# ======================================================================
|
||||
# See the file "license.terms" for information on usage and
|
||||
# redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||
|
||||
proc ::itcl::delete_helper { name args } {
|
||||
::itcl::delete object $name
|
||||
}
|
||||
|
||||
# ----------------------------------------------------------------------
|
||||
# USAGE: local <className> <objName> ?<arg> <arg>...?
|
||||
#
|
||||
# Creates a new object called <objName> in class <className>, passing
|
||||
# the remaining <arg>'s to the constructor. Unlike the usual
|
||||
# [incr Tcl] objects, however, an object created by this procedure
|
||||
# will be automatically deleted when the local call frame is destroyed.
|
||||
# This command is useful for creating objects that should only remain
|
||||
# alive until a procedure exits.
|
||||
# ----------------------------------------------------------------------
|
||||
proc ::itcl::local {class name args} {
|
||||
set ptr [uplevel [list $class $name] $args]
|
||||
uplevel [list set itcl-local-$ptr $ptr]
|
||||
set cmd [uplevel namespace which -command $ptr]
|
||||
uplevel [list trace variable itcl-local-$ptr u \
|
||||
"::itcl::delete_helper $cmd"]
|
||||
return $ptr
|
||||
}
|
||||
|
||||
# ----------------------------------------------------------------------
|
||||
# auto_mkindex
|
||||
# ----------------------------------------------------------------------
|
||||
# Define Itcl commands that will be recognized by the auto_mkindex
|
||||
# parser in Tcl...
|
||||
#
|
||||
|
||||
#
|
||||
# USAGE: itcl::class name body
|
||||
# Adds an entry for the given class declaration.
|
||||
#
|
||||
foreach __cmd {itcl::class class itcl::type type ictl::widget widget itcl::widgetadaptor widgetadaptor itcl::extendedclass extendedclass} {
|
||||
auto_mkindex_parser::command $__cmd {name body} {
|
||||
variable index
|
||||
variable scriptFile
|
||||
append index "set [list auto_index([fullname $name])]"
|
||||
append index " \[list source \[file join \$dir [list $scriptFile]\]\]\n"
|
||||
|
||||
variable parser
|
||||
variable contextStack
|
||||
set contextStack [linsert $contextStack 0 $name]
|
||||
$parser eval $body
|
||||
set contextStack [lrange $contextStack 1 end]
|
||||
}
|
||||
}
|
||||
|
||||
#
|
||||
# USAGE: itcl::body name arglist body
|
||||
# Adds an entry for the given method/proc body.
|
||||
#
|
||||
foreach __cmd {itcl::body body} {
|
||||
auto_mkindex_parser::command $__cmd {name arglist body} {
|
||||
variable index
|
||||
variable scriptFile
|
||||
append index "set [list auto_index([fullname $name])]"
|
||||
append index " \[list source \[file join \$dir [list $scriptFile]\]\]\n"
|
||||
}
|
||||
}
|
||||
|
||||
#
|
||||
# USAGE: itcl::configbody name arglist body
|
||||
# Adds an entry for the given method/proc body.
|
||||
#
|
||||
foreach __cmd {itcl::configbody configbody} {
|
||||
auto_mkindex_parser::command $__cmd {name body} {
|
||||
variable index
|
||||
variable scriptFile
|
||||
append index "set [list auto_index([fullname $name])]"
|
||||
append index " \[list source \[file join \$dir [list $scriptFile]\]\]\n"
|
||||
}
|
||||
}
|
||||
|
||||
#
|
||||
# USAGE: ensemble name ?body?
|
||||
# Adds an entry to the auto index list for the given ensemble name.
|
||||
#
|
||||
foreach __cmd {itcl::ensemble ensemble} {
|
||||
auto_mkindex_parser::command $__cmd {name {body ""}} {
|
||||
variable index
|
||||
variable scriptFile
|
||||
append index "set [list auto_index([fullname $name])]"
|
||||
append index " \[list source \[file join \$dir [list $scriptFile]\]\]\n"
|
||||
}
|
||||
}
|
||||
|
||||
#
|
||||
# USAGE: public arg ?arg arg...?
|
||||
# protected arg ?arg arg...?
|
||||
# private arg ?arg arg...?
|
||||
#
|
||||
# Evaluates the arguments as commands, so we can recognize proc
|
||||
# declarations within classes.
|
||||
#
|
||||
foreach __cmd {public protected private} {
|
||||
auto_mkindex_parser::command $__cmd {args} {
|
||||
variable parser
|
||||
$parser eval $args
|
||||
}
|
||||
}
|
||||
|
||||
# SF bug #246 unset variable __cmd to avoid problems in user programs!!
|
||||
unset __cmd
|
||||
|
||||
# ----------------------------------------------------------------------
|
||||
# auto_import
|
||||
# ----------------------------------------------------------------------
|
||||
# This procedure overrides the usual "auto_import" function in the
|
||||
# Tcl library. It is invoked during "namespace import" to make see
|
||||
# if the imported commands reside in an autoloaded library. If so,
|
||||
# stubs are created to represent the commands. Executing a stub
|
||||
# later on causes the real implementation to be autoloaded.
|
||||
#
|
||||
# Arguments -
|
||||
# pattern The pattern of commands being imported (like "foo::*")
|
||||
# a canonical namespace as returned by [namespace current]
|
||||
|
||||
proc auto_import {pattern} {
|
||||
global auto_index
|
||||
|
||||
set ns [uplevel namespace current]
|
||||
set patternList [auto_qualify $pattern $ns]
|
||||
|
||||
auto_load_index
|
||||
|
||||
foreach pattern $patternList {
|
||||
foreach name [array names auto_index $pattern] {
|
||||
if {"" == [info commands $name]} {
|
||||
::itcl::import::stub create $name
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
BIN
msys/mingw/lib/itcl4.1.0/itcl410.dll
Normal file
BIN
msys/mingw/lib/itcl4.1.0/itcl410.dll
Normal file
Binary file not shown.
67
msys/mingw/lib/itcl4.1.0/itclConfig.sh
Normal file
67
msys/mingw/lib/itcl4.1.0/itclConfig.sh
Normal file
|
@ -0,0 +1,67 @@
|
|||
# itclConfig.sh --
|
||||
#
|
||||
# This shell script (for sh) is generated automatically by Itcl's
|
||||
# configure script. It will create shell variables for most of
|
||||
# the configuration options discovered by the configure script.
|
||||
# This script is intended to be included by the configure scripts
|
||||
# for Itcl extensions so that they don't have to figure this all
|
||||
# out for themselves. This file does not duplicate information
|
||||
# already provided by tclConfig.sh, so you may need to use that
|
||||
# file in addition to this one.
|
||||
#
|
||||
# The information in this file is specific to a single platform.
|
||||
|
||||
# Itcl's version number.
|
||||
itcl_VERSION='4.1.0'
|
||||
ITCL_VERSION='4.1.0'
|
||||
|
||||
# The name of the Itcl library (may be either a .a file or a shared library):
|
||||
itcl_LIB_FILE=itcl410.dll
|
||||
ITCL_LIB_FILE=itcl410.dll
|
||||
|
||||
# String to pass to linker to pick up the Itcl library from its
|
||||
# build directory.
|
||||
itcl_BUILD_LIB_SPEC='-L/mingw64/lib/itcl4.1.0 -litcl410'
|
||||
ITCL_BUILD_LIB_SPEC='-L/mingw64/lib/itcl4.1.0 -litcl410'
|
||||
|
||||
# String to pass to linker to pick up the Itcl library from its
|
||||
# installed directory.
|
||||
itcl_LIB_SPEC='-L/mingw64/lib/itcl4.1.0 -litcl410'
|
||||
ITCL_LIB_SPEC='-L/mingw64/lib/itcl4.1.0 -litcl410'
|
||||
|
||||
# The name of the Itcl stub library (a .a file):
|
||||
itcl_STUB_LIB_FILE=libitclstub410.a
|
||||
ITCL_STUB_LIB_FILE=libitclstub410.a
|
||||
|
||||
# String to pass to linker to pick up the Itcl stub library from its
|
||||
# build directory.
|
||||
itcl_BUILD_STUB_LIB_SPEC='-L/mingw64/lib/itcl4.1.0 -litclstub410'
|
||||
ITCL_BUILD_STUB_LIB_SPEC='-L/mingw64/lib/itcl4.1.0 -litclstub410'
|
||||
|
||||
# String to pass to linker to pick up the Itcl stub library from its
|
||||
# installed directory.
|
||||
itcl_STUB_LIB_SPEC='-L/mingw64/lib/itcl4.1.0 -litclstub410'
|
||||
ITCL_STUB_LIB_SPEC='-L/mingw64/lib/itcl4.1.0 -litclstub410'
|
||||
|
||||
# String to pass to linker to pick up the Itcl stub library from its
|
||||
# build directory.
|
||||
itcl_BUILD_STUB_LIB_PATH='/mingw64/lib/itcl4.1.0/libitclstub410.a'
|
||||
ITCL_BUILD_STUB_LIB_PATH='/mingw64/lib/itcl4.1.0/libitclstub410.a'
|
||||
|
||||
# String to pass to linker to pick up the Itcl stub library from its
|
||||
# installed directory.
|
||||
itcl_STUB_LIB_PATH='/mingw64/lib/itcl4.1.0/libitclstub410.a'
|
||||
ITCL_STUB_LIB_PATH='/mingw64/lib/itcl4.1.0/libitclstub410.a'
|
||||
|
||||
# Location of the top-level source directories from which [incr Tcl]
|
||||
# was built. This is the directory that contains generic, unix, etc.
|
||||
# If [incr Tcl] was compiled in a different place than the directory
|
||||
# containing the source files, this points to the location of the sources,
|
||||
# not the location where [incr Tcl] was compiled.
|
||||
itcl_SRC_DIR='/scripts/mingw-w64-tcl/src/tcl8.6.7/pkgs/itcl4.1.0'
|
||||
ITCL_SRC_DIR='/scripts/mingw-w64-tcl/src/tcl8.6.7/pkgs/itcl4.1.0'
|
||||
|
||||
# String to pass to the compiler so that an extension can
|
||||
# find installed Itcl headers.
|
||||
itcl_INCLUDE_SPEC='/scripts/mingw-w64-tcl/src/tcl8.6.7/pkgs/itcl4.1.0/generic'
|
||||
ITCL_INCLUDE_SPEC='/scripts/mingw-w64-tcl/src/tcl8.6.7/pkgs/itcl4.1.0/generic'
|
562
msys/mingw/lib/itcl4.1.0/itclHullCmds.tcl
Normal file
562
msys/mingw/lib/itcl4.1.0/itclHullCmds.tcl
Normal file
|
@ -0,0 +1,562 @@
|
|||
#
|
||||
# itclHullCmds.tcl
|
||||
# ----------------------------------------------------------------------
|
||||
# Invoked automatically upon startup to customize the interpreter
|
||||
# for [incr Tcl] when one of setupcomponent or createhull is called.
|
||||
# ----------------------------------------------------------------------
|
||||
# AUTHOR: Arnulf P. Wiedemann
|
||||
#
|
||||
# ----------------------------------------------------------------------
|
||||
# Copyright (c) 2008 Arnulf P. Wiedemann
|
||||
# ======================================================================
|
||||
# See the file "license.terms" for information on usage and
|
||||
# redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||
|
||||
package require Tk 8.6
|
||||
|
||||
namespace eval ::itcl::internal::commands {
|
||||
|
||||
# ======================= widgetDeleted ===========================
|
||||
|
||||
proc widgetDeleted {oldName newName op} {
|
||||
# The widget is beeing deleted, so we have to delete the object
|
||||
# which had the widget as itcl_hull too!
|
||||
# We have to get the real name from for example
|
||||
# ::itcl::internal::widgets::hull1.lw
|
||||
# we need only .lw here
|
||||
|
||||
#puts stderr "widgetDeleted!$oldName!$newName!$op!"
|
||||
set cmdName [namespace tail $oldName]
|
||||
set flds [split $cmdName {.}]
|
||||
set cmdName .[join [lrange $flds 1 end] {.}]
|
||||
#puts stderr "DELWIDGET![namespace current]!$cmdName![::info command $cmdName]!"
|
||||
rename $cmdName {}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
namespace eval ::itcl::builtin {
|
||||
|
||||
# ======================= createhull ===========================
|
||||
# the hull widget is a tk widget which is the (mega) widget handled behind the itcl
|
||||
# extendedclass/itcl widget.
|
||||
# It is created be renaming the itcl class object to a temporary name <itcl object name>_
|
||||
# creating the widget with the
|
||||
# appropriate options and the installing that as the "hull" widget (the container)
|
||||
# All the options in args and the options delegated to component itcl_hull are used
|
||||
# Then a unique name (hull_widget_name) in the itcl namespace is created for widget:
|
||||
# ::itcl::internal::widgets::hull<unique number><namespace tail path>
|
||||
# and widget is renamed to that name
|
||||
# Finally the <itcl object name>_ is renamed to the original <itcl object name> again
|
||||
# Component itcl_hull is created if not existent
|
||||
# itcl_hull is set to the hull_widget_name and the <itcl object name>
|
||||
# is returned to the caller
|
||||
# ==============================================================
|
||||
|
||||
proc createhull {widget_type path args} {
|
||||
variable hullCount
|
||||
upvar this this
|
||||
upvar win win
|
||||
|
||||
|
||||
#puts stderr "il-1![::info level -1]!$this!"
|
||||
#puts stderr "createhull!$widget_type!$path!$args!$this![::info command $this]!"
|
||||
#puts stderr "ns1![uplevel 1 namespace current]!"
|
||||
#puts stderr "ns2![uplevel 2 namespace current]!"
|
||||
#puts stderr "ns3![uplevel 3 namespace current]!"
|
||||
#puts stderr "level-1![::info level -1]!"
|
||||
#puts stderr "level-2![::info level -2]!"
|
||||
# set my_this [namespace tail $this]
|
||||
set my_this $this
|
||||
set tmp $my_this
|
||||
#puts stderr "II![::info command $this]![::info command $tmp]!"
|
||||
#puts stderr "rename1!rename $my_this ${tmp}_!"
|
||||
rename ::$my_this ${tmp}_
|
||||
set options [list]
|
||||
foreach {option_name value} $args {
|
||||
switch -glob -- $option_name {
|
||||
-class {
|
||||
lappend options $option_name [namespace tail $value]
|
||||
}
|
||||
-* {
|
||||
lappend options $option_name $value
|
||||
}
|
||||
default {
|
||||
return -code error "bad option name\"$option_name\" options must start with a \"-\""
|
||||
}
|
||||
}
|
||||
}
|
||||
set my_win [namespace tail $path]
|
||||
set cmd [list $widget_type $my_win]
|
||||
#puts stderr "my_win!$my_win!cmd!$cmd!$path!"
|
||||
if {[llength $options] > 0} {
|
||||
lappend cmd {*}$options
|
||||
}
|
||||
set widget [uplevel 1 $cmd]
|
||||
#puts stderr "widget!$widget!"
|
||||
trace add command $widget delete ::itcl::internal::commands::widgetDeleted
|
||||
set opts [uplevel 1 info delegated options]
|
||||
foreach entry $opts {
|
||||
foreach {optName compName} $entry break
|
||||
if {$compName eq "itcl_hull"} {
|
||||
set optInfos [uplevel 1 info delegated option $optName]
|
||||
set realOptName [lindex $optInfos 4]
|
||||
# strip off the "-" at the beginning
|
||||
set myOptName [string range $realOptName 1 end]
|
||||
set my_opt_val [option get $my_win $myOptName *]
|
||||
if {$my_opt_val ne ""} {
|
||||
$my_win configure -$myOptName $my_opt_val
|
||||
}
|
||||
}
|
||||
}
|
||||
set idx 1
|
||||
while {1} {
|
||||
set widgetName ::itcl::internal::widgets::hull${idx}$my_win
|
||||
#puts stderr "widgetName!$widgetName!"
|
||||
if {[string length [::info command $widgetName]] == 0} {
|
||||
break
|
||||
}
|
||||
incr idx
|
||||
}
|
||||
#puts stderr "rename2!rename $widget $widgetName!"
|
||||
set dorename 0
|
||||
rename $widget $widgetName
|
||||
#puts stderr "rename3!rename ${tmp}_ $tmp![::info command ${tmp}_]!my_this!$my_this!"
|
||||
rename ${tmp}_ ::$tmp
|
||||
set exists [uplevel 1 ::info exists itcl_hull]
|
||||
if {!$exists} {
|
||||
# that does not yet work, beacause of problems with resolving
|
||||
::itcl::addcomponent $my_this itcl_hull
|
||||
}
|
||||
upvar itcl_hull itcl_hull
|
||||
::itcl::setcomponent $my_this itcl_hull $widgetName
|
||||
#puts stderr "IC![::info command $my_win]!"
|
||||
set exists [uplevel 1 ::info exists itcl_interior]
|
||||
if {!$exists} {
|
||||
# that does not yet work, beacause of problems with resolving
|
||||
::itcl::addcomponent $this itcl_interior
|
||||
}
|
||||
upvar itcl_interior itcl_interior
|
||||
set itcl_interior $my_win
|
||||
#puts stderr "hull end!win!$win!itcl_hull!$itcl_hull!itcl_interior!$itcl_interior!"
|
||||
return $my_win
|
||||
}
|
||||
|
||||
# ======================= addToItclOptions ===========================
|
||||
|
||||
proc addToItclOptions {my_class my_win myOptions argsDict} {
|
||||
upvar win win
|
||||
upvar itcl_hull itcl_hull
|
||||
|
||||
set opt_lst [list configure]
|
||||
foreach opt [lsort $myOptions] {
|
||||
#puts stderr "IOPT!$opt!$my_class!$my_win![::itcl::is class $my_class]!"
|
||||
set isClass [::itcl::is class $my_class]
|
||||
set found 0
|
||||
if {$isClass} {
|
||||
if {[catch {
|
||||
set resource [namespace eval $my_class info option $opt -resource]
|
||||
set class [namespace eval $my_class info option $opt -class]
|
||||
set default_val [uplevel 2 info option $opt -default]
|
||||
set found 1
|
||||
} msg]} {
|
||||
# puts stderr "MSG!$opt!$my_class!$msg!"
|
||||
}
|
||||
} else {
|
||||
set tmp_win [uplevel #0 $my_class .___xx]
|
||||
|
||||
set my_info [$tmp_win configure $opt]
|
||||
set resource [lindex $my_info 1]
|
||||
set class [lindex $my_info 2]
|
||||
set default_val [lindex $my_info 3]
|
||||
uplevel #0 destroy $tmp_win
|
||||
set found 1
|
||||
}
|
||||
if {$found} {
|
||||
if {[catch {
|
||||
set val [uplevel #0 ::option get $win $resource $class]
|
||||
} msg]} {
|
||||
set val ""
|
||||
}
|
||||
if {[::dict exists $argsDict $opt]} {
|
||||
# we have an explicitly set option
|
||||
set val [::dict get $argsDict $opt]
|
||||
} else {
|
||||
if {[string length $val] == 0} {
|
||||
set val $default_val
|
||||
}
|
||||
}
|
||||
set ::itcl::internal::variables::${my_win}::itcl_options($opt) $val
|
||||
set ::itcl::internal::variables::${my_win}::__itcl_option_infos($opt) [list $resource $class $default_val]
|
||||
#puts stderr "OPT1!$opt!$val!"
|
||||
# uplevel 1 [list set itcl_options($opt) [list $val]]
|
||||
if {[catch {uplevel 1 $win configure $opt [list $val]} msg]} {
|
||||
#puts stderr "addToItclOptions ERR!$msg!$my_class!$win!configure!$opt!$val!"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# ======================= setupcomponent ===========================
|
||||
|
||||
proc setupcomponent {comp using widget_type path args} {
|
||||
upvar this this
|
||||
upvar win win
|
||||
upvar itcl_hull itcl_hull
|
||||
|
||||
#puts stderr "setupcomponent!$comp!$widget_type!$path!$args!$this!$win!$itcl_hull!"
|
||||
#puts stderr "CONT![uplevel 1 info context]!"
|
||||
#puts stderr "ns1![uplevel 1 namespace current]!"
|
||||
#puts stderr "ns2![uplevel 2 namespace current]!"
|
||||
#puts stderr "ns3![uplevel 3 namespace current]!"
|
||||
set my_comp_object [lindex [uplevel 1 info context] 1]
|
||||
if {[::info exists ::itcl::internal::component_objects($my_comp_object)]} {
|
||||
set my_comp_object [set ::itcl::internal::component_objects($my_comp_object)]
|
||||
} else {
|
||||
set ::itcl::internal::component_objects($path) $my_comp_object
|
||||
}
|
||||
set options [list]
|
||||
foreach {option_name value} $args {
|
||||
switch -glob -- $option_name {
|
||||
-* {
|
||||
lappend options $option_name $value
|
||||
}
|
||||
default {
|
||||
return -code error "bad option name\"$option_name\" options must start with a \"-\""
|
||||
}
|
||||
}
|
||||
}
|
||||
if {[llength $args]} {
|
||||
set argsDict [dict create {*}$args]
|
||||
} else {
|
||||
set argsDict [dict create]
|
||||
}
|
||||
set cmd [list $widget_type $path]
|
||||
if {[llength $options] > 0} {
|
||||
lappend cmd {*}$options
|
||||
}
|
||||
#puts stderr "cmd0![::info command $widget_type]!$path![::info command $path]!"
|
||||
#puts stderr "cmd1!$cmd!"
|
||||
# set my_comp [uplevel 3 $cmd]
|
||||
set my_comp [uplevel #0 $cmd]
|
||||
#puts stderr 111![::info command $path]!
|
||||
::itcl::setcomponent $this $comp $my_comp
|
||||
set opts [uplevel 1 info delegated options]
|
||||
foreach entry $opts {
|
||||
foreach {optName compName} $entry break
|
||||
if {$compName eq $my_comp} {
|
||||
set optInfos [uplevel 1 info delegated option $optName]
|
||||
set realOptName [lindex $optInfos 4]
|
||||
# strip off the "-" at the beginning
|
||||
set myOptName [string range $realOptName 1 end]
|
||||
set my_opt_val [option get $my_win $myOptName *]
|
||||
if {$my_opt_val ne ""} {
|
||||
$my_comp configure -$myOptName $my_opt_val
|
||||
}
|
||||
}
|
||||
}
|
||||
set my_class $widget_type
|
||||
set my_parent_class [uplevel 1 namespace current]
|
||||
if {[catch {
|
||||
set myOptions [namespace eval $my_class {info classoptions}]
|
||||
} msg]} {
|
||||
set myOptions [list]
|
||||
}
|
||||
foreach entry [$path configure] {
|
||||
foreach {opt dummy1 dummy2 dummy3} $entry break
|
||||
lappend myOptions $opt
|
||||
}
|
||||
#puts stderr "OPTS!$myOptions!"
|
||||
addToItclOptions $widget_type $my_comp_object $myOptions $argsDict
|
||||
#puts stderr END!$path![::info command $path]!
|
||||
}
|
||||
|
||||
proc itcl_initoptions {args} {
|
||||
puts stderr "ITCL_INITOPT!$args!"
|
||||
}
|
||||
|
||||
# ======================= initoptions ===========================
|
||||
|
||||
proc initoptions {args} {
|
||||
upvar win win
|
||||
upvar itcl_hull itcl_hull
|
||||
upvar itcl_option_components itcl_option_components
|
||||
|
||||
#puts stderr "INITOPT!!$win!"
|
||||
if {[llength $args]} {
|
||||
set argsDict [dict create {*}$args]
|
||||
} else {
|
||||
set argsDict [dict create]
|
||||
}
|
||||
set my_class [uplevel 1 namespace current]
|
||||
set myOptions [namespace eval $my_class {info classoptions}]
|
||||
if {[dict exists $::itcl::internal::dicts::classComponents $my_class]} {
|
||||
set class_info_dict [dict get $::itcl::internal::dicts::classComponents $my_class]
|
||||
# set myOptions [lsort -unique [namespace eval $my_class {info options}]]
|
||||
foreach comp [uplevel 1 info components] {
|
||||
if {[dict exists $class_info_dict $comp -keptoptions]} {
|
||||
foreach my_opt [dict get $class_info_dict $comp -keptoptions] {
|
||||
if {[lsearch $myOptions $my_opt] < 0} {
|
||||
#puts stderr "KEOPT!$my_opt!"
|
||||
lappend myOptions $my_opt
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
set class_info_dict [list]
|
||||
}
|
||||
#puts stderr "OPTS!$win!$my_class![join [lsort $myOptions]] \n]!"
|
||||
set opt_lst [list configure]
|
||||
set my_win $win
|
||||
foreach opt [lsort $myOptions] {
|
||||
set found 0
|
||||
if {[catch {
|
||||
set resource [uplevel 1 info option $opt -resource]
|
||||
set class [uplevel 1 info option $opt -class]
|
||||
set default_val [uplevel 1 info option $opt -default]
|
||||
set found 1
|
||||
} msg]} {
|
||||
# puts stderr "MSG!$opt!$msg!"
|
||||
}
|
||||
#puts stderr "OPT!$opt!$found!"
|
||||
if {$found} {
|
||||
if {[catch {
|
||||
set val [uplevel #0 ::option get $my_win $resource $class]
|
||||
} msg]} {
|
||||
set val ""
|
||||
}
|
||||
if {[::dict exists $argsDict $opt]} {
|
||||
# we have an explicitly set option
|
||||
set val [::dict get $argsDict $opt]
|
||||
} else {
|
||||
if {[string length $val] == 0} {
|
||||
set val $default_val
|
||||
}
|
||||
}
|
||||
set ::itcl::internal::variables::${win}::itcl_options($opt) $val
|
||||
set ::itcl::internal::variables::${win}::__itcl_option_infos($opt) [list $resource $class $default_val]
|
||||
#puts stderr "OPT1!$opt!$val!"
|
||||
# uplevel 1 [list set itcl_options($opt) [list $val]]
|
||||
if {[catch {uplevel 1 $my_win configure $opt [list $val]} msg]} {
|
||||
puts stderr "initoptions ERR!$msg!$my_class!$my_win!configure!$opt!$val!"
|
||||
}
|
||||
}
|
||||
foreach comp [dict keys $class_info_dict] {
|
||||
#puts stderr "OPT1!$opt!$comp![dict get $class_info_dict $comp]!"
|
||||
if {[dict exists $class_info_dict $comp -keptoptions]} {
|
||||
if {[lsearch [dict get $class_info_dict $comp -keptoptions] $opt] >= 0} {
|
||||
if {$found == 0} {
|
||||
# we use the option value of the first component for setting
|
||||
# the option, as the components are traversed in the dict
|
||||
# depending on the ordering of the component creation!!
|
||||
set my_info [uplevel 1 \[set $comp\] configure $opt]
|
||||
set resource [lindex $my_info 1]
|
||||
set class [lindex $my_info 2]
|
||||
set default_val [lindex $my_info 3]
|
||||
set found 2
|
||||
set val [uplevel #0 ::option get $my_win $resource $class]
|
||||
if {[::dict exists $argsDict $opt]} {
|
||||
# we have an explicitly set option
|
||||
set val [::dict get $argsDict $opt]
|
||||
} else {
|
||||
if {[string length $val] == 0} {
|
||||
set val $default_val
|
||||
}
|
||||
}
|
||||
#puts stderr "OPT2!$opt!$val!"
|
||||
set ::itcl::internal::variables::${win}::itcl_options($opt) $val
|
||||
set ::itcl::internal::variables::${win}::__itcl_option_infos($opt) [list $resource $class $default_val]
|
||||
# uplevel 1 [list set itcl_options($opt) [list $val]]
|
||||
}
|
||||
if {[catch {uplevel 1 \[set $comp\] configure $opt [list $val]} msg]} {
|
||||
puts stderr "initoptions ERR2!$msg!$my_class!$comp!configure!$opt!$val!"
|
||||
}
|
||||
if {![uplevel 1 info exists itcl_option_components($opt)]} {
|
||||
set itcl_option_components($opt) [list]
|
||||
}
|
||||
if {[lsearch [set itcl_option_components($opt)] $comp] < 0} {
|
||||
if {![catch {
|
||||
set optval [uplevel 1 [list set itcl_options($opt)]]
|
||||
} msg3]} {
|
||||
uplevel 1 \[set $comp\] configure $opt $optval
|
||||
}
|
||||
lappend itcl_option_components($opt) $comp
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
# uplevel 1 $opt_lst
|
||||
}
|
||||
|
||||
# ======================= setoptions ===========================
|
||||
|
||||
proc setoptions {args} {
|
||||
|
||||
#puts stderr "setOPT!!$args!"
|
||||
if {[llength $args]} {
|
||||
set argsDict [dict create {*}$args]
|
||||
} else {
|
||||
set argsDict [dict create]
|
||||
}
|
||||
set my_class [uplevel 1 namespace current]
|
||||
set myOptions [namespace eval $my_class {info options}]
|
||||
#puts stderr "OPTS!$win!$my_class![join [lsort $myOptions]] \n]!"
|
||||
set opt_lst [list configure]
|
||||
foreach opt [lsort $myOptions] {
|
||||
set found 0
|
||||
if {[catch {
|
||||
set resource [uplevel 1 info option $opt -resource]
|
||||
set class [uplevel 1 info option $opt -class]
|
||||
set default_val [uplevel 1 info option $opt -default]
|
||||
set found 1
|
||||
} msg]} {
|
||||
# puts stderr "MSG!$opt!$msg!"
|
||||
}
|
||||
#puts stderr "OPT!$opt!$found!"
|
||||
if {$found} {
|
||||
set val ""
|
||||
if {[::dict exists $argsDict $opt]} {
|
||||
# we have an explicitly set option
|
||||
set val [::dict get $argsDict $opt]
|
||||
} else {
|
||||
if {[string length $val] == 0} {
|
||||
set val $default_val
|
||||
}
|
||||
}
|
||||
set myObj [uplevel 1 set this]
|
||||
#puts stderr "myObj!$myObj!"
|
||||
set ::itcl::internal::variables::${myObj}::itcl_options($opt) $val
|
||||
set ::itcl::internal::variables::${myObj}::__itcl_option_infos($opt) [list $resource $class $default_val]
|
||||
#puts stderr "OPT1!$opt!$val!"
|
||||
uplevel 1 [list set itcl_options($opt) [list $val]]
|
||||
# if {[catch {uplevel 1 $myObj configure $opt [list $val]} msg]} {
|
||||
#puts stderr "initoptions ERR!$msg!$my_class!$my_win!configure!$opt!$val!"
|
||||
# }
|
||||
}
|
||||
}
|
||||
# uplevel 1 $opt_lst
|
||||
}
|
||||
|
||||
# ========================= keepcomponentoption ======================
|
||||
# Invoked by Tcl during evaluating constructor whenever
|
||||
# the "keepcomponentoption" command is invoked to list the options
|
||||
# to be kept when an ::itcl::extendedclass component has been setup
|
||||
# for an object.
|
||||
#
|
||||
# It checks, for all arguments, if the opt is an option of that class
|
||||
# and of that component. If that is the case it adds the component name
|
||||
# to the list of components for that option.
|
||||
# The variable is the object variable: itcl_option_components($opt)
|
||||
#
|
||||
# Handles the following syntax:
|
||||
#
|
||||
# keepcomponentoption <componentName> <optionName> ?<optionName> ...?
|
||||
#
|
||||
# ======================================================================
|
||||
|
||||
|
||||
proc keepcomponentoption {args} {
|
||||
upvar win win
|
||||
upvar itcl_hull itcl_hull
|
||||
|
||||
set usage "wrong # args, should be: keepcomponentoption componentName optionName ?optionName ...?"
|
||||
|
||||
#puts stderr "KEEP!$args![uplevel 1 namespace current]!"
|
||||
if {[llength $args] < 2} {
|
||||
puts stderr $usage
|
||||
return -code error
|
||||
}
|
||||
set my_hull [uplevel 1 set itcl_hull]
|
||||
set my_class [uplevel 1 namespace current]
|
||||
set comp [lindex $args 0]
|
||||
set args [lrange $args 1 end]
|
||||
set class_info_dict [dict get $::itcl::internal::dicts::classComponents $my_class]
|
||||
if {![dict exists $class_info_dict $comp]} {
|
||||
puts stderr "keepcomponentoption cannot find component \"$comp\""
|
||||
return -code error
|
||||
}
|
||||
set class_comp_dict [dict get $class_info_dict $comp]
|
||||
if {![dict exists $class_comp_dict -keptoptions]} {
|
||||
dict set class_comp_dict -keptoptions [list]
|
||||
}
|
||||
foreach opt $args {
|
||||
#puts stderr "KEEP!$opt!"
|
||||
if {[string range $opt 0 0] ne "-"} {
|
||||
puts stderr "keepcomponentoption: option must begin with a \"-\"!"
|
||||
return -code error
|
||||
}
|
||||
if {[lsearch [dict get $class_comp_dict -keptoptions] $opt] < 0} {
|
||||
dict lappend class_comp_dict -keptoptions $opt
|
||||
}
|
||||
}
|
||||
if {![info exists ::itcl::internal::component_objects([lindex [uplevel 1 info context] 1])]} {
|
||||
set comp_object $::itcl::internal::component_objects([lindex [uplevel 1 info context] 1])
|
||||
} else {
|
||||
set comp_object "unknown_comp_obj_$comp!"
|
||||
}
|
||||
dict set class_info_dict $comp $class_comp_dict
|
||||
dict set ::itcl::internal::dicts::classComponents $my_class $class_info_dict
|
||||
puts stderr "CLDI!$class_comp_dict!"
|
||||
addToItclOptions $my_class $comp_object $args [list]
|
||||
}
|
||||
|
||||
proc ignorecomponentoption {args} {
|
||||
puts stderr "IGNORE_COMPONENT_OPTION!$args!"
|
||||
}
|
||||
|
||||
proc renamecomponentoption {args} {
|
||||
puts stderr "rename_COMPONENT_OPTION!$args!"
|
||||
}
|
||||
|
||||
proc addoptioncomponent {args} {
|
||||
puts stderr "ADD_OPTION_COMPONENT!$args!"
|
||||
}
|
||||
|
||||
proc ignoreoptioncomponent {args} {
|
||||
puts stderr "IGNORE_OPTION_COMPONENT!$args!"
|
||||
}
|
||||
|
||||
proc renameoptioncomponent {args} {
|
||||
puts stderr "RENAME_OPTION_COMPONENT!$args!"
|
||||
}
|
||||
|
||||
proc getEclassOptions {args} {
|
||||
upvar win win
|
||||
|
||||
#puts stderr "getEclassOptions!$args!$win![uplevel 1 namespace current]!"
|
||||
#parray ::itcl::internal::variables::${win}::itcl_options
|
||||
set result [list]
|
||||
foreach opt [array names ::itcl::internal::variables::${win}::itcl_options] {
|
||||
if {[catch {
|
||||
foreach {res cls def} [set ::itcl::internal::variables::${win}::__itcl_option_infos($opt)] break
|
||||
lappend result [list $opt $res $cls $def [set ::itcl::internal::variables::${win}::itcl_options($opt)]]
|
||||
} msg]} {
|
||||
}
|
||||
}
|
||||
return $result
|
||||
}
|
||||
|
||||
proc eclassConfigure {args} {
|
||||
upvar win win
|
||||
|
||||
#puts stderr "+++ eclassConfigure!$args!"
|
||||
if {[llength $args] > 1} {
|
||||
foreach {opt val} $args break
|
||||
if {[::info exists ::itcl::internal::variables::${win}::itcl_options($opt)]} {
|
||||
set ::itcl::internal::variables::${win}::itcl_options($opt) $val
|
||||
return
|
||||
}
|
||||
} else {
|
||||
foreach {opt} $args break
|
||||
if {[::info exists ::itcl::internal::variables::${win}::itcl_options($opt)]} {
|
||||
#puts stderr "OP![set ::itcl::internal::variables::${win}::itcl_options($opt)]!"
|
||||
foreach {res cls def} [set ::itcl::internal::variables::${win}::__itcl_option_infos($opt)] break
|
||||
return [list $opt $res $cls $def [set ::itcl::internal::variables::${win}::itcl_options($opt)]]
|
||||
}
|
||||
}
|
||||
return -code error
|
||||
}
|
||||
|
||||
}
|
447
msys/mingw/lib/itcl4.1.0/itclWidget.tcl
Normal file
447
msys/mingw/lib/itcl4.1.0/itclWidget.tcl
Normal file
|
@ -0,0 +1,447 @@
|
|||
#
|
||||
# itclWidget.tcl
|
||||
# ----------------------------------------------------------------------
|
||||
# Invoked automatically upon startup to customize the interpreter
|
||||
# for [incr Tcl] when one of ::itcl::widget or ::itcl::widgetadaptor is called.
|
||||
# ----------------------------------------------------------------------
|
||||
# AUTHOR: Arnulf P. Wiedemann
|
||||
#
|
||||
# ----------------------------------------------------------------------
|
||||
# Copyright (c) 2008 Arnulf P. Wiedemann
|
||||
# ======================================================================
|
||||
# See the file "license.terms" for information on usage and
|
||||
# redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||
|
||||
package require Tk 8.6
|
||||
# package require itclwidget [set ::itcl::version]
|
||||
|
||||
namespace eval ::itcl {
|
||||
|
||||
proc widget {name args} {
|
||||
set result [uplevel 1 ::itcl::internal::commands::genericclass widget $name $args]
|
||||
# we handle create by owerselfs !! allow classunknown to handle that
|
||||
oo::objdefine $result unexport create
|
||||
return $result
|
||||
}
|
||||
|
||||
proc widgetadaptor {name args} {
|
||||
set result [uplevel 1 ::itcl::internal::commands::genericclass widgetadaptor $name $args]
|
||||
# we handle create by owerselfs !! allow classunknown to handle that
|
||||
oo::objdefine $result unexport create
|
||||
return $result
|
||||
}
|
||||
|
||||
} ; # end ::itcl
|
||||
|
||||
|
||||
namespace eval ::itcl::internal::commands {
|
||||
|
||||
proc initWidgetOptions {varNsName widgetName className} {
|
||||
set myDict [set ::itcl::internal::dicts::classOptions]
|
||||
if {$myDict eq ""} {
|
||||
return
|
||||
}
|
||||
if {![dict exists $myDict $className]} {
|
||||
return
|
||||
}
|
||||
set myDict [dict get $myDict $className]
|
||||
foreach option [dict keys $myDict] {
|
||||
set infos [dict get $myDict $option]
|
||||
set resource [dict get $infos -resource]
|
||||
set class [dict get $infos -class]
|
||||
set value [::option get $widgetName $resource $class]
|
||||
if {$value eq ""} {
|
||||
if {[dict exists $infos -default]} {
|
||||
set defaultValue [dict get $infos -default]
|
||||
uplevel 1 set ${varNsName}::itcl_options($option) $defaultValue
|
||||
}
|
||||
} else {
|
||||
uplevel 1 set ${varNsName}::itcl_options($option) $value
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
proc initWidgetDelegatedOptions {varNsName widgetName className args} {
|
||||
set myDict [set ::itcl::internal::dicts::classDelegatedOptions]
|
||||
if {$myDict eq ""} {
|
||||
return
|
||||
}
|
||||
if {![dict exists $myDict $className]} {
|
||||
return
|
||||
}
|
||||
set myDict [dict get $myDict $className]
|
||||
foreach option [dict keys $myDict] {
|
||||
set infos [dict get $myDict $option]
|
||||
if {![dict exists $infos -resource]} {
|
||||
# this is the case when delegating "*"
|
||||
continue
|
||||
}
|
||||
if {![dict exists $infos -component]} {
|
||||
# nothing to do
|
||||
continue
|
||||
}
|
||||
# check if not in the command line options
|
||||
# these have higher priority
|
||||
set myOption $option
|
||||
if {[dict exists $infos -as]} {
|
||||
set myOption [dict get $infos -as]
|
||||
}
|
||||
set noOptionSet 0
|
||||
foreach {optName optVal} $args {
|
||||
if {$optName eq $myOption} {
|
||||
set noOptionSet 1
|
||||
break
|
||||
}
|
||||
}
|
||||
if {$noOptionSet} {
|
||||
continue
|
||||
}
|
||||
set resource [dict get $infos -resource]
|
||||
set class [dict get $infos -class]
|
||||
set component [dict get $infos -component]
|
||||
set value [::option get $widgetName $resource $class]
|
||||
if {$component ne ""} {
|
||||
if {$value ne ""} {
|
||||
set compVar [namespace eval ${varNsName}${className} "set $component"]
|
||||
if {$compVar ne ""} {
|
||||
uplevel 1 $compVar configure $myOption $value
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
proc widgetinitobjectoptions {varNsName widgetName className} {
|
||||
#puts stderr "initWidgetObjectOptions!$varNsName!$widgetName!$className!"
|
||||
}
|
||||
|
||||
proc deletehull {newName oldName what} {
|
||||
if {$what eq "delete"} {
|
||||
set name [namespace tail $newName]
|
||||
regsub {hull[0-9]+} $name {} name
|
||||
rename $name {}
|
||||
}
|
||||
if {$what eq "rename"} {
|
||||
set name [namespace tail $newName]
|
||||
regsub {hull[0-9]+} $name {} name
|
||||
rename $name {}
|
||||
}
|
||||
}
|
||||
|
||||
proc hullandoptionsinstall {objectName className widgetClass hulltype args} {
|
||||
if {$hulltype eq ""} {
|
||||
set hulltype frame
|
||||
}
|
||||
set idx 0
|
||||
set found 0
|
||||
foreach {optName optValue} $args {
|
||||
if {$optName eq "-class"} {
|
||||
set found 1
|
||||
set widgetClass $optValue
|
||||
break
|
||||
}
|
||||
incr idx
|
||||
}
|
||||
if {$found} {
|
||||
set args [lreplace $args $idx [expr {$idx + 1}]]
|
||||
}
|
||||
if {$widgetClass eq ""} {
|
||||
set widgetClass $className
|
||||
set widgetClass [string totitle $widgetClass]
|
||||
}
|
||||
set cmd "set win $objectName; ::itcl::builtin::installhull using $hulltype -class $widgetClass $args"
|
||||
uplevel 2 $cmd
|
||||
}
|
||||
|
||||
} ; # end ::itcl::internal::commands
|
||||
|
||||
namespace eval ::itcl::builtin {
|
||||
|
||||
proc installhull {args} {
|
||||
set cmdPath ::itcl::internal::commands
|
||||
set className [uplevel 1 info class]
|
||||
|
||||
set replace 0
|
||||
switch -- [llength $args] {
|
||||
0 {
|
||||
return -code error\
|
||||
"wrong # args: should be \"[lindex [info level 0] 0]\
|
||||
name|using <widgetType> ?arg ...?\""
|
||||
}
|
||||
1 {
|
||||
set widgetName [lindex $args 0]
|
||||
set varNsName $::itcl::internal::varNsName($widgetName)
|
||||
}
|
||||
default {
|
||||
upvar win win
|
||||
set widgetName $win
|
||||
|
||||
set varNsName $::itcl::internal::varNsName($widgetName)
|
||||
set widgetType [lindex $args 1]
|
||||
incr replace
|
||||
if {[llength $args] > 3 && [lindex $args 2] eq "-class"} {
|
||||
set classNam [lindex $args 3]
|
||||
incr replace 2
|
||||
} else {
|
||||
set classNam [string totitle $widgetType]
|
||||
}
|
||||
uplevel 1 [lreplace $args 0 $replace $widgetType $widgetName -class $classNam]
|
||||
uplevel 1 [list ${cmdPath}::initWidgetOptions $varNsName $widgetName $className]
|
||||
}
|
||||
}
|
||||
|
||||
# initialize the itcl_hull variable
|
||||
set i 0
|
||||
set nam ::itcl::internal::widgets::hull
|
||||
while {1} {
|
||||
incr i
|
||||
set hullNam ${nam}${i}$widgetName
|
||||
if {[::info command $hullNam] eq ""} {
|
||||
break
|
||||
}
|
||||
}
|
||||
uplevel 1 [list ${cmdPath}::sethullwindowname $widgetName]
|
||||
uplevel 1 [list ::rename $widgetName $hullNam]
|
||||
uplevel 1 [list ::trace add command $hullNam {delete rename} ::itcl::internal::commands::deletehull]
|
||||
catch {${cmdPath}::checksetitclhull [list] 0}
|
||||
namespace eval ${varNsName}${className} "set itcl_hull $hullNam"
|
||||
catch {${cmdPath}::checksetitclhull [list] 2}
|
||||
uplevel 1 [lreplace $args 0 $replace ${cmdPath}::initWidgetDelegatedOptions $varNsName $widgetName $className]
|
||||
}
|
||||
|
||||
proc installcomponent {args} {
|
||||
upvar win win
|
||||
|
||||
set className [uplevel 1 info class]
|
||||
set myType [${className}::info types [namespace tail $className]]
|
||||
set isType 0
|
||||
if {$myType ne ""} {
|
||||
set isType 1
|
||||
}
|
||||
set numArgs [llength $args]
|
||||
set usage "usage: installcomponent <componentName> using <widgetType> <widgetPath> ?-option value ...?"
|
||||
if {$numArgs < 4} {
|
||||
error $usage
|
||||
}
|
||||
foreach {componentName using widgetType widgetPath} $args break
|
||||
set opts [lrange $args 4 end]
|
||||
if {$using ne "using"} {
|
||||
error $usage
|
||||
}
|
||||
if {!$isType} {
|
||||
set hullExists [uplevel 1 ::info exists itcl_hull]
|
||||
if {!$hullExists} {
|
||||
error "cannot install \"$componentName\" before \"itcl_hull\" exists"
|
||||
}
|
||||
set hullVal [uplevel 1 set itcl_hull]
|
||||
if {$hullVal eq ""} {
|
||||
error "cannot install \"$componentName\" before \"itcl_hull\" exists"
|
||||
}
|
||||
}
|
||||
# check for delegated option and ask the option database for the values
|
||||
# first check for number of delegated options
|
||||
set numOpts 0
|
||||
set starOption 0
|
||||
set myDict [set ::itcl::internal::dicts::classDelegatedOptions]
|
||||
if {[dict exists $myDict $className]} {
|
||||
set myDict [dict get $myDict $className]
|
||||
foreach option [dict keys $myDict] {
|
||||
if {$option eq "*"} {
|
||||
set starOption 1
|
||||
}
|
||||
incr numOpts
|
||||
}
|
||||
}
|
||||
set myOptionDict [set ::itcl::internal::dicts::classOptions]
|
||||
if {[dict exists $myOptionDict $className]} {
|
||||
set myOptionDict [dict get $myOptionDict $className]
|
||||
}
|
||||
set cmd [list $widgetPath configure]
|
||||
set cmd1 "set $componentName \[$widgetType $widgetPath\]"
|
||||
uplevel 1 $cmd1
|
||||
if {$starOption} {
|
||||
upvar $componentName compName
|
||||
set cmd1 [list $compName configure]
|
||||
set configInfos [uplevel 1 $cmd1]
|
||||
foreach entry $configInfos {
|
||||
if {[llength $entry] > 2} {
|
||||
foreach {optName resource class defaultValue} $entry break
|
||||
set val ""
|
||||
catch {
|
||||
set val [::option get $win $resource $class]
|
||||
}
|
||||
if {$val ne ""} {
|
||||
set addOpt 1
|
||||
if {[dict exists $myDict $$optName]} {
|
||||
set addOpt 0
|
||||
} else {
|
||||
set starDict [dict get $myDict "*"]
|
||||
if {[dict exists $starDict -except]} {
|
||||
set exceptions [dict get $starDict -except]
|
||||
if {[lsearch $exceptions $optName] >= 0} {
|
||||
set addOpt 0
|
||||
}
|
||||
|
||||
}
|
||||
if {[dict exists $myOptionDict $optName]} {
|
||||
set addOpt 0
|
||||
}
|
||||
}
|
||||
if {$addOpt} {
|
||||
lappend cmd $optName $val
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
} else {
|
||||
foreach optName [dict keys $myDict] {
|
||||
set optInfos [dict get $myDict $optName]
|
||||
set resource [dict get $optInfos -resource]
|
||||
set class [namespace tail $className]
|
||||
set class [string totitle $class]
|
||||
set val ""
|
||||
catch {
|
||||
set val [::option get $win $resource $class]
|
||||
}
|
||||
if {$val ne ""} {
|
||||
if {[dict exists $optInfos -as] } {
|
||||
set optName [dict get $optInfos -as]
|
||||
}
|
||||
lappend cmd $optName $val
|
||||
}
|
||||
}
|
||||
}
|
||||
lappend cmd {*}$opts
|
||||
uplevel 1 $cmd
|
||||
}
|
||||
|
||||
} ; # end ::itcl::builtin
|
||||
|
||||
set ::itcl::internal::dicts::hullTypes [list \
|
||||
frame \
|
||||
toplevel \
|
||||
labelframe \
|
||||
ttk:frame \
|
||||
ttk:toplevel \
|
||||
ttk:labelframe \
|
||||
]
|
||||
|
||||
namespace eval ::itcl::builtin::Info {
|
||||
|
||||
proc hulltypes {args} {
|
||||
namespace upvar ::itcl::internal::dicts hullTypes hullTypes
|
||||
|
||||
set numArgs [llength $args]
|
||||
if {$numArgs > 1} {
|
||||
error "wrong # args should be: info hulltypes ?<pattern>?"
|
||||
}
|
||||
set pattern ""
|
||||
if {$numArgs > 0} {
|
||||
set pattern [lindex $args 0]
|
||||
}
|
||||
if {$pattern ne ""} {
|
||||
return [lsearch -all -inline -glob $hullTypes $pattern]
|
||||
}
|
||||
return $hullTypes
|
||||
|
||||
}
|
||||
|
||||
proc widgetclasses {args} {
|
||||
set numArgs [llength $args]
|
||||
if {$numArgs > 1} {
|
||||
error "wrong # args should be: info widgetclasses ?<pattern>?"
|
||||
}
|
||||
set pattern ""
|
||||
if {$numArgs > 0} {
|
||||
set pattern [lindex $args 0]
|
||||
}
|
||||
set myDict [set ::itcl::internal::dicts::classes]
|
||||
if {![dict exists $myDict widget]} {
|
||||
return [list]
|
||||
}
|
||||
set myDict [dict get $myDict widget]
|
||||
set result [list]
|
||||
if {$pattern ne ""} {
|
||||
foreach key [dict keys $myDict] {
|
||||
set myInfo [dict get $myDict $key]
|
||||
set value [dict get $myInfo -widget]
|
||||
if {[string match $pattern $value]} {
|
||||
lappend result $value
|
||||
}
|
||||
}
|
||||
} else {
|
||||
foreach key [dict keys $myDict] {
|
||||
set myInfo [dict get $myDict $key]
|
||||
lappend result [dict get $myInfo -widget]
|
||||
}
|
||||
}
|
||||
return $result
|
||||
}
|
||||
|
||||
proc widgets {args} {
|
||||
set numArgs [llength $args]
|
||||
if {$numArgs > 1} {
|
||||
error "wrong # args should be: info widgets ?<pattern>?"
|
||||
}
|
||||
set pattern ""
|
||||
if {$numArgs > 0} {
|
||||
set pattern [lindex $args 0]
|
||||
}
|
||||
set myDict [set ::itcl::internal::dicts::classes]
|
||||
if {![dict exists $myDict widget]} {
|
||||
return [list]
|
||||
}
|
||||
set myDict [dict get $myDict widget]
|
||||
set result [list]
|
||||
if {$pattern ne ""} {
|
||||
foreach key [dict keys $myDict] {
|
||||
set myInfo [dict get $myDict $key]
|
||||
set value [dict get $myInfo -name]
|
||||
if {[string match $pattern $value]} {
|
||||
lappend result $value
|
||||
}
|
||||
}
|
||||
} else {
|
||||
foreach key [dict keys $myDict] {
|
||||
set myInfo [dict get $myDict $key]
|
||||
lappend result [dict get $myInfo -name]
|
||||
}
|
||||
}
|
||||
return $result
|
||||
}
|
||||
|
||||
proc widgetadaptors {args} {
|
||||
set numArgs [llength $args]
|
||||
if {$numArgs > 1} {
|
||||
error "wrong # args should be: info widgetadaptors ?<pattern>?"
|
||||
}
|
||||
set pattern ""
|
||||
if {$numArgs > 0} {
|
||||
set pattern [lindex $args 0]
|
||||
}
|
||||
set myDict [set ::itcl::internal::dicts::classes]
|
||||
if {![dict exists $myDict widgetadaptor]} {
|
||||
return [list]
|
||||
}
|
||||
set myDict [dict get $myDict widgetadaptor]
|
||||
set result [list]
|
||||
if {$pattern ne ""} {
|
||||
foreach key [dict keys $myDict] {
|
||||
set myInfo [dict get $myDict $key]
|
||||
set value [dict get $myInfo -name]
|
||||
if {[string match $pattern $value]} {
|
||||
lappend result $value
|
||||
}
|
||||
}
|
||||
} else {
|
||||
foreach key [dict keys $myDict] {
|
||||
set myInfo [dict get $myDict $key]
|
||||
lappend result [dict get $myInfo -name]
|
||||
}
|
||||
}
|
||||
return $result
|
||||
}
|
||||
|
||||
} ; # end ::itcl::builtin::Info
|
6
msys/mingw/lib/itcl4.1.0/pkgIndex.tcl
Normal file
6
msys/mingw/lib/itcl4.1.0/pkgIndex.tcl
Normal file
|
@ -0,0 +1,6 @@
|
|||
# Tcl package index file, version 1.0
|
||||
|
||||
if {![package vsatisfies [package provide Tcl] 8.6]} {return}
|
||||
|
||||
package ifneeded itcl 4.1.0 [list load [file join $dir "itcl410.dll"] itcl]
|
||||
package ifneeded Itcl 4.1.0 [list load [file join $dir "itcl410.dll"] itcl]
|
18
msys/mingw/lib/p11-kit/p11-kit-extract-trust
Normal file
18
msys/mingw/lib/p11-kit/p11-kit-extract-trust
Normal file
|
@ -0,0 +1,18 @@
|
|||
#!/bin/sh
|
||||
|
||||
#set -vx
|
||||
|
||||
# At this time, while this script is trivial, we ignore any parameters given.
|
||||
# However, for backwards compatibility reasons, future versions of this script must
|
||||
# support the syntax "update-ca-trust extract" trigger the generation of output
|
||||
# files in $DEST.
|
||||
|
||||
DEST=/mingw64/etc/pki/ca-trust/extracted
|
||||
|
||||
# OpenSSL PEM bundle that includes trust flags
|
||||
# (BEGIN TRUSTED CERTIFICATE)
|
||||
/mingw64/bin/p11-kit extract --format=openssl-bundle --filter=certificates --overwrite --comment $DEST/openssl/ca-bundle.trust.crt
|
||||
/mingw64/bin/p11-kit extract --format=pem-bundle --filter=ca-anchors --overwrite --comment --purpose server-auth $DEST/pem/tls-ca-bundle.pem
|
||||
/mingw64/bin/p11-kit extract --format=pem-bundle --filter=ca-anchors --overwrite --comment --purpose email $DEST/pem/email-ca-bundle.pem
|
||||
/mingw64/bin/p11-kit extract --format=pem-bundle --filter=ca-anchors --overwrite --comment --purpose code-signing $DEST/pem/objsign-ca-bundle.pem
|
||||
/mingw64/bin/p11-kit extract --format=java-cacerts --filter=ca-anchors --overwrite --purpose server-auth $DEST/java/cacerts
|
9
msys/mingw/lib/reg1.3/pkgIndex.tcl
Normal file
9
msys/mingw/lib/reg1.3/pkgIndex.tcl
Normal file
|
@ -0,0 +1,9 @@
|
|||
if {([info commands ::tcl::pkgconfig] eq "")
|
||||
|| ([info sharedlibextension] ne ".dll")} return
|
||||
if {[::tcl::pkgconfig get debug]} {
|
||||
package ifneeded registry 1.3.2 \
|
||||
[list load [file join $dir tclreg13g.dll] registry]
|
||||
} else {
|
||||
package ifneeded registry 1.3.2 \
|
||||
[list load [file join $dir tclreg13.dll] registry]
|
||||
}
|
BIN
msys/mingw/lib/reg1.3/tclreg13.dll
Normal file
BIN
msys/mingw/lib/reg1.3/tclreg13.dll
Normal file
Binary file not shown.
7
msys/mingw/lib/sqlite3.20.0/pkgIndex.tcl
Normal file
7
msys/mingw/lib/sqlite3.20.0/pkgIndex.tcl
Normal file
|
@ -0,0 +1,7 @@
|
|||
#
|
||||
# Tcl package index file
|
||||
#
|
||||
# Note sqlite*3* init specifically
|
||||
#
|
||||
package ifneeded sqlite3 3.20.0 \
|
||||
[list load [file join $dir sqlite3200.dll] Sqlite3]
|
BIN
msys/mingw/lib/sqlite3.20.0/sqlite3200.dll
Normal file
BIN
msys/mingw/lib/sqlite3.20.0/sqlite3200.dll
Normal file
Binary file not shown.
646
msys/mingw/lib/tcl8.6/auto.tcl
Normal file
646
msys/mingw/lib/tcl8.6/auto.tcl
Normal file
|
@ -0,0 +1,646 @@
|
|||
# auto.tcl --
|
||||
#
|
||||
# utility procs formerly in init.tcl dealing with auto execution of commands
|
||||
# and can be auto loaded themselves.
|
||||
#
|
||||
# Copyright (c) 1991-1993 The Regents of the University of California.
|
||||
# Copyright (c) 1994-1998 Sun Microsystems, Inc.
|
||||
#
|
||||
# See the file "license.terms" for information on usage and redistribution of
|
||||
# this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||
#
|
||||
|
||||
# auto_reset --
|
||||
#
|
||||
# Destroy all cached information for auto-loading and auto-execution, so that
|
||||
# the information gets recomputed the next time it's needed. Also delete any
|
||||
# commands that are listed in the auto-load index.
|
||||
#
|
||||
# Arguments:
|
||||
# None.
|
||||
|
||||
proc auto_reset {} {
|
||||
global auto_execs auto_index auto_path
|
||||
if {[array exists auto_index]} {
|
||||
foreach cmdName [array names auto_index] {
|
||||
set fqcn [namespace which $cmdName]
|
||||
if {$fqcn eq ""} {
|
||||
continue
|
||||
}
|
||||
rename $fqcn {}
|
||||
}
|
||||
}
|
||||
unset -nocomplain auto_execs auto_index ::tcl::auto_oldpath
|
||||
if {[catch {llength $auto_path}]} {
|
||||
set auto_path [list [info library]]
|
||||
} elseif {[info library] ni $auto_path} {
|
||||
lappend auto_path [info library]
|
||||
}
|
||||
}
|
||||
|
||||
# tcl_findLibrary --
|
||||
#
|
||||
# This is a utility for extensions that searches for a library directory
|
||||
# using a canonical searching algorithm. A side effect is to source the
|
||||
# initialization script and set a global library variable.
|
||||
#
|
||||
# Arguments:
|
||||
# basename Prefix of the directory name, (e.g., "tk")
|
||||
# version Version number of the package, (e.g., "8.0")
|
||||
# patch Patchlevel of the package, (e.g., "8.0.3")
|
||||
# initScript Initialization script to source (e.g., tk.tcl)
|
||||
# enVarName environment variable to honor (e.g., TK_LIBRARY)
|
||||
# varName Global variable to set when done (e.g., tk_library)
|
||||
|
||||
proc tcl_findLibrary {basename version patch initScript enVarName varName} {
|
||||
upvar #0 $varName the_library
|
||||
global auto_path env tcl_platform
|
||||
|
||||
set dirs {}
|
||||
set errors {}
|
||||
|
||||
# The C application may have hardwired a path, which we honor
|
||||
|
||||
if {[info exists the_library] && $the_library ne ""} {
|
||||
lappend dirs $the_library
|
||||
} else {
|
||||
# Do the canonical search
|
||||
|
||||
# 1. From an environment variable, if it exists. Placing this first
|
||||
# gives the end-user ultimate control to work-around any bugs, or
|
||||
# to customize.
|
||||
|
||||
if {[info exists env($enVarName)]} {
|
||||
lappend dirs $env($enVarName)
|
||||
}
|
||||
|
||||
# 2. In the package script directory registered within the
|
||||
# configuration of the package itself.
|
||||
|
||||
catch {
|
||||
lappend dirs [::${basename}::pkgconfig get scriptdir,runtime]
|
||||
}
|
||||
|
||||
# 3. Relative to auto_path directories. This checks relative to the
|
||||
# Tcl library as well as allowing loading of libraries added to the
|
||||
# auto_path that is not relative to the core library or binary paths.
|
||||
foreach d $auto_path {
|
||||
lappend dirs [file join $d $basename$version]
|
||||
if {$tcl_platform(platform) eq "unix"
|
||||
&& $tcl_platform(os) eq "Darwin"} {
|
||||
# 4. On MacOSX, check the Resources/Scripts subdir too
|
||||
lappend dirs [file join $d $basename$version Resources Scripts]
|
||||
}
|
||||
}
|
||||
|
||||
# 3. Various locations relative to the executable
|
||||
# ../lib/foo1.0 (From bin directory in install hierarchy)
|
||||
# ../../lib/foo1.0 (From bin/arch directory in install hierarchy)
|
||||
# ../library (From unix directory in build hierarchy)
|
||||
#
|
||||
# Remaining locations are out of date (when relevant, they ought to be
|
||||
# covered by the $::auto_path seach above) and disabled.
|
||||
#
|
||||
# ../../library (From unix/arch directory in build hierarchy)
|
||||
# ../../foo1.0.1/library
|
||||
# (From unix directory in parallel build hierarchy)
|
||||
# ../../../foo1.0.1/library
|
||||
# (From unix/arch directory in parallel build hierarchy)
|
||||
|
||||
set parentDir [file dirname [file dirname [info nameofexecutable]]]
|
||||
set grandParentDir [file dirname $parentDir]
|
||||
lappend dirs [file join $parentDir lib $basename$version]
|
||||
lappend dirs [file join $grandParentDir lib $basename$version]
|
||||
lappend dirs [file join $parentDir library]
|
||||
if {0} {
|
||||
lappend dirs [file join $grandParentDir library]
|
||||
lappend dirs [file join $grandParentDir $basename$patch library]
|
||||
lappend dirs [file join [file dirname $grandParentDir] \
|
||||
$basename$patch library]
|
||||
}
|
||||
}
|
||||
# uniquify $dirs in order
|
||||
array set seen {}
|
||||
foreach i $dirs {
|
||||
# Make sure $i is unique under normalization. Avoid repeated [source].
|
||||
if {[interp issafe]} {
|
||||
# Safe interps have no [file normalize].
|
||||
set norm $i
|
||||
} else {
|
||||
set norm [file normalize $i]
|
||||
}
|
||||
if {[info exists seen($norm)]} {
|
||||
continue
|
||||
}
|
||||
set seen($norm) {}
|
||||
|
||||
set the_library $i
|
||||
set file [file join $i $initScript]
|
||||
|
||||
# source everything when in a safe interpreter because we have a
|
||||
# source command, but no file exists command
|
||||
|
||||
if {[interp issafe] || [file exists $file]} {
|
||||
if {![catch {uplevel #0 [list source $file]} msg opts]} {
|
||||
return
|
||||
}
|
||||
append errors "$file: $msg\n"
|
||||
append errors [dict get $opts -errorinfo]\n
|
||||
}
|
||||
}
|
||||
unset -nocomplain the_library
|
||||
set msg "Can't find a usable $initScript in the following directories: \n"
|
||||
append msg " $dirs\n\n"
|
||||
append msg "$errors\n\n"
|
||||
append msg "This probably means that $basename wasn't installed properly.\n"
|
||||
error $msg
|
||||
}
|
||||
|
||||
|
||||
# ----------------------------------------------------------------------
|
||||
# auto_mkindex
|
||||
# ----------------------------------------------------------------------
|
||||
# The following procedures are used to generate the tclIndex file from Tcl
|
||||
# source files. They use a special safe interpreter to parse Tcl source
|
||||
# files, writing out index entries as "proc" commands are encountered. This
|
||||
# implementation won't work in a safe interpreter, since a safe interpreter
|
||||
# can't create the special parser and mess with its commands.
|
||||
|
||||
if {[interp issafe]} {
|
||||
return ;# Stop sourcing the file here
|
||||
}
|
||||
|
||||
# auto_mkindex --
|
||||
# Regenerate a tclIndex file from Tcl source files. Takes as argument the
|
||||
# name of the directory in which the tclIndex file is to be placed, followed
|
||||
# by any number of glob patterns to use in that directory to locate all of the
|
||||
# relevant files.
|
||||
#
|
||||
# Arguments:
|
||||
# dir - Name of the directory in which to create an index.
|
||||
|
||||
# args - Any number of additional arguments giving the names of files
|
||||
# within dir. If no additional are given auto_mkindex will look
|
||||
# for *.tcl.
|
||||
|
||||
proc auto_mkindex {dir args} {
|
||||
if {[interp issafe]} {
|
||||
error "can't generate index within safe interpreter"
|
||||
}
|
||||
|
||||
set oldDir [pwd]
|
||||
cd $dir
|
||||
|
||||
append index "# Tcl autoload index file, version 2.0\n"
|
||||
append index "# This file is generated by the \"auto_mkindex\" command\n"
|
||||
append index "# and sourced to set up indexing information for one or\n"
|
||||
append index "# more commands. Typically each line is a command that\n"
|
||||
append index "# sets an element in the auto_index array, where the\n"
|
||||
append index "# element name is the name of a command and the value is\n"
|
||||
append index "# a script that loads the command.\n\n"
|
||||
if {![llength $args]} {
|
||||
set args *.tcl
|
||||
}
|
||||
|
||||
auto_mkindex_parser::init
|
||||
foreach file [lsort [glob -- {*}$args]] {
|
||||
try {
|
||||
append index [auto_mkindex_parser::mkindex $file]
|
||||
} on error {msg opts} {
|
||||
cd $oldDir
|
||||
return -options $opts $msg
|
||||
}
|
||||
}
|
||||
auto_mkindex_parser::cleanup
|
||||
|
||||
set fid [open "tclIndex" w]
|
||||
puts -nonewline $fid $index
|
||||
close $fid
|
||||
cd $oldDir
|
||||
}
|
||||
|
||||
# Original version of auto_mkindex that just searches the source code for
|
||||
# "proc" at the beginning of the line.
|
||||
|
||||
proc auto_mkindex_old {dir args} {
|
||||
set oldDir [pwd]
|
||||
cd $dir
|
||||
set dir [pwd]
|
||||
append index "# Tcl autoload index file, version 2.0\n"
|
||||
append index "# This file is generated by the \"auto_mkindex\" command\n"
|
||||
append index "# and sourced to set up indexing information for one or\n"
|
||||
append index "# more commands. Typically each line is a command that\n"
|
||||
append index "# sets an element in the auto_index array, where the\n"
|
||||
append index "# element name is the name of a command and the value is\n"
|
||||
append index "# a script that loads the command.\n\n"
|
||||
if {![llength $args]} {
|
||||
set args *.tcl
|
||||
}
|
||||
foreach file [lsort [glob -- {*}$args]] {
|
||||
set f ""
|
||||
set error [catch {
|
||||
set f [open $file]
|
||||
while {[gets $f line] >= 0} {
|
||||
if {[regexp {^proc[ ]+([^ ]*)} $line match procName]} {
|
||||
set procName [lindex [auto_qualify $procName "::"] 0]
|
||||
append index "set [list auto_index($procName)]"
|
||||
append index " \[list source \[file join \$dir [list $file]\]\]\n"
|
||||
}
|
||||
}
|
||||
close $f
|
||||
} msg opts]
|
||||
if {$error} {
|
||||
catch {close $f}
|
||||
cd $oldDir
|
||||
return -options $opts $msg
|
||||
}
|
||||
}
|
||||
set f ""
|
||||
set error [catch {
|
||||
set f [open tclIndex w]
|
||||
puts -nonewline $f $index
|
||||
close $f
|
||||
cd $oldDir
|
||||
} msg opts]
|
||||
if {$error} {
|
||||
catch {close $f}
|
||||
cd $oldDir
|
||||
error $msg $info $code
|
||||
return -options $opts $msg
|
||||
}
|
||||
}
|
||||
|
||||
# Create a safe interpreter that can be used to parse Tcl source files
|
||||
# generate a tclIndex file for autoloading. This interp contains commands for
|
||||
# things that need index entries. Each time a command is executed, it writes
|
||||
# an entry out to the index file.
|
||||
|
||||
namespace eval auto_mkindex_parser {
|
||||
variable parser "" ;# parser used to build index
|
||||
variable index "" ;# maintains index as it is built
|
||||
variable scriptFile "" ;# name of file being processed
|
||||
variable contextStack "" ;# stack of namespace scopes
|
||||
variable imports "" ;# keeps track of all imported cmds
|
||||
variable initCommands ;# list of commands that create aliases
|
||||
if {![info exists initCommands]} {
|
||||
set initCommands [list]
|
||||
}
|
||||
|
||||
proc init {} {
|
||||
variable parser
|
||||
variable initCommands
|
||||
|
||||
if {![interp issafe]} {
|
||||
set parser [interp create -safe]
|
||||
$parser hide info
|
||||
$parser hide rename
|
||||
$parser hide proc
|
||||
$parser hide namespace
|
||||
$parser hide eval
|
||||
$parser hide puts
|
||||
foreach ns [$parser invokehidden namespace children ::] {
|
||||
# MUST NOT DELETE "::tcl" OR BAD THINGS HAPPEN!
|
||||
if {$ns eq "::tcl"} continue
|
||||
$parser invokehidden namespace delete $ns
|
||||
}
|
||||
foreach cmd [$parser invokehidden info commands ::*] {
|
||||
$parser invokehidden rename $cmd {}
|
||||
}
|
||||
$parser invokehidden proc unknown {args} {}
|
||||
|
||||
# We'll need access to the "namespace" command within the
|
||||
# interp. Put it back, but move it out of the way.
|
||||
|
||||
$parser expose namespace
|
||||
$parser invokehidden rename namespace _%@namespace
|
||||
$parser expose eval
|
||||
$parser invokehidden rename eval _%@eval
|
||||
|
||||
# Install all the registered psuedo-command implementations
|
||||
|
||||
foreach cmd $initCommands {
|
||||
eval $cmd
|
||||
}
|
||||
}
|
||||
}
|
||||
proc cleanup {} {
|
||||
variable parser
|
||||
interp delete $parser
|
||||
unset parser
|
||||
}
|
||||
}
|
||||
|
||||
# auto_mkindex_parser::mkindex --
|
||||
#
|
||||
# Used by the "auto_mkindex" command to create a "tclIndex" file for the given
|
||||
# Tcl source file. Executes the commands in the file, and handles things like
|
||||
# the "proc" command by adding an entry for the index file. Returns a string
|
||||
# that represents the index file.
|
||||
#
|
||||
# Arguments:
|
||||
# file Name of Tcl source file to be indexed.
|
||||
|
||||
proc auto_mkindex_parser::mkindex {file} {
|
||||
variable parser
|
||||
variable index
|
||||
variable scriptFile
|
||||
variable contextStack
|
||||
variable imports
|
||||
|
||||
set scriptFile $file
|
||||
|
||||
set fid [open $file]
|
||||
set contents [read $fid]
|
||||
close $fid
|
||||
|
||||
# There is one problem with sourcing files into the safe interpreter:
|
||||
# references like "$x" will fail since code is not really being executed
|
||||
# and variables do not really exist. To avoid this, we replace all $ with
|
||||
# \0 (literally, the null char) later, when getting proc names we will
|
||||
# have to reverse this replacement, in case there were any $ in the proc
|
||||
# name. This will cause a problem if somebody actually tries to have a \0
|
||||
# in their proc name. Too bad for them.
|
||||
set contents [string map [list \$ \0] $contents]
|
||||
|
||||
set index ""
|
||||
set contextStack ""
|
||||
set imports ""
|
||||
|
||||
$parser eval $contents
|
||||
|
||||
foreach name $imports {
|
||||
catch {$parser eval [list _%@namespace forget $name]}
|
||||
}
|
||||
return $index
|
||||
}
|
||||
|
||||
# auto_mkindex_parser::hook command
|
||||
#
|
||||
# Registers a Tcl command to evaluate when initializing the slave interpreter
|
||||
# used by the mkindex parser. The command is evaluated in the master
|
||||
# interpreter, and can use the variable auto_mkindex_parser::parser to get to
|
||||
# the slave
|
||||
|
||||
proc auto_mkindex_parser::hook {cmd} {
|
||||
variable initCommands
|
||||
|
||||
lappend initCommands $cmd
|
||||
}
|
||||
|
||||
# auto_mkindex_parser::slavehook command
|
||||
#
|
||||
# Registers a Tcl command to evaluate when initializing the slave interpreter
|
||||
# used by the mkindex parser. The command is evaluated in the slave
|
||||
# interpreter.
|
||||
|
||||
proc auto_mkindex_parser::slavehook {cmd} {
|
||||
variable initCommands
|
||||
|
||||
# The $parser variable is defined to be the name of the slave interpreter
|
||||
# when this command is used later.
|
||||
|
||||
lappend initCommands "\$parser eval [list $cmd]"
|
||||
}
|
||||
|
||||
# auto_mkindex_parser::command --
|
||||
#
|
||||
# Registers a new command with the "auto_mkindex_parser" interpreter that
|
||||
# parses Tcl files. These commands are fake versions of things like the
|
||||
# "proc" command. When you execute them, they simply write out an entry to a
|
||||
# "tclIndex" file for auto-loading.
|
||||
#
|
||||
# This procedure allows extensions to register their own commands with the
|
||||
# auto_mkindex facility. For example, a package like [incr Tcl] might
|
||||
# register a "class" command so that class definitions could be added to a
|
||||
# "tclIndex" file for auto-loading.
|
||||
#
|
||||
# Arguments:
|
||||
# name Name of command recognized in Tcl files.
|
||||
# arglist Argument list for command.
|
||||
# body Implementation of command to handle indexing.
|
||||
|
||||
proc auto_mkindex_parser::command {name arglist body} {
|
||||
hook [list auto_mkindex_parser::commandInit $name $arglist $body]
|
||||
}
|
||||
|
||||
# auto_mkindex_parser::commandInit --
|
||||
#
|
||||
# This does the actual work set up by auto_mkindex_parser::command. This is
|
||||
# called when the interpreter used by the parser is created.
|
||||
#
|
||||
# Arguments:
|
||||
# name Name of command recognized in Tcl files.
|
||||
# arglist Argument list for command.
|
||||
# body Implementation of command to handle indexing.
|
||||
|
||||
proc auto_mkindex_parser::commandInit {name arglist body} {
|
||||
variable parser
|
||||
|
||||
set ns [namespace qualifiers $name]
|
||||
set tail [namespace tail $name]
|
||||
if {$ns eq ""} {
|
||||
set fakeName [namespace current]::_%@fake_$tail
|
||||
} else {
|
||||
set fakeName [namespace current]::[string map {:: _} _%@fake_$name]
|
||||
}
|
||||
proc $fakeName $arglist $body
|
||||
|
||||
# YUK! Tcl won't let us alias fully qualified command names, so we can't
|
||||
# handle names like "::itcl::class". Instead, we have to build procs with
|
||||
# the fully qualified names, and have the procs point to the aliases.
|
||||
|
||||
if {[string match *::* $name]} {
|
||||
set exportCmd [list _%@namespace export [namespace tail $name]]
|
||||
$parser eval [list _%@namespace eval $ns $exportCmd]
|
||||
|
||||
# The following proc definition does not work if you want to tolerate
|
||||
# space or something else diabolical in the procedure name, (i.e.,
|
||||
# space in $alias). The following does not work:
|
||||
# "_%@eval {$alias} \$args"
|
||||
# because $alias gets concat'ed to $args. The following does not work
|
||||
# because $cmd is somehow undefined
|
||||
# "set cmd {$alias} \; _%@eval {\$cmd} \$args"
|
||||
# A gold star to someone that can make test autoMkindex-3.3 work
|
||||
# properly
|
||||
|
||||
set alias [namespace tail $fakeName]
|
||||
$parser invokehidden proc $name {args} "_%@eval {$alias} \$args"
|
||||
$parser alias $alias $fakeName
|
||||
} else {
|
||||
$parser alias $name $fakeName
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
# auto_mkindex_parser::fullname --
|
||||
#
|
||||
# Used by commands like "proc" within the auto_mkindex parser. Returns the
|
||||
# qualified namespace name for the "name" argument. If the "name" does not
|
||||
# start with "::", elements are added from the current namespace stack to
|
||||
# produce a qualified name. Then, the name is examined to see whether or not
|
||||
# it should really be qualified. If the name has more than the leading "::",
|
||||
# it is returned as a fully qualified name. Otherwise, it is returned as a
|
||||
# simple name. That way, the Tcl autoloader will recognize it properly.
|
||||
#
|
||||
# Arguments:
|
||||
# name - Name that is being added to index.
|
||||
|
||||
proc auto_mkindex_parser::fullname {name} {
|
||||
variable contextStack
|
||||
|
||||
if {![string match ::* $name]} {
|
||||
foreach ns $contextStack {
|
||||
set name "${ns}::$name"
|
||||
if {[string match ::* $name]} {
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if {[namespace qualifiers $name] eq ""} {
|
||||
set name [namespace tail $name]
|
||||
} elseif {![string match ::* $name]} {
|
||||
set name "::$name"
|
||||
}
|
||||
|
||||
# Earlier, mkindex replaced all $'s with \0. Now, we have to reverse that
|
||||
# replacement.
|
||||
return [string map [list \0 \$] $name]
|
||||
}
|
||||
|
||||
# auto_mkindex_parser::indexEntry --
|
||||
#
|
||||
# Used by commands like "proc" within the auto_mkindex parser to add a
|
||||
# correctly-quoted entry to the index. This is shared code so it is done
|
||||
# *right*, in one place.
|
||||
#
|
||||
# Arguments:
|
||||
# name - Name that is being added to index.
|
||||
|
||||
proc auto_mkindex_parser::indexEntry {name} {
|
||||
variable index
|
||||
variable scriptFile
|
||||
|
||||
# We convert all metacharacters to their backslashed form, and pre-split
|
||||
# the file name that we know about (which will be a proper list, and so
|
||||
# correctly quoted).
|
||||
|
||||
set name [string range [list \}[fullname $name]] 2 end]
|
||||
set filenameParts [file split $scriptFile]
|
||||
|
||||
append index [format \
|
||||
{set auto_index(%s) [list source [file join $dir %s]]%s} \
|
||||
$name $filenameParts \n]
|
||||
return
|
||||
}
|
||||
|
||||
if {[llength $::auto_mkindex_parser::initCommands]} {
|
||||
return
|
||||
}
|
||||
|
||||
# Register all of the procedures for the auto_mkindex parser that will build
|
||||
# the "tclIndex" file.
|
||||
|
||||
# AUTO MKINDEX: proc name arglist body
|
||||
# Adds an entry to the auto index list for the given procedure name.
|
||||
|
||||
auto_mkindex_parser::command proc {name args} {
|
||||
indexEntry $name
|
||||
}
|
||||
|
||||
# Conditionally add support for Tcl byte code files. There are some tricky
|
||||
# details here. First, we need to get the tbcload library initialized in the
|
||||
# current interpreter. We cannot load tbcload into the slave until we have
|
||||
# done so because it needs access to the tcl_patchLevel variable. Second,
|
||||
# because the package index file may defer loading the library until we invoke
|
||||
# a command, we need to explicitly invoke auto_load to force it to be loaded.
|
||||
# This should be a noop if the package has already been loaded
|
||||
|
||||
auto_mkindex_parser::hook {
|
||||
try {
|
||||
package require tbcload
|
||||
} on error {} {
|
||||
# OK, don't have it so do nothing
|
||||
} on ok {} {
|
||||
if {[namespace which -command tbcload::bcproc] eq ""} {
|
||||
auto_load tbcload::bcproc
|
||||
}
|
||||
load {} tbcload $auto_mkindex_parser::parser
|
||||
|
||||
# AUTO MKINDEX: tbcload::bcproc name arglist body
|
||||
# Adds an entry to the auto index list for the given pre-compiled
|
||||
# procedure name.
|
||||
|
||||
auto_mkindex_parser::commandInit tbcload::bcproc {name args} {
|
||||
indexEntry $name
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# AUTO MKINDEX: namespace eval name command ?arg arg...?
|
||||
# Adds the namespace name onto the context stack and evaluates the associated
|
||||
# body of commands.
|
||||
#
|
||||
# AUTO MKINDEX: namespace import ?-force? pattern ?pattern...?
|
||||
# Performs the "import" action in the parser interpreter. This is important
|
||||
# for any commands contained in a namespace that affect the index. For
|
||||
# example, a script may say "itcl::class ...", or it may import "itcl::*" and
|
||||
# then say "class ...". This procedure does the import operation, but keeps
|
||||
# track of imported patterns so we can remove the imports later.
|
||||
|
||||
auto_mkindex_parser::command namespace {op args} {
|
||||
switch -- $op {
|
||||
eval {
|
||||
variable parser
|
||||
variable contextStack
|
||||
|
||||
set name [lindex $args 0]
|
||||
set args [lrange $args 1 end]
|
||||
|
||||
set contextStack [linsert $contextStack 0 $name]
|
||||
$parser eval [list _%@namespace eval $name] $args
|
||||
set contextStack [lrange $contextStack 1 end]
|
||||
}
|
||||
import {
|
||||
variable parser
|
||||
variable imports
|
||||
foreach pattern $args {
|
||||
if {$pattern ne "-force"} {
|
||||
lappend imports $pattern
|
||||
}
|
||||
}
|
||||
catch {$parser eval "_%@namespace import $args"}
|
||||
}
|
||||
ensemble {
|
||||
variable parser
|
||||
variable contextStack
|
||||
if {[lindex $args 0] eq "create"} {
|
||||
set name ::[join [lreverse $contextStack] ::]
|
||||
catch {
|
||||
set name [dict get [lrange $args 1 end] -command]
|
||||
if {![string match ::* $name]} {
|
||||
set name ::[join [lreverse $contextStack] ::]$name
|
||||
}
|
||||
regsub -all ::+ $name :: name
|
||||
}
|
||||
# create artifical proc to force an entry in the tclIndex
|
||||
$parser eval [list ::proc $name {} {}]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# AUTO MKINDEX: oo::class create name ?definition?
|
||||
# Adds an entry to the auto index list for the given class name.
|
||||
auto_mkindex_parser::command oo::class {op name {body ""}} {
|
||||
if {$op eq "create"} {
|
||||
indexEntry $name
|
||||
}
|
||||
}
|
||||
auto_mkindex_parser::command class {op name {body ""}} {
|
||||
if {$op eq "create"} {
|
||||
indexEntry $name
|
||||
}
|
||||
}
|
||||
|
||||
return
|
4547
msys/mingw/lib/tcl8.6/clock.tcl
Normal file
4547
msys/mingw/lib/tcl8.6/clock.tcl
Normal file
File diff suppressed because it is too large
Load diff
20
msys/mingw/lib/tcl8.6/encoding/ascii.enc
Normal file
20
msys/mingw/lib/tcl8.6/encoding/ascii.enc
Normal file
|
@ -0,0 +1,20 @@
|
|||
# Encoding file: ascii, single-byte
|
||||
S
|
||||
003F 0 1
|
||||
00
|
||||
0000000100020003000400050006000700080009000A000B000C000D000E000F
|
||||
0010001100120013001400150016001700180019001A001B001C001D001E001F
|
||||
0020002100220023002400250026002700280029002A002B002C002D002E002F
|
||||
0030003100320033003400350036003700380039003A003B003C003D003E003F
|
||||
0040004100420043004400450046004700480049004A004B004C004D004E004F
|
||||
0050005100520053005400550056005700580059005A005B005C005D005E005F
|
||||
0060006100620063006400650066006700680069006A006B006C006D006E006F
|
||||
0070007100720073007400750076007700780079007A007B007C007D007E0000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
1516
msys/mingw/lib/tcl8.6/encoding/big5.enc
Normal file
1516
msys/mingw/lib/tcl8.6/encoding/big5.enc
Normal file
File diff suppressed because it is too large
Load diff
20
msys/mingw/lib/tcl8.6/encoding/cp1250.enc
Normal file
20
msys/mingw/lib/tcl8.6/encoding/cp1250.enc
Normal file
|
@ -0,0 +1,20 @@
|
|||
# Encoding file: cp1250, single-byte
|
||||
S
|
||||
003F 0 1
|
||||
00
|
||||
0000000100020003000400050006000700080009000A000B000C000D000E000F
|
||||
0010001100120013001400150016001700180019001A001B001C001D001E001F
|
||||
0020002100220023002400250026002700280029002A002B002C002D002E002F
|
||||
0030003100320033003400350036003700380039003A003B003C003D003E003F
|
||||
0040004100420043004400450046004700480049004A004B004C004D004E004F
|
||||
0050005100520053005400550056005700580059005A005B005C005D005E005F
|
||||
0060006100620063006400650066006700680069006A006B006C006D006E006F
|
||||
0070007100720073007400750076007700780079007A007B007C007D007E007F
|
||||
20AC0081201A0083201E2026202020210088203001602039015A0164017D0179
|
||||
009020182019201C201D202220132014009821220161203A015B0165017E017A
|
||||
00A002C702D8014100A4010400A600A700A800A9015E00AB00AC00AD00AE017B
|
||||
00B000B102DB014200B400B500B600B700B80105015F00BB013D02DD013E017C
|
||||
015400C100C2010200C40139010600C7010C00C9011800CB011A00CD00CE010E
|
||||
01100143014700D300D4015000D600D70158016E00DA017000DC00DD016200DF
|
||||
015500E100E2010300E4013A010700E7010D00E9011900EB011B00ED00EE010F
|
||||
01110144014800F300F4015100F600F70159016F00FA017100FC00FD016302D9
|
20
msys/mingw/lib/tcl8.6/encoding/cp1251.enc
Normal file
20
msys/mingw/lib/tcl8.6/encoding/cp1251.enc
Normal file
|
@ -0,0 +1,20 @@
|
|||
# Encoding file: cp1251, single-byte
|
||||
S
|
||||
003F 0 1
|
||||
00
|
||||
0000000100020003000400050006000700080009000A000B000C000D000E000F
|
||||
0010001100120013001400150016001700180019001A001B001C001D001E001F
|
||||
0020002100220023002400250026002700280029002A002B002C002D002E002F
|
||||
0030003100320033003400350036003700380039003A003B003C003D003E003F
|
||||
0040004100420043004400450046004700480049004A004B004C004D004E004F
|
||||
0050005100520053005400550056005700580059005A005B005C005D005E005F
|
||||
0060006100620063006400650066006700680069006A006B006C006D006E006F
|
||||
0070007100720073007400750076007700780079007A007B007C007D007E007F
|
||||
04020403201A0453201E20262020202120AC203004092039040A040C040B040F
|
||||
045220182019201C201D202220132014009821220459203A045A045C045B045F
|
||||
00A0040E045E040800A4049000A600A7040100A9040400AB00AC00AD00AE0407
|
||||
00B000B104060456049100B500B600B704512116045400BB0458040504550457
|
||||
0410041104120413041404150416041704180419041A041B041C041D041E041F
|
||||
0420042104220423042404250426042704280429042A042B042C042D042E042F
|
||||
0430043104320433043404350436043704380439043A043B043C043D043E043F
|
||||
0440044104420443044404450446044704480449044A044B044C044D044E044F
|
20
msys/mingw/lib/tcl8.6/encoding/cp1252.enc
Normal file
20
msys/mingw/lib/tcl8.6/encoding/cp1252.enc
Normal file
|
@ -0,0 +1,20 @@
|
|||
# Encoding file: cp1252, single-byte
|
||||
S
|
||||
003F 0 1
|
||||
00
|
||||
0000000100020003000400050006000700080009000A000B000C000D000E000F
|
||||
0010001100120013001400150016001700180019001A001B001C001D001E001F
|
||||
0020002100220023002400250026002700280029002A002B002C002D002E002F
|
||||
0030003100320033003400350036003700380039003A003B003C003D003E003F
|
||||
0040004100420043004400450046004700480049004A004B004C004D004E004F
|
||||
0050005100520053005400550056005700580059005A005B005C005D005E005F
|
||||
0060006100620063006400650066006700680069006A006B006C006D006E006F
|
||||
0070007100720073007400750076007700780079007A007B007C007D007E007F
|
||||
20AC0081201A0192201E20262020202102C62030016020390152008D017D008F
|
||||
009020182019201C201D20222013201402DC21220161203A0153009D017E0178
|
||||
00A000A100A200A300A400A500A600A700A800A900AA00AB00AC00AD00AE00AF
|
||||
00B000B100B200B300B400B500B600B700B800B900BA00BB00BC00BD00BE00BF
|
||||
00C000C100C200C300C400C500C600C700C800C900CA00CB00CC00CD00CE00CF
|
||||
00D000D100D200D300D400D500D600D700D800D900DA00DB00DC00DD00DE00DF
|
||||
00E000E100E200E300E400E500E600E700E800E900EA00EB00EC00ED00EE00EF
|
||||
00F000F100F200F300F400F500F600F700F800F900FA00FB00FC00FD00FE00FF
|
20
msys/mingw/lib/tcl8.6/encoding/cp1253.enc
Normal file
20
msys/mingw/lib/tcl8.6/encoding/cp1253.enc
Normal file
|
@ -0,0 +1,20 @@
|
|||
# Encoding file: cp1253, single-byte
|
||||
S
|
||||
003F 0 1
|
||||
00
|
||||
0000000100020003000400050006000700080009000A000B000C000D000E000F
|
||||
0010001100120013001400150016001700180019001A001B001C001D001E001F
|
||||
0020002100220023002400250026002700280029002A002B002C002D002E002F
|
||||
0030003100320033003400350036003700380039003A003B003C003D003E003F
|
||||
0040004100420043004400450046004700480049004A004B004C004D004E004F
|
||||
0050005100520053005400550056005700580059005A005B005C005D005E005F
|
||||
0060006100620063006400650066006700680069006A006B006C006D006E006F
|
||||
0070007100720073007400750076007700780079007A007B007C007D007E007F
|
||||
20AC0081201A0192201E20262020202100882030008A2039008C008D008E008F
|
||||
009020182019201C201D20222013201400982122009A203A009C009D009E009F
|
||||
00A00385038600A300A400A500A600A700A800A9000000AB00AC00AD00AE2015
|
||||
00B000B100B200B3038400B500B600B703880389038A00BB038C00BD038E038F
|
||||
0390039103920393039403950396039703980399039A039B039C039D039E039F
|
||||
03A003A1000003A303A403A503A603A703A803A903AA03AB03AC03AD03AE03AF
|
||||
03B003B103B203B303B403B503B603B703B803B903BA03BB03BC03BD03BE03BF
|
||||
03C003C103C203C303C403C503C603C703C803C903CA03CB03CC03CD03CE0000
|
20
msys/mingw/lib/tcl8.6/encoding/cp1254.enc
Normal file
20
msys/mingw/lib/tcl8.6/encoding/cp1254.enc
Normal file
|
@ -0,0 +1,20 @@
|
|||
# Encoding file: cp1254, single-byte
|
||||
S
|
||||
003F 0 1
|
||||
00
|
||||
0000000100020003000400050006000700080009000A000B000C000D000E000F
|
||||
0010001100120013001400150016001700180019001A001B001C001D001E001F
|
||||
0020002100220023002400250026002700280029002A002B002C002D002E002F
|
||||
0030003100320033003400350036003700380039003A003B003C003D003E003F
|
||||
0040004100420043004400450046004700480049004A004B004C004D004E004F
|
||||
0050005100520053005400550056005700580059005A005B005C005D005E005F
|
||||
0060006100620063006400650066006700680069006A006B006C006D006E006F
|
||||
0070007100720073007400750076007700780079007A007B007C007D007E007F
|
||||
20AC0081201A0192201E20262020202102C62030016020390152008D008E008F
|
||||
009020182019201C201D20222013201402DC21220161203A0153009D009E0178
|
||||
00A000A100A200A300A400A500A600A700A800A900AA00AB00AC00AD00AE00AF
|
||||
00B000B100B200B300B400B500B600B700B800B900BA00BB00BC00BD00BE00BF
|
||||
00C000C100C200C300C400C500C600C700C800C900CA00CB00CC00CD00CE00CF
|
||||
011E00D100D200D300D400D500D600D700D800D900DA00DB00DC0130015E00DF
|
||||
00E000E100E200E300E400E500E600E700E800E900EA00EB00EC00ED00EE00EF
|
||||
011F00F100F200F300F400F500F600F700F800F900FA00FB00FC0131015F00FF
|
20
msys/mingw/lib/tcl8.6/encoding/cp1255.enc
Normal file
20
msys/mingw/lib/tcl8.6/encoding/cp1255.enc
Normal file
|
@ -0,0 +1,20 @@
|
|||
# Encoding file: cp1255, single-byte
|
||||
S
|
||||
003F 0 1
|
||||
00
|
||||
0000000100020003000400050006000700080009000A000B000C000D000E000F
|
||||
0010001100120013001400150016001700180019001A001B001C001D001E001F
|
||||
0020002100220023002400250026002700280029002A002B002C002D002E002F
|
||||
0030003100320033003400350036003700380039003A003B003C003D003E003F
|
||||
0040004100420043004400450046004700480049004A004B004C004D004E004F
|
||||
0050005100520053005400550056005700580059005A005B005C005D005E005F
|
||||
0060006100620063006400650066006700680069006A006B006C006D006E006F
|
||||
0070007100720073007400750076007700780079007A007B007C007D007E007F
|
||||
20AC0081201A0192201E20262020202102C62030008A2039008C008D008E008F
|
||||
009020182019201C201D20222013201402DC2122009A203A009C009D009E009F
|
||||
00A000A100A200A320AA00A500A600A700A800A900D700AB00AC00AD00AE00AF
|
||||
00B000B100B200B300B400B500B600B700B800B900F700BB00BC00BD00BE00BF
|
||||
05B005B105B205B305B405B505B605B705B805B9000005BB05BC05BD05BE05BF
|
||||
05C005C105C205C305F005F105F205F305F40000000000000000000000000000
|
||||
05D005D105D205D305D405D505D605D705D805D905DA05DB05DC05DD05DE05DF
|
||||
05E005E105E205E305E405E505E605E705E805E905EA00000000200E200F0000
|
20
msys/mingw/lib/tcl8.6/encoding/cp1256.enc
Normal file
20
msys/mingw/lib/tcl8.6/encoding/cp1256.enc
Normal file
|
@ -0,0 +1,20 @@
|
|||
# Encoding file: cp1256, single-byte
|
||||
S
|
||||
003F 0 1
|
||||
00
|
||||
0000000100020003000400050006000700080009000A000B000C000D000E000F
|
||||
0010001100120013001400150016001700180019001A001B001C001D001E001F
|
||||
0020002100220023002400250026002700280029002A002B002C002D002E002F
|
||||
0030003100320033003400350036003700380039003A003B003C003D003E003F
|
||||
0040004100420043004400450046004700480049004A004B004C004D004E004F
|
||||
0050005100520053005400550056005700580059005A005B005C005D005E005F
|
||||
0060006100620063006400650066006700680069006A006B006C006D006E006F
|
||||
0070007100720073007400750076007700780079007A007B007C007D007E007F
|
||||
20AC067E201A0192201E20262020202102C62030067920390152068606980688
|
||||
06AF20182019201C201D20222013201406A921220691203A0153200C200D06BA
|
||||
00A0060C00A200A300A400A500A600A700A800A906BE00AB00AC00AD00AE00AF
|
||||
00B000B100B200B300B400B500B600B700B800B9061B00BB00BC00BD00BE061F
|
||||
06C1062106220623062406250626062706280629062A062B062C062D062E062F
|
||||
063006310632063306340635063600D7063706380639063A0640064106420643
|
||||
00E0064400E2064506460647064800E700E800E900EA00EB0649064A00EE00EF
|
||||
064B064C064D064E00F4064F065000F7065100F9065200FB00FC200E200F06D2
|
20
msys/mingw/lib/tcl8.6/encoding/cp1257.enc
Normal file
20
msys/mingw/lib/tcl8.6/encoding/cp1257.enc
Normal file
|
@ -0,0 +1,20 @@
|
|||
# Encoding file: cp1257, single-byte
|
||||
S
|
||||
003F 0 1
|
||||
00
|
||||
0000000100020003000400050006000700080009000A000B000C000D000E000F
|
||||
0010001100120013001400150016001700180019001A001B001C001D001E001F
|
||||
0020002100220023002400250026002700280029002A002B002C002D002E002F
|
||||
0030003100320033003400350036003700380039003A003B003C003D003E003F
|
||||
0040004100420043004400450046004700480049004A004B004C004D004E004F
|
||||
0050005100520053005400550056005700580059005A005B005C005D005E005F
|
||||
0060006100620063006400650066006700680069006A006B006C006D006E006F
|
||||
0070007100720073007400750076007700780079007A007B007C007D007E007F
|
||||
20AC0081201A0083201E20262020202100882030008A2039008C00A802C700B8
|
||||
009020182019201C201D20222013201400982122009A203A009C00AF02DB009F
|
||||
00A0000000A200A300A4000000A600A700D800A9015600AB00AC00AD00AE00C6
|
||||
00B000B100B200B300B400B500B600B700F800B9015700BB00BC00BD00BE00E6
|
||||
0104012E0100010600C400C501180112010C00C90179011601220136012A013B
|
||||
01600143014500D3014C00D500D600D701720141015A016A00DC017B017D00DF
|
||||
0105012F0101010700E400E501190113010D00E9017A011701230137012B013C
|
||||
01610144014600F3014D00F500F600F701730142015B016B00FC017C017E02D9
|
20
msys/mingw/lib/tcl8.6/encoding/cp1258.enc
Normal file
20
msys/mingw/lib/tcl8.6/encoding/cp1258.enc
Normal file
|
@ -0,0 +1,20 @@
|
|||
# Encoding file: cp1258, single-byte
|
||||
S
|
||||
003F 0 1
|
||||
00
|
||||
0000000100020003000400050006000700080009000A000B000C000D000E000F
|
||||
0010001100120013001400150016001700180019001A001B001C001D001E001F
|
||||
0020002100220023002400250026002700280029002A002B002C002D002E002F
|
||||
0030003100320033003400350036003700380039003A003B003C003D003E003F
|
||||
0040004100420043004400450046004700480049004A004B004C004D004E004F
|
||||
0050005100520053005400550056005700580059005A005B005C005D005E005F
|
||||
0060006100620063006400650066006700680069006A006B006C006D006E006F
|
||||
0070007100720073007400750076007700780079007A007B007C007D007E007F
|
||||
20AC0081201A0192201E20262020202102C62030008A20390152008D008E008F
|
||||
009020182019201C201D20222013201402DC2122009A203A0153009D009E0178
|
||||
00A000A100A200A300A400A500A600A700A800A900AA00AB00AC00AD00AE00AF
|
||||
00B000B100B200B300B400B500B600B700B800B900BA00BB00BC00BD00BE00BF
|
||||
00C000C100C2010200C400C500C600C700C800C900CA00CB030000CD00CE00CF
|
||||
011000D1030900D300D401A000D600D700D800D900DA00DB00DC01AF030300DF
|
||||
00E000E100E2010300E400E500E600E700E800E900EA00EB030100ED00EE00EF
|
||||
011100F1032300F300F401A100F600F700F800F900FA00FB00FC01B020AB00FF
|
20
msys/mingw/lib/tcl8.6/encoding/cp437.enc
Normal file
20
msys/mingw/lib/tcl8.6/encoding/cp437.enc
Normal file
|
@ -0,0 +1,20 @@
|
|||
# Encoding file: cp437, single-byte
|
||||
S
|
||||
003F 0 1
|
||||
00
|
||||
0000000100020003000400050006000700080009000A000B000C000D000E000F
|
||||
0010001100120013001400150016001700180019001A001B001C001D001E001F
|
||||
0020002100220023002400250026002700280029002A002B002C002D002E002F
|
||||
0030003100320033003400350036003700380039003A003B003C003D003E003F
|
||||
0040004100420043004400450046004700480049004A004B004C004D004E004F
|
||||
0050005100520053005400550056005700580059005A005B005C005D005E005F
|
||||
0060006100620063006400650066006700680069006A006B006C006D006E006F
|
||||
0070007100720073007400750076007700780079007A007B007C007D007E007F
|
||||
00C700FC00E900E200E400E000E500E700EA00EB00E800EF00EE00EC00C400C5
|
||||
00C900E600C600F400F600F200FB00F900FF00D600DC00A200A300A520A70192
|
||||
00E100ED00F300FA00F100D100AA00BA00BF231000AC00BD00BC00A100AB00BB
|
||||
259125922593250225242561256225562555256325512557255D255C255B2510
|
||||
25142534252C251C2500253C255E255F255A25542569256625602550256C2567
|
||||
2568256425652559255825522553256B256A2518250C25882584258C25902580
|
||||
03B100DF039303C003A303C300B503C403A6039803A903B4221E03C603B52229
|
||||
226100B1226522642320232100F7224800B0221900B7221A207F00B225A000A0
|
20
msys/mingw/lib/tcl8.6/encoding/cp737.enc
Normal file
20
msys/mingw/lib/tcl8.6/encoding/cp737.enc
Normal file
|
@ -0,0 +1,20 @@
|
|||
# Encoding file: cp737, single-byte
|
||||
S
|
||||
003F 0 1
|
||||
00
|
||||
0000000100020003000400050006000700080009000A000B000C000D000E000F
|
||||
0010001100120013001400150016001700180019001A001B001C001D001E001F
|
||||
0020002100220023002400250026002700280029002A002B002C002D002E002F
|
||||
0030003100320033003400350036003700380039003A003B003C003D003E003F
|
||||
0040004100420043004400450046004700480049004A004B004C004D004E004F
|
||||
0050005100520053005400550056005700580059005A005B005C005D005E005F
|
||||
0060006100620063006400650066006700680069006A006B006C006D006E006F
|
||||
0070007100720073007400750076007700780079007A007B007C007D007E007F
|
||||
039103920393039403950396039703980399039A039B039C039D039E039F03A0
|
||||
03A103A303A403A503A603A703A803A903B103B203B303B403B503B603B703B8
|
||||
03B903BA03BB03BC03BD03BE03BF03C003C103C303C203C403C503C603C703C8
|
||||
259125922593250225242561256225562555256325512557255D255C255B2510
|
||||
25142534252C251C2500253C255E255F255A25542569256625602550256C2567
|
||||
2568256425652559255825522553256B256A2518250C25882584258C25902580
|
||||
03C903AC03AD03AE03CA03AF03CC03CD03CB03CE038603880389038A038C038E
|
||||
038F00B12265226403AA03AB00F7224800B0221900B7221A207F00B225A000A0
|
20
msys/mingw/lib/tcl8.6/encoding/cp775.enc
Normal file
20
msys/mingw/lib/tcl8.6/encoding/cp775.enc
Normal file
|
@ -0,0 +1,20 @@
|
|||
# Encoding file: cp775, single-byte
|
||||
S
|
||||
003F 0 1
|
||||
00
|
||||
0000000100020003000400050006000700080009000A000B000C000D000E000F
|
||||
0010001100120013001400150016001700180019001A001B001C001D001E001F
|
||||
0020002100220023002400250026002700280029002A002B002C002D002E002F
|
||||
0030003100320033003400350036003700380039003A003B003C003D003E003F
|
||||
0040004100420043004400450046004700480049004A004B004C004D004E004F
|
||||
0050005100520053005400550056005700580059005A005B005C005D005E005F
|
||||
0060006100620063006400650066006700680069006A006B006C006D006E006F
|
||||
0070007100720073007400750076007700780079007A007B007C007D007E007F
|
||||
010600FC00E9010100E4012300E501070142011301560157012B017900C400C5
|
||||
00C900E600C6014D00F6012200A2015A015B00D600DC00F800A300D800D700A4
|
||||
0100012A00F3017B017C017A201D00A600A900AE00AC00BD00BC014100AB00BB
|
||||
259125922593250225240104010C01180116256325512557255D012E01602510
|
||||
25142534252C251C2500253C0172016A255A25542569256625602550256C017D
|
||||
0105010D01190117012F01610173016B017E2518250C25882584258C25902580
|
||||
00D300DF014C014300F500D500B5014401360137013B013C0146011201452019
|
||||
00AD00B1201C00BE00B600A700F7201E00B0221900B700B900B300B225A000A0
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue