summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNorbert Preining <preining@logic.at>2008-01-17 07:07:25 +0000
committerNorbert Preining <preining@logic.at>2008-01-17 07:07:25 +0000
commitaa80b5c425682a0606de9a0417852bd38bb74f53 (patch)
tree9783dfd21a688e5ebdd0b4535c5a7c08e5e3db53
parentf99738616471d51d6549a1b1e0caf19f807f9ed5 (diff)
add new binaries for i386-linux (but do NOT update the other bins)
git-svn-id: svn://tug.org/texlive/trunk@6272 c570f23f-e606-0410-a88d-b1316a301751
l---------Master/bin/i386-linux/lzcat1
l---------Master/bin/i386-linux/lzcmp1
-rwxr-xr-xMaster/bin/i386-linux/lzdiff67
l---------Master/bin/i386-linux/lzegrep1
l---------Master/bin/i386-linux/lzfgrep1
-rwxr-xr-xMaster/bin/i386-linux/lzgrep123
l---------Master/bin/i386-linux/lzless1
-rwxr-xr-xMaster/bin/i386-linux/lzmabin0 -> 89952 bytes
-rwxr-xr-xMaster/bin/i386-linux/lzmadecbin0 -> 10288 bytes
-rwxr-xr-xMaster/bin/i386-linux/lzmainfobin0 -> 11160 bytes
-rwxr-xr-xMaster/bin/i386-linux/lzmore74
-rwxr-xr-xMaster/bin/i386-linux/texcount706
l---------Master/bin/i386-linux/unlzma1
13 files changed, 976 insertions, 0 deletions
diff --git a/Master/bin/i386-linux/lzcat b/Master/bin/i386-linux/lzcat
new file mode 120000
index 00000000000..2bcdf7016f0
--- /dev/null
+++ b/Master/bin/i386-linux/lzcat
@@ -0,0 +1 @@
+lzma \ No newline at end of file
diff --git a/Master/bin/i386-linux/lzcmp b/Master/bin/i386-linux/lzcmp
new file mode 120000
index 00000000000..bb308e1d49f
--- /dev/null
+++ b/Master/bin/i386-linux/lzcmp
@@ -0,0 +1 @@
+lzdiff \ No newline at end of file
diff --git a/Master/bin/i386-linux/lzdiff b/Master/bin/i386-linux/lzdiff
new file mode 100755
index 00000000000..c867cbeac3e
--- /dev/null
+++ b/Master/bin/i386-linux/lzdiff
@@ -0,0 +1,67 @@
+#!/bin/sh
+# sh is buggy on RS/6000 AIX 3.2. Replace above line with #!/bin/ksh
+
+# lzcmp and lzdiff 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.lzma.
+# If two files are specified, then they are uncompressed and
+# fed to cmp or diff. The exit status from cmp or diff is
+# preserved.
+
+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 2
+ fi ;;
+ esac
+done
+if test -z "$FILES"; then
+ echo "Usage: $prog [${comp}_options] file [file]"
+ exit 2
+fi
+set $FILES
+if test $# -eq 1; then
+ FILE=`echo "$1" | sed 's/[-.][tlaz]*$//'`
+ lzma -dc "$1" | $comp $OPTIONS - "$FILE"
+
+elif test $# -eq 2; then
+ case "$1" in
+ *[-.]lzma | *.t[la]z)
+ case "$2" in
+ *[-.]lzma | *.t[la]z)
+ F=`echo "$2" | sed 's|.*/||;s|[-.][tlaz]*||'`
+ TF=`/usr/bin/mktemp ${TMPDIR:-/tmp}/"$F".XXXXXXXXXX` || exit 1
+ trap 'rm -f "$TF"; exit 2' EXIT HUP INT PIPE TERM
+ lzma -dc "$2" > "$TF" || exit
+ lzma -dc "$1" | $comp $OPTIONS - "$TF"
+ STAT="$?"
+ rm -f "$TF" || STAT=2
+ trap EXIT HUP INT PIPE TERM
+ exit $STAT;;
+
+ *) lzma -dc "$1" | $comp $OPTIONS - "$2";;
+ esac;;
+ *) case "$2" in
+ *[-.]lzma | *.t[la]z)
+ lzma -dc "$2" | $comp $OPTIONS "$1" -;;
+ *) $comp $OPTIONS "$1" "$2";;
+ esac;;
+ esac
+else
+ echo "Usage: $prog [${comp}_options] file [file]"
+ exit 2
+fi
diff --git a/Master/bin/i386-linux/lzegrep b/Master/bin/i386-linux/lzegrep
new file mode 120000
index 00000000000..999081a9f29
--- /dev/null
+++ b/Master/bin/i386-linux/lzegrep
@@ -0,0 +1 @@
+lzgrep \ No newline at end of file
diff --git a/Master/bin/i386-linux/lzfgrep b/Master/bin/i386-linux/lzfgrep
new file mode 120000
index 00000000000..999081a9f29
--- /dev/null
+++ b/Master/bin/i386-linux/lzfgrep
@@ -0,0 +1 @@
+lzgrep \ No newline at end of file
diff --git a/Master/bin/i386-linux/lzgrep b/Master/bin/i386-linux/lzgrep
new file mode 100755
index 00000000000..c872df4e509
--- /dev/null
+++ b/Master/bin/i386-linux/lzgrep
@@ -0,0 +1,123 @@
+#!/bin/sh
+
+# lzgrep -- a wrapper around a grep program that decompresses files as needed
+# Adapted to LZMA utils from gzip-1.3.3 + Red Hat's security patches
+# Adapted from a version sent by Charles Levert <charles@comm.polymtl.ca>
+# Copyright (C) 1998, 2001 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.
+
+# Improve error handling, this is supported by bash but not all the other
+# shells so we hide the possible error:
+set -o pipefail > /dev/null 2> /dev/null
+
+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 1;;
+ --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 1;;
+ 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 lzma files"
+ echo "usage: $prog [grep_options] pattern [files]"
+ exit 1
+fi
+
+if test $# -eq 0; then
+ lzma -dc | $grep $opt "$pat"
+ exit $?
+fi
+
+res=0
+trap break SIGPIPE
+for i do
+ lzma -dc "$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=${i//\\/\\\\}
+ i=${i//|/\\|}
+ i=${i//&/\\&}
+ i=`printf "%s" "$i" | tr '\n' ' '`
+ if test $with_filename -eq 1; then
+ sed_script="s|^[^:]*:|${i}:|"
+ else
+ sed_script="s|^|${i}:|"
+ fi
+ $grep $opt "$pat" | sed "$sed_script"
+ fi
+ r=$?
+ test $res -lt $r && res=$r
+ # SIGPIPE + 128
+ test "$r" -eq 141 && exit $res
+done
+trap - SIGPIPE
+exit $res
diff --git a/Master/bin/i386-linux/lzless b/Master/bin/i386-linux/lzless
new file mode 120000
index 00000000000..1fecad97b34
--- /dev/null
+++ b/Master/bin/i386-linux/lzless
@@ -0,0 +1 @@
+lzmore \ No newline at end of file
diff --git a/Master/bin/i386-linux/lzma b/Master/bin/i386-linux/lzma
new file mode 100755
index 00000000000..873b2a08781
--- /dev/null
+++ b/Master/bin/i386-linux/lzma
Binary files differ
diff --git a/Master/bin/i386-linux/lzmadec b/Master/bin/i386-linux/lzmadec
new file mode 100755
index 00000000000..f0575bba27c
--- /dev/null
+++ b/Master/bin/i386-linux/lzmadec
Binary files differ
diff --git a/Master/bin/i386-linux/lzmainfo b/Master/bin/i386-linux/lzmainfo
new file mode 100755
index 00000000000..878bca9abda
--- /dev/null
+++ b/Master/bin/i386-linux/lzmainfo
Binary files differ
diff --git a/Master/bin/i386-linux/lzmore b/Master/bin/i386-linux/lzmore
new file mode 100755
index 00000000000..d694774d64a
--- /dev/null
+++ b/Master/bin/i386-linux/lzmore
@@ -0,0 +1,74 @@
+#!/bin/sh
+
+# Copyright (C) 2001 Free Software Foundation
+# Copyright (C) 1992, 1993 Jean-loup Gailly
+# Adapted to LZMA utils from gzip-1.3.3 + Red Hat's security patches
+
+# 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.
+
+if test "`echo "$0" | sed 's|.*/||'`" = "lzless"; then
+ PAGER=less
+fi
+
+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 -a -n "$oldtty"; then
+ trap 'stty $oldtty 2>/dev/null; exit' 0 2 3 5 10 13 15
+else
+ trap 'stty $ncb echo 2>/dev/null; exit' 0 2 3 5 10 13 15
+fi
+
+if test $# = 0; then
+ if test -t 0; then
+ echo usage: zmore files...
+ else
+ lzma -dc | eval ${PAGER-more}
+ fi
+else
+ FIRST=1
+ for FILE
+ do
+ < "$FILE" || continue
+ 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' -o "$ANS" = 'q'; then
+ exit
+ fi
+ fi
+ if test "$ANS" != 's'; then
+ echo "------> $FILE <------"
+ lzma -dc "$FILE" | eval ${PAGER-more}
+ fi
+ if test -t; then
+ FIRST=0
+ fi
+ done
+fi
diff --git a/Master/bin/i386-linux/texcount b/Master/bin/i386-linux/texcount
new file mode 100755
index 00000000000..7e9168f3291
--- /dev/null
+++ b/Master/bin/i386-linux/texcount
@@ -0,0 +1,706 @@
+#! /usr/bin/env perl
+$^W = 1;
+use strict;
+use Term::ANSIColor;
+use POSIX qw(locale_h);
+use locale;
+setlocale(LC_CTYPE,"no_NO");
+
+my $versionnumber="1.9";
+my $versiondate="2008 Jan 10";
+
+
+### How many tokens to exclude from count after macro
+# Macro name and first N tokens (or {...}) are
+# ignored. Options [...] right after macro name are
+# also ignored, as are options [...] between and after
+# the excluded tokens.
+#
+# For macros not specified here, the default value is 0: i.e.
+# no tokens are excluded, but [...] options are. Some macros
+# have been included here with =>0 for completeness and as a
+# reminder.
+my %TeXexcl=('\documentclass'=>1,'\documentstyle'=>1,'\usepackage'=>1, '\hyphenation'=>1,
+ '\pagestyle'=>1,'\thispagestyle'=>1, '\pagenumbering'=>1,'\markboth'=>1, '\markright'=>1,
+ '\newcommand'=>2,'\renewcommand'=>2,'\newenvironment'=>3, 'renewenvironment'=>3,
+ '\newfont'=>2,'\newtheorem'=>2,'\bibliographystyle'=>1, '\bibliography'=>1,
+ '\parbox'=>1, '\marginpar'=>0,'\makebox'=>0, '\raisebox'=>1, '\framebox'=>0,
+ '\newsavebox'=>1, '\sbox'=>1, '\savebox'=>2, '\usebox'=>1,'\rule'=>2,
+ '\footnote'=>1,'\label'=>1, '\ref'=>1, '\pageref'=>1, '\bibitem'=>1,
+ '\cite'=>1, '\citep'=>1, '\citet'=>1, '\citeauthor'=>1, '\citealt'=>1, '\nocite'=>1,
+ '\eqlabel'=>1, '\eqref'=>1,'\hspace'=>1, '\vspace'=>1, '\addvspace'=>1,
+ '\input'=>1, '\include'=>1, '\includeonly'=>1,'\includegraphics'=>1,
+ '\newlength'=>1, '\setlength'=>2, '\addtolength'=>2,'\settodepth'=>2,
+ '\settoheight'=>2, '\settowidth'=>2,'\newcounter'=>1, '\setcounter'=>2,
+ '\addtocounter'=>2,'\stepcounter'=>1, '\refstepcounter'=>1, '\usecounter'=>1,
+ '\alph'=>1, '\arabic'=>1, '\fnsymbol'=>1, '\roman'=>1, '\value'=>1,
+ '\cline'=>1, '\multicolumn'=>3,'\typeout'=>1, '\typein'=>1,
+ 'beginlist'=>2, 'beginminipage'=>1, 'begintabular'=>1,
+ 'beginthebibliography'=>1,'beginlrbox'=>1 );
+
+### Macros that should be counted as one or more words
+# Macros that represent text may be declared here. The value gives
+# the number of words the macro represents.
+my %TeXmacroword=('\LaTeX'=>1);
+
+### Macros for headers
+# Macros that identify headers: i.e. following token or
+# {...} is counted as header. The =>2 indicates transition to
+# state 2 which is used within headers.
+my %TeXheader=('\title'=>2,'\part'=>2,'\chapter'=>2,
+ '\section'=>2,'\subsection'=>2,'\subsubsection'=>2,
+ '\paragraph'=>2,'\subparagraph'=>2);
+
+### Macros that are counted within the preamble
+# The preamble is the text between \documentclass and \begin{document}.
+# Text and macros in the preamble is ignored unless specified here. The
+# value is the status (1=text, 2=header, etc.) they should be interpreted as.
+# Note that only the first unit (token or {...} block) is counted.
+my %TeXpreamble=('\title'=>2);
+
+### Begin-End groups
+# Identified as begin-end groups, and define =>state. The
+# states used corresponds to the elements of the count array, and
+# are:
+# 0: Not included
+# 1: Text, word included in text count
+# 2: Header, words included in header count
+# 3: Float caption, words included in float caption count
+# 6: Inline mathematics, words not counted
+# 7: Displayed mathematics, words not counted
+# -1: Float, not included, but looks for captions
+#
+# 4 and 5 are used to count number of headers and floats
+# and are not used as states.
+#
+# By default, groups not specified are parsed as floats (-1) and only
+# caption text is counted, and counted as float caption rather than
+# as words in text.
+#
+# Note that some environments may only exist within math-mode, and
+# therefore need not be defined here: in fact, they should not as it
+# is not clear if they will be in inlined or displayed math.
+#
+my %TeXgroup=('document'=>1,'letter'=>1,'titlepage'=>0,
+ 'center'=>1,'flushleft'=>1,'flushright'=>1,
+ 'abstract'=>1,'quote'=>1,'quotation'=>1,'verse'=>1,'minipage'=>1,'verbatim'=>1,
+ 'description'=>1,'enumerate'=>1,'itemize'=>1,'list'=>1,
+ 'theorem'=>1,'lemma'=>1,'definition'=>1,'corollary'=>1,'example'=>1,
+ 'math'=>6,'displaymath'=>7,'equation'=>7,'eqnarray'=>7,
+ 'figure'=>-1,'float'=>-1,'picture'=>-1,'table'=>-1,
+ 'tabbing'=>0,'tabular'=>0,'thebibliography'=>0,'lrbox'=>0);
+
+### In floats: include only specific macros
+# Macros used to identify caption text within floats.
+my %TeXfloatinc=('\caption'=>1);
+
+### Count labels
+# Labels used to describe the counts
+my @countlabel=('Files','Words in text','Words in headers',
+ 'Words in float captions','Number of headers','Number of floats',
+ 'Number of math inlines','Number of math displayed');
+
+# Styles
+my @STYLES=();
+my %STYLE;
+$STYLES[0]={};
+$STYLES[1]={'word1'=>'blue','word2'=>'bold blue','word3'=>'blue',
+ 'grouping'=>'red','mathgroup'=>'magenta','state'=>'cyan underline'};
+$STYLES[2]={%{$STYLES[1]},
+ 'word0'=>'yellow','word-1'=>'yellow',
+ 'command'=>'green','exclgroup'=>'yellow','exclmath'=>'yellow',
+ 'ignore'=>'cyan'};
+$STYLES[3]={%{$STYLES[2]},
+ 'comment'=>'yellow','option'=>'yellow'};
+$STYLES[4]={%{$STYLES[3]}};
+
+# Options and states
+my $verbose=0;
+my $showstates=0;
+my $htmlstyle=0;
+my $blankline=0;
+
+
+## SHORT HELP AND INFO
+if (!defined @ARGV) {
+ print_version();
+ print_syntax();
+ print_reference();
+ exit;
+} elsif ($ARGV[0]=~/^(\-(h|\?|\-help)|\/\?)$/) {
+ print_help();
+ exit;
+} elsif ($ARGV[0]=~/^\-\-version$/) {
+ print_version();
+ exit;
+} elsif ($ARGV[0]=~/^\-\-licence$/) {
+ print_licence();
+ exit;
+}
+
+# PROCESS ARGUMENTS AND FILES
+my $totalcount=new_count();
+foreach my $file (<@ARGV>) {
+ if ($file eq '-v') {$verbose=1; next;}
+ if ($file eq '-vv') {$verbose=2; next;}
+ if ($file eq '-vvv') {$verbose=3; next;}
+ if ($file eq '-vvvv') {$verbose=3; $showstates=1; next;}
+ if ($file =~ /^\-showstate/ ){$showstates=1; next;}
+ if ($file =~ /^\-html/ ) {
+ $ENV{'ANSI_COLORS_DISABLED'} = 1;
+ $htmlstyle = $file eq '-htmlcore' ? 1 : 2;
+ if ($htmlstyle>1) {html_head();}
+ next;
+ }
+ if ($file=~/^\-(nocol|nc$)/) {
+ $ENV{'ANSI_COLORS_DISABLED'} = 1;
+ next;
+ }
+ %STYLE=%{$STYLES[$verbose]};
+ my $tex=TeXfile($file);
+ if (!defined $tex) {
+ print "File not found or not readable: ".$file."\n";
+ next;
+ }
+ parse($tex);
+ print "\n";
+ print_count($tex->{'count'},'FILE: '.$file);
+ print "\n";
+ add_count($totalcount,$tex->{'count'});
+}
+if (${$totalcount}[0]>1) {
+ formatprint('Total','h1');
+ print_count($totalcount,'SUM');
+}
+if ($htmlstyle>1) {
+ html_tail();
+}
+
+
+
+#########
+######### Subroutines
+#########
+
+sub TeXfile {
+ my $filename=shift @_;
+ my $file=read_file($filename) || return undef;
+ return TeXcode($file);
+}
+
+sub TeXcode {
+ my $texcode=shift @_;
+ my %TeX=();
+ $TeX{'line'}=$texcode;
+ $TeX{'next'}=undef;
+ $TeX{'type'}=undef;
+ $TeX{'style'}=undef;
+ $TeX{'printstate'}=undef;
+ $TeX{'eof'}=0;
+ $TeX{'count'}=new_count();
+ $TeX{'count'}[0]++;
+ return \%TeX;
+}
+
+sub set_style {
+ my ($tex,$style)=@_;
+ if (!(($tex->{'style'}) && ($tex->{'style'} eq '-'))) {$tex->{'style'}=$style;}
+}
+
+sub flush_style {
+ my ($tex,$style)=@_;
+ set_style($tex,$style);
+ flush_next($tex);
+}
+
+sub line_return {
+ my $blank=shift @_;
+ if ($blank>$blankline) {
+ if ($htmlstyle) {print "<br>\n";} else {print "\n";}
+ $blankline++;
+ }
+}
+
+sub print_style {
+ my ($text,$style,$state)=@_;
+ (($verbose>0) && (defined $text) && (defined $style)) || return;
+ my $colour;
+ ($colour=$STYLE{$style}) || return;
+ if (($colour) && !($colour eq '-')) {
+ if ($htmlstyle) {
+ print "<span class='".$style."'>".$text."</span>";
+ } else {
+ print Term::ANSIColor::colored($text,$colour);
+ #print $text;
+ }
+ if ($state) {
+ print_style($state,'state');
+ }
+ $blankline=-1;
+ }
+}
+
+sub formatprint {
+ my ($text,$tag,$class)=@_;
+ my $break=($text=~s/\n$//);
+ if ($htmlstyle && defined $tag) {
+ print '<'.$tag;
+ if ($class) {print " class='".$class."'";}
+ print '>'.$text.'</'.$tag.'>';
+ } else {
+ print $text;
+ }
+ if ($break) {print "\n";}
+}
+
+sub read_file {
+ my $filename=shift @_;
+ open(FH,"<".$filename."") || return undef;
+ if ($verbose) {
+ #line_return(1);
+ formatprint("File: ".$filename."\n",'h2');
+ $blankline=0;
+ }
+ my @text=();
+ while (my $line=<FH>) {
+ push @text,$line;
+ }
+ close(FH);
+ return join('',@text);
+}
+
+sub next_token {
+ my $tex=shift @_;
+ my ($next,$type);
+ if (defined $tex->{'next'}) {print_style($tex->{'next'}.' ',$tex->{'style'});}
+ $tex->{'style'}=undef;
+ while (defined ($next=get_next_token($tex))) {
+ $type=$tex->{'type'};
+ if ($type==0) {
+ print_style($next,'comment');
+ } elsif ($type==9) {
+ if ($verbose) {line_return(1);}
+ } else {
+ return $next;
+ }
+ }
+ return $next;
+}
+
+sub flush_next {
+ my $tex=shift @_;
+ if (defined $tex->{'next'}) {
+ print_style($tex->{'next'}.' ',$tex->{'style'},$tex->{'printstate'});
+ }
+ $tex->{'printstate'}=undef;
+ $tex->{'style'}='-';
+}
+
+sub get_next_token {
+ my $tex=shift @_;
+ my $next;
+ (defined ($next=get_token($tex,'\%[^\n]*',0))) && return $next;
+ (defined ($next=get_token($tex,'\n',9))) && return $next;
+ (defined ($next=get_token($tex,'\\\\[\{\}]',1))) && return $next;
+ (defined ($next=get_token($tex,'\w+(\.\w+)+\.',1))) && return $next;
+ (defined ($next=get_token($tex,'\w+([\-\']\w+)*',1))) && return $next;
+ (defined ($next=get_token($tex,'[\"\'\`:\.,\(\)\[\]!\+\-\*=/\^\_\@\<\>\~\#\&]',2))) && return $next;
+ (defined ($next=get_token($tex,'\\\\([a-zA-Z_]+|[^a-zA-Z_])',3))) && return $next;
+ (defined ($next=get_token($tex,'[\{\}]',4))) && return $next;
+ (defined ($next=get_token($tex,'[\[\]]',5))) && return $next;
+ (defined ($next=get_token($tex,'\$\$',6))) && return $next;
+ (defined ($next=get_token($tex,'\$',6))) && return $next;
+ (defined ($next=get_token($tex,'.',999))) && return $next;
+ (defined ($next=get_token($tex,'[^\s]+',999))) && return $next;
+ $tex->{'eof'}=1;
+ return undef;
+}
+
+sub get_token {
+ my ($tex,$regexp,$type)=@_;
+ if (!defined $regexp) {print "ERROR in get_token: undefined regex.";}
+ if (!defined $tex->{'line'}) {print "ERROR in get_token: undefined tex-line. ".$tex->{'next'}."\n";}
+ if ( $tex->{'line'} =~ s/^($regexp)[ \t\r\f]*// ) {
+ $tex->{'next'}=$1;
+ $tex->{'type'}=$type;
+ return $1;
+ }
+ return undef;
+}
+
+sub new_count {
+ my @count=(0,0,0,0,0,0,0,0);
+ # files, text words, header words, float words,
+ # headers, floats, math-inline, math-display;
+ return \@count;
+}
+
+sub count_word {
+ my ($count,$type,$word,$style,$verb)=@_;
+ ($word) || ($word="");
+ ($style) || ($style=0);
+ ($verb) || ($verb=0);
+ if ($type>0) {${$count}[$type]++;}
+ if ($verb >= $verbose) {
+ }
+}
+
+sub print_count {
+ my ($count,$header)=@_;
+ if ($htmlstyle) {print "<dl class='count'>\n";}
+ if (defined $header) {
+ formatprint($header."\n",'dt','header');
+ }
+ for (my $i=1;$i<8;$i++) {
+ formatprint($countlabel[$i].': ','dt');
+ formatprint(${$count}[$i]."\n",'dd');
+ }
+ if ($htmlstyle) {print "</dl>\n";}
+}
+
+sub add_count {
+ my ($a,$b)=@_;
+ for (my $i=0;$i<8;$i++) {
+ ${$a}[$i]+=${$b}[$i];
+ }
+}
+
+sub parse {
+ my ($tex)=@_;
+ if ($htmlstyle && $verbose) {print "<p class=parse>\n";}
+ while (!($tex->{'eof'})) {
+ parse_unit($tex,1);
+ }
+ if ($htmlstyle && $verbose) {print "</p>\n";}
+}
+
+sub parse_unit {
+ # Status:
+ # 0 = exclude
+ # 1 = text
+ # 2 = header text
+ # 3 = float text
+ # -1 = float (exclude)
+ # -9 = preamble (between \documentclass and \begin{document})
+ my ($tex,$status,$end)=@_;
+ my $count=$tex->{'count'};
+ my $substat;
+ if ($showstates) {
+ if (defined $end) {
+ $tex->{'printstate'}=':'.$status.':'.$end.':';
+ } else {
+ $tex->{'printstate'}=':'.$status.':';
+ }
+ flush_next($tex);
+ }
+ while (defined (my $next=next_token($tex))) {
+ # parse next token; or tokens until match with $end
+ set_style($tex,"ignore");
+ if (($end) && ($end eq $next)) {
+ # end of unit
+ return;
+ } elsif (!defined $next) {
+ exit "ERROR: End of file while waiting for ".$end."\n";
+ }
+ if ($tex->{'type'}==1) {
+ # word
+ if ($status>0) {
+ ${$count}[$status]++;
+ set_style($tex,'word'.$status);
+ }
+ } elsif ($tex->{'type'}==9) {
+ #print "\n";
+ } elsif ($next eq '{') {
+ # {...}
+ parse_unit($tex,$status,'}');
+ } elsif ($tex->{'type'}==3) {
+ # macro call
+ set_style($tex,'command');
+ if ($next eq '\documentclass') {
+ # starts preamble
+ gobble_option($tex);
+ gobble_macro_parms($tex,1);
+ while (!($tex->{'eof'})) {
+ parse_unit($tex,-9);
+ }
+ } elsif ($next eq '\begin') {
+ # \begin...\end
+ if ($status==-9 && $tex->{'line'}=~/^\{document\}/) {
+ $status=1;
+ }
+ my $localstyle=$status>0 ? 'grouping' : 'exclgroup';
+ flush_style($tex,$localstyle);
+ gobble_option($tex);
+ if ($tex->{'line'} =~ s/^\{(\w+)\*?\}[ \t\r\f]*//) {
+ # gobble group type
+ print_style('{'.$1.'}',$localstyle);
+ $next='begin'.$1;
+ if (defined (my $i=$TeXexcl{$next})) {
+ gobble_macro_parms($tex,$i);
+ }
+ } else {
+ print "\nWarning: BEGIN group without type.\n";
+ }
+ # find group status (or leave unchanged)
+ defined ($substat=$TeXgroup{$1}) || ($substat=$status);
+ if ($status<=0 && $status<$substat) {$substat=$status;}
+ if (($status>0) && ($substat==-1)) {
+ # Count float
+ ${$count}[5]++;
+ }
+ if ($status>0 and $substat>3) {
+ # count item, exclude contents
+ ${$count}[$substat]++;
+ $substat=0;
+ }
+ parse_unit($tex,$substat,'\end');
+ if ($tex->{'line'} =~ s/^\{(\w+)\}[ \t\r\f]*//) {
+ # gobble group type
+ flush_style($tex,$localstyle);
+ print_style('{'.$1.'}',$localstyle);
+ } else {
+ print "\nWarning: END group without type.\n";
+ }
+ } elsif ($next eq '\(') {
+ # math inline
+ my $localstyle=$status>0 ? 'mathgroup' : 'exclmath';
+ if ($status>0) {${$count}[6]++;}
+ set_style($tex,$localstyle);
+ parse_unit($tex,0,'\)');
+ set_style($tex,$localstyle);
+ } elsif ($next eq '\[') {
+ # math display
+ my $localstyle=$status>0 ? 'mathgroup' : 'exclmath';
+ if ($status>0) {${$count}[7]++;}
+ set_style($tex,$localstyle);
+ parse_unit($tex,0,'\]');
+ set_style($tex,$localstyle);
+ } elsif (defined (my $i=$TeXexcl{$next})) {
+ # macro: exclude options
+ gobble_macro_parms($tex,$i);
+ } elsif (defined ($i=$TeXmacroword{$next})) {
+ # count macro as word (or a given number of words)
+ if ($status>0) {
+ ${$count}[$status]+=$i;
+ set_style($tex,'word'.$status);
+ }
+ } elsif ($next eq '\def') {
+ # ignore \def...
+ $tex->{'line'} =~ s/^([^\{]*)\{/\{/;
+ flush_next($tex);
+ print_style($1.' ','ignore');
+ parse_unit($tex,0);
+ } elsif ($next =~ /^\\[^\w\_]/) {
+ } else {
+ gobble_option($tex);
+ }
+ if (($status>0 || ($status==-9 && defined $TeXpreamble{$next})) && ($substat=$TeXheader{$next})) {
+ # headers
+ ${$count}[4]++;
+ gobble_macro_modifier($tex);
+ gobble_option($tex);
+ parse_unit($tex,$substat);
+ } elsif ($status==-9 && defined ($substat=$TeXpreamble{$next})) {
+ parse_unit($tex,$substat);
+ }
+ if (($status==-1) && ($substat=$TeXfloatinc{$next})) {
+ # text included from float
+ parse_unit($tex,3);
+ }
+ } elsif ($next eq '$') {
+ # math inline
+ my $localstyle=$status>0 ? 'mathgroup' : 'exclmath';
+ if ($status>0) {${$count}[6]++;}
+ set_style($tex,$localstyle);
+ parse_unit($tex,0,$next);
+ set_style($tex,$localstyle);
+ } elsif ($next eq '$$') {
+ # math display
+ my $localstyle=$status>0 ? 'mathgroup' : 'exclmath';
+ if ($status>0) {${$count}[7]++;}
+ set_style($tex,$localstyle);
+ parse_unit($tex,0,$next);
+ set_style($tex,$localstyle);
+ }
+ if (!defined $end) {return;}
+ }
+}
+
+sub gobble_option {
+ my $tex=shift @_;
+ flush_next($tex);
+ if ($tex->{'line'} =~ s/^(\[(\w|[,\-\s\~\.\:\;\+\?\*\_\=])*\])//) {
+ print_style($1,'option');
+ return $1;
+ }
+ return undef;
+}
+
+sub gobble_options {
+ while (gobble_option(@_)) {}
+}
+
+sub gobble_macro_modifier {
+ my $tex=shift @_;
+ flush_next($tex);
+ if ($tex->{'line'} =~ s/^\*//) {
+ print_style($1,'option');
+ return $1;
+ }
+ return undef;
+}
+
+sub gobble_macro_parms {
+ my ($tex,$i)=@_;
+ if ($i>0) {gobble_macro_modifier($tex);}
+ gobble_options($tex);
+ for (;$i-->0;) {
+ parse_unit($tex,0);
+ gobble_options($tex);
+ }
+}
+
+
+### HTML context
+
+sub html_head {
+ print '
+<html>
+<head>
+<style>
+<!--
+.parse {font-size: 80%; background: #eef;}
+.word1,.word2,.word3 {color: #009;}
+.word2 {font-weight: 700;}
+.word3 {font-style: italic;}
+.word-1 {color: #66c;}
+.command {color: #c00;}
+.option {color: #cc0;}
+.grouping {color: #900; font-weight: 700;}
+.mathgroup {color: #090;}
+.exclmath {color: #6c6;}
+.ignore {color: #999;}
+.comment {color: #999; font-style: italic;}
+.state {color: #990; font-size: 70%;}
+dl.count {width: 100%; background: #cfc; color: 009;}
+dl.count dt.header {font-weight: 700; font-style: italic; float: none;}
+dl.count dt {clear: both; float: left;}
+dl.count dd {font-weight: 700;}
+.warning {color: #c00; font-weight: 700;}
+.parse, .count {border: solid 1px #999; margin: 0pt; padding: 4pt;}
+-->
+</style>
+</head>
+<body>
+<h1>LaTeX word count</h1>
+';
+}
+
+sub html_tail {
+ print '</body></html>';
+}
+
+
+### HELP AND INFO
+
+sub print_version {
+ print "TeXcount version ".$versionnumber.", ".$versiondate.'.';
+}
+
+sub print_syntax {
+ print '
+Syntax: TeXcount.pl [options] files
+
+Options:
+ -v Verbose: print parsed words, mark formulae
+ -vv More verbose: also print ignored text
+ -vvv Even more verbose: include comments and options
+ -showstate Show internal states (with verbose)
+ -nc, -nocol No colours (colours require ANSI)
+ -html Output in HTML format
+ -htmlcore Only HTML body contents
+ -h, -?, --help, /? Help
+ --version Print version number
+ --licence Licence information
+';
+}
+
+sub print_help {
+ print '
+***************************************************************
+* TeXcount.pl '.$versionnumber.', '.$versiondate.'
+*
+
+Count words in TeX and LaTeX files, ignoring macros, tables,
+formulae, etc.
+';
+ print_syntax();
+ print '
+The script counts words as either words in the text, words in
+headers/titles or words in floats (figure/table captions).
+Macro options (i.e. \marco[...]) are ignored; macro parameters
+(i.e. \macro{...}) are counted or ignored depending on the
+macro, but by default counted. Begin-end groups are by default
+ignored and treated as \'floats\', though some (e.g. center) are
+counted.
+
+Unless -nocol (or -nc) has been specified, the output will be
+colour coded. Counted text is coloured blue with headers are in
+bold and in HTML output caption text is italicised.
+
+Mathematical formulae are not counted as words, but are instead
+counted separately with separate counts for inlined formulae
+and displayed formulae. Similarly, the number of headers and
+the number of \'floats\' are counted. Note that \'float\' is used
+here to describe anything defined in a begin-end group unless
+explicitly recognized as text or mathematics.
+
+The verbose options (-v, -vv, -vvv, showstate) produces output
+indicating how the text has been interpreted. Check this to
+ensure that words in the text has been interpreted as such,
+whereas mathematical formulae and text/non-text in begin-end
+groups have been correctly interpreted.
+
+Unix hint: Use \'less -r\' instead of just \'less\' to view output:
+the \'-r\' option makes less treat text formating codes properly.
+
+Windows hint: If your Windows interprets ANSI colour codes, lucky
+you! Otherwise, use the -nocol (or -nc) option with the verbose
+options or the output will be riddled with colour codes. Instead,
+you can use -html to produce HTML code, write this to file and
+view with your favourite browser.
+';
+ print_reference();
+}
+
+sub print_reference {
+ print '
+The TeXcount script is copyright of Einar Andreas Rødland (2008)
+and published under the LaTeX Project Public Licence.
+
+For more information about the script, e.g. news, updates, help,
+usage tips, known issues and short-comings, go to
+ http://folk.uio.no/einarro/Comp/texwordcount.html
+or go to
+ http://folk.uio.no/einarro/Services/texcount.html
+to access the script as a web service. Feedback such as problems
+or errors can be reported to einarro@ifi.uio.no.
+';
+}
+
+sub print_licence {
+ print 'TeXcount version '.$versionnumber.'
+
+Copyright 2008 Einar Andreas Rødland
+
+The TeXcount script is published under the LaTeX Project Public
+Licence (LPPL)
+ http://www.latex-project.org/lppl.txt
+which grants you, the user, the right to use, modify and distribute
+the script. However, if the script is modified, you must change its
+name or use other technical means to avoid confusion.
+
+The script has LPPL status "maintained" with Einar Andreas
+Rødland being the current maintainer.
+';
+}
diff --git a/Master/bin/i386-linux/unlzma b/Master/bin/i386-linux/unlzma
new file mode 120000
index 00000000000..2bcdf7016f0
--- /dev/null
+++ b/Master/bin/i386-linux/unlzma
@@ -0,0 +1 @@
+lzma \ No newline at end of file