+++ /dev/null
-if [ -f "$HOME/.bashrc" ];then export BASH_ENV="$HOME/.bashrc";source "$BASH_ENV";fi
-
-finger
-m
-cat 2>/dev/null .perlmail-submit.log
-
-if [ -f "$HOME/.bash_profile.local" ];then source "$HOME/.bash_profile.local";fi
+++ /dev/null
-if [ -n "$_home_short_dotbashrc_norc" -o "${TERM#norc-}" != "$TERM" ];then
- # We could get executed twice:
- export _home_short_dotbashrc_norc=true
- # Do not use $TZ as Solaris sshd(8) does not propagate it.
- # Be aware you must use 'ssh -t' to propagate $TERM otherwise '=dumb'.
- export TERM="${TERM#norc-}"
- export _home_short_dotbashrc=true
-fi
-
-if [ -z "$_home_short_dotbashrc" ];then
- _home_short_dotbashrc=true
- # $TERM gets restored to its 'norc-' state after ~/.bashrc
- # alias norc='TERM="norc-$TERM" ssh -t -o 'NoHostAuthenticationForLocalhost yes' $USER@localhost "cd $PWD; TERM=$TERM;"'
- function norc { TERM="norc-$TERM" ssh -t -o 'NoHostAuthenticationForLocalhost yes' $USER@localhost "cd $PWD; TERM=$TERM;" "$@"; }; export -f norc
-
-if [ -f /etc/bashrc ];then source /etc/bashrc;fi
-
-function _bash_profile_addpath # <variablename>,<dirpathname>
-{
- _OPTIND="$OPTIND"
- _opt_f=0;_opt_s=0
- OPTIND=1;while getopts fs got;do
- case "$got" in
- [fs]) eval "_opt_$got=1" ;;
- *) return 1 ;;
- esac
- done
- eval "_varname=\"\$$[$OPTIND+0]\""
- eval "_dirpathname=\"\$$[$OPTIND+1]\""
- if [ $_opt_f = 0 -a '!' -d "$_dirpathname" ];then return;fi
- if [ $_opt_s = 1 -o -z "`eval "echo \\${$_varname}"`" ];then
- eval "$_varname='$_dirpathname'"
- else
- # we want to override any original directories, place dirpathname first!
- eval "$_varname=\"$_dirpathname:\${$_varname}\""
- fi
- export "$_varname"
- unset _varname _dirpathname _opt_f _opt_s
- OPTIND="$_OPTIND";unset _OPTIND
-}
-
-# Use reverse order of preferred directories:
-# gid(1) dependency on: /opt/sfw/bin
-# EUID="`id -u 2>/dev/null || /usr/xpg4/bin/id -u 2>/dev/null || gid -u`"
-_bash_profile_addpath -f PATH "/opt/SUNWspro/bin"
-_bash_profile_addpath -f PATH "/usr/dist/exe"
-_bash_profile_addpath -f PATH "/sbin"
-_bash_profile_addpath -f PATH "/usr/sbin"
-_bash_profile_addpath -f PATH "/opt/sfw/bin"
-[ -x $HOME/bin/ProductivityTools-check ] && eval `$HOME/bin/ProductivityTools-check`
-[ -n "$PATH_PRODUCTIVITY_TOOLS" ] && _bash_profile_addpath -f PATH "$PATH_PRODUCTIVITY_TOOLS"
-[ $EUID -eq 0 ] && _bash_profile_addpath -f PATH "/usr/local/sbin"
-_bash_profile_addpath -f PATH "/usr/local/bin"
-_bash_profile_addpath -f LD_LIBRARY_PATH "/opt/sfw/lib"
-_bash_profile_addpath -f MANPATH "/usr/X11R6/man"
-_bash_profile_addpath -f MANPATH "/usr/share/man"
-_bash_profile_addpath -f MANPATH "/usr/local/man"
-_bash_profile_addpath -s JAVA_HOME "/usr/java"
-_bash_profile_addpath -s JAVA_HOME "/usr/local/java"
-[ "`uname`" = "SunOS" ] && _bash_profile_addpath -f LD_LIBRARY_PATH "$HOME/Netscape/dist/lib"
-for family in "/net/jsc-nfs.czech.sun.com/export/jscqa-local" "$HOME";do
- for arch in "$family" $family/`uname -p`;do
- # Do not "-f": We use /net !
- _bash_profile_addpath PATH "$arch/bin"
- _bash_profile_addpath PATH "$arch/OpenOffice.org"
- _bash_profile_addpath PATH "$arch/forte4j/extbin"
- _bash_profile_addpath -s JAVA_HOME "$arch/java"
- [ $EUID -eq 0 ] && _bash_profile_addpath PATH "$arch/sbin"
- _bash_profile_addpath LD_LIBRARY_PATH "$arch/lib"
- _bash_profile_addpath MANPATH "$arch/man"
- done
- done
-_bash_profile_addpath -f -s CVSROOT "short@vellum.cz:/home/short/pserver/cvs" # default
-[ -n "$JAVA_HOME" ] && _bash_profile_addpath PATH "$JAVA_HOME/bin"
-_bash_profile_addpath -s CVSROOT "$HOME/pserver/cvs"
-_bash_profile_addpath -s CVSROOT "$HOME/cvs"
-_bash_profile_addpath -s ANT_HOME "/usr/local/ant"
-
-mkdir -p $HOME/lib/perl5 # otherwise CPAN will install to "$HOME/lib/site_perl" etc.
-for _perldir in $(eval "echo {/usr,$HOME}/lib/perl5{,/site_perl}$(
- for perlvar in version archname;do
- echo -n '{,/'
- perl -V:"$perlvar"|cut -d "'" -f 2|tr -d '\n'
- echo -n '}'
- done
- )");do
- _bash_profile_addpath -f PERLLIB "$_perldir"
- done
-unset _perldir
-
-unset -f _bash_profile_addpath
-
-for i in tar ls find cp mv ln md5sum du grep ar chown chmod tail;do
- # Prevent g$i from system directory overriding customized $i binary
- which $i 2>/dev/null | grep /net/jsc-nfs.czech.sun.com/export/jscqa-local/ >/dev/null && continue
- which g$i 2>/dev/null | grep '^/' >/dev/null && alias $i=g$i
- done
-
-alias ls='ls -bF'
-alias l='ls -lbF'
-alias maple="ssh -t vega.fjfi.cvut.cz maple"
-#alias cc='cc -I/home/short/include'
-alias vi='vim'
-alias grepb='grep --binary-files=binary'
-alias L='lynx'
-alias cvsfiles='cvsutil --files --print'
-alias cvsignores='cvsutil --ignores --print'
-alias cvsignoresall='cvsutil --ignores --workings --print'
-alias cvsignoresrm='cvsutil --ignores --rm'
-alias cvsignoresrmall='cvsutil --ignores --workings --rm'
-alias cvsignoresallrm='cvsutil --ignores --workings --rm'
-[ "`uname`" = "SunOS" -a -x $HOME/bin/rpm-by-pkg ] && alias rpm='rpm-by-pkg'
-
-weberr="/var/log/httpd/error/klokan.error_log"
-if [ -f "$weberr" ];then alias weberr='tail "$weberr"';fi
-weblog="/var/log/httpd/klokan.access_log"
-if [ -f "$weblog" ];then alias weblog='tail -n 20000 "$weblog"|grep "\\(~\\|%7[eE]\\)short"';fi
-
-export IGNOREEOF=10
-export TMOUT=900
-export EDITOR='vim'
-[ -x /bin/less ] && export PAGER='/bin/less -MMh5cis'
-[ "`uname`" = "SunOS" ] || export LC_CTYPE=cs_CZ.ISO-8859-2
-export PERL_MM_OPT="PERL=$HOME/bin/perlilib PREFIX=$HOME"
-for file in $HOME/.bookmarks.html;do
- export WWW_HOME="file://$HOME/"
- [ -r $file ] && export WWW_HOME="file://$file"
- done
-export GREP_OPTIONS="--binary-files=without-match --directories=skip"
-if [ -n "$PS1" ];then # set only in interactive sessions
- export PS1='[bash]${LOGNAME}@${HOSTNAME}:${PWD}# '
- # kbd_mode -u # utf-8
- # export PS1='\[\017\033%G\]'"$PS1" # \017=std charmap, \033%G=utf-8
- export PS1='\[\017\]'"$PS1" # \017=std charmap
- fi
-export MINICOM="-m -c on" # metakeys+color
-export HISTSIZE=100000
-export HISTFILESIZE="$HISTSIZE"
-export CVS_RSH="ssh"
-grep -w "$TERM" /etc/termcap >/dev/null || export TERM=vt220
-uname_p="`uname -p`"; [ "$TERM" = vt220 -a "${uname_p%86}" != "$uname_p" ] && export TERM=linux
-
-export SOCKS5_SERVER=icsocks.holland.sun.com
-
-# Force strcoll() to sort case-sensitively! (empty/undef doesn't work)
-export LC_COLLATE=C
-
-function cvsdiff { cvs diff "$@" 2>&1|pipebuf -q| less; }; export -f cvsdiff
-function cvsdiffi { cvs diff "$@" 2>&1|pipebuf -q|grep -v '^?'|less; }; export -f cvsdiffi
-function cvsupdate { cvs update "$@" 2>&1|pipebuf -q| less; }; export -f cvsupdate
-function cvsupdatei { cvs update "$@" 2>&1|pipebuf -q|grep -v '^?'|less; }; export -f cvsupdatei
-
-function wclines { awk '{x[$0]++}END{for (i in x) print x[i]"\t"i}'; }; export -f wclines
-# SunOS does not support "-m"
-export ULIMITME_OPTS=""
-for i in "-m 100000" "-d 150000" "-v 200000";do
- (ulimit $i 2>/dev/null) && ULIMITME_OPTS="$ULIMITME_OPTS $i"
- done
-function ulimitme { ulimit $ULIMITME_OPTS; }; export -f ulimitme
-function grep {(unset grep; ( ulimitme; grep "$@"; ); );}; export -f grep
-function finame { find . -false `
- awk </dev/null 'BEGIN{ for (i=1;i<ARGC;i++) print " -o -iname *"ARGV[i]"*"; }' "$@";
- `; }; export -f finame
-function mkcd { mkdir -p "$1"; cd "$1"; }; export -f mkcd
-function pushdmk { mkdir -p "$1"; pushd "$1"; }; export -f pushdmk
-function rsync {(unset rsync; rsync -v -e ssh --progress --stats --partial --block-size=512 "$@"; );}; export -f rsync
-function tohex { od -An -txC /tmp/out|tr -d '\n '|tr 'a-f' 'A-F';echo; }; export -f tohex
-function edall {
- find -type f|while read -r i;do
- (awk </dev/null 'BEGIN{ for (i=1;i<ARGC;i++) print ARGV[i]; }' "$@";echo -e 'w\nq')|ed -s "$i"
- done
- }; export -f edall
-function mi { (
- set -ex;cd "$1";while true;do test "$PWD" != "/";if [ -e configure.in -o -e Makefile.PL ];then break;fi;cd ..;done;make install;
- ); };export -f mi
-function ctags {(unset ctags;
- if [ $# -ne 0 -a '(' $# -ne 1 -o "$1" '!=' "--c-types=+px" ')' ];then ctags "$@";else
- find -type f -a '(' -false \
- -o -name "*.[chC]" \
- -o -name "*.cc" \
- -o -name "*.java" \
- -o -name "*.p[lm]" \
- ')' \
- |ctags --file-tags -L - "$@"
- fi; );}; export -f ctags
-function ctagsh { ctags "--c-types=+px"; }; export -f ctagsh
-function cpan {(unset cpan; if [ $# = 0 ];then cpan;else perl -MCPAN -e "install qw($*);";fi; );}; export -f cpan
-function exx { cd "`unset exx;exx "$@"|tee /proc/self/fd/2|tail -n1|sed -n 's/^extdir=//p'`"; };export -f exx
-function revlines { perl -e 'my @r=();push @r,$_ while (<>);print pop @r while @r;'; }; export -f revlines
-
-ulimit -c 0
-set +H
-shopt -s mailwarn
-
-if [ -f "$HOME/.bashrc.local" ];then source "$HOME/.bashrc.local";fi
-
- unset _home_short_dotbashrc # permit later reinitializations
-fi # _home_short_dotbashrc
-
-true # Prevent crash in '-e' mode
+++ /dev/null
-.Xauthority
-.Xdefaults
-.bash_history
-.gdb_history
-.gnupg
-.lynxrc
-.phorum
-.pgpkey
-.viminfo
-.ssh2
-.cvspass
-.mysql_history
-.lynx_cookies
-.muttrc.9000
-.muttrc.priv
-.cpan
-pserver
-Mail
-cgw
-d
-include
-lib
-priv
-netpbm
-viewcvs
-centrum
-secure
-energie-WWW
-staticnss
+++ /dev/null
-:pserver:pserver@vellum.cz:/cvs A
-/1 :pserver:anonymous@intra.tektonica.com:2401/opt/cvs A
-/1 :pserver:kratochvil@intra.tektonica.com:2401/opt/cvs A;*|b/]3 e=
-/1 :pserver:kratochvil@gundabad.tektonica.com:2401/opt/cvs A;*|b/]3 e=
-/1 :pserver:anonymous@cvs.wdiff.sourceforge.net:2401/cvsroot/wdiff A
-:pserver:anoncvs@sources.redhat.com:/cvs/src Ay=0=h<Z
-/1 :pserver:cvs@cvs.winehq.com:2401/home/wine Ah<Z
-/1 :pserver:cvsanon@mok.lvcm.com:2401/CVS/ReactOS Ah<Zy=0=
-/1 :pserver:pserver@cvs.jankratochvil.net:2401/cvs A
-/1 :pserver:anonymous@cvs.middle-man.sourceforge.net:2401/cvsroot/middle-man A
-/1 :pserver:openh323@cvs.openh323.org:2401/home/cvsroot A0:d=cwKw
-/1 :pserver:anonymous@cvs.uservfs.sourceforge.net:2401/cvsroot/uservfs A
-/1 :pserver:anonymous@directfb.org:2401/cvs/directfb A
-/1 :pserver:anoncvs@anoncvs.postgresql.org:2401/projects/cvsroot A'
+++ /dev/null
-rdiff -u
-diff -up
-update -dP -I ! -I CVS
-import -I !
+++ /dev/null
-set history filename /home/short/.gdb_history
-set history save on
-define rt
- break $arg0
- run
-# clear $arg0
- end
-define ct
- tbreak $arg0
- continue
- end
-define rtl
- tbreak main
- run
- break $arg0
- continue
-# clear $arg0
- end
-define pglist3
- if (*("$arg1")=='@')
- set var $arg1=struct $arg1
- end
- set var $pglist_list=$arg0
- while ($pglist_list)
- if (!strcmp("$arg2","."))
- print *(($arg1 *)$pglist_list->data)
- else
- print *(($arg1 *)$pglist_list->data)$arg2
- end
- set var $pglist_list=$pglist_list->next
- end
- end
-define pglist
- pglist3 $arg0 $arg1 .
- end
+++ /dev/null
-$include /etc/inputrc
-set bell-style none
+++ /dev/null
-set ftp:sync-mode/* off
+++ /dev/null
-source ~/.muttrc.addons
-source ~/.muttrc.9000
-source ~/.muttrc.priv
-
-set sendmail="/home/short/bin/sendmail -oem -oi"
-set from="prog-mutt@jankratochvil.net"
-set alternates="^(.*@(.*\\.)?jankratochvil\\.net|short(\\+[^@]*)?@(ucw\\.cz|atrey\\.karlin\\.mff\\.cuni\\.cz|k332\\.feld\\.cvut\\.cz|(alcor|amiga)\\.ericsson\\.cz|short\\.mj\\.gts\\.cz|short\\.short|(.*\\.)?(vellum|valley)\\.cz)|.*@((.*\\.)?short\\.ucw\\.cz|dialup\\.netbeans\\.com|kratochvil\\.suse\\.cz)|kratochvil(\\+[^@]*)?@(users\\.sourceforge\\.net|(.*\\.)?suse\\.cz))$"
-
-#set sendmail="/usr/sbin/sendmail -oem -oi -f jkra7289@ss1000.ms.mff.cuni.cz"
-#set from="jkra7289@ss1000.ms.mff.cuni.cz"
-
-#set sendmail="/usr/sbin/sendmail -oem -oi -f short@k332.feld.cvut.cz"
-#set from="short@k332.feld.cvut.cz"
+++ /dev/null
-# -*-muttrc-*-
-#
-# Command formats for gpg.
-#
-# This version uses gpg-2comp from
-# http://muppet.faveve.uni-stuttgart.de/~gero/gpg-2comp.tar.gz
-#
-# $Id$
-#
-# %p The empty string when no passphrase is needed,
-# the string "PGPPASSFD=0" if one is needed.
-#
-# This is mostly used in conditional % sequences.
-#
-# %f Most PGP commands operate on a single file or a file
-# containing a message. %f expands to this file's name.
-#
-# %s When verifying signatures, there is another temporary file
-# containing the detached signature. %s expands to this
-# file's name.
-#
-# %a In "signing" contexts, this expands to the value of the
-# configuration variable $pgp_sign_as. You probably need to
-# use this within a conditional % sequence.
-#
-# %r In many contexts, mutt passes key IDs to pgp. %r expands to
-# a list of key IDs.
-
-# decode application/pgp
-set pgp_decode_command="gpg %?p?--passphrase-fd 0? --no-verbose --batch --output - %f"
-
-# verify a pgp/mime signature
-set pgp_verify_command="gpg --no-verbose --batch --output - --verify %s %f"
-
-# decrypt a pgp/mime attachment
-set pgp_decrypt_command="gpg --passphrase-fd 0 --no-verbose --batch --output - %f"
-
-# create a pgp/mime signed attachment
-# set pgp_sign_command="gpg-2comp --no-verbose --batch --output - --passphrase-fd 0 --armor --detach-sign --textmode %?a?-u %a? %f"
-set pgp_sign_command="gpg --no-verbose --batch --output - --passphrase-fd 0 --armor --detach-sign --textmode %?a?-u %a? %f"
-
-# create a application/pgp signed (old-style) message
-# set pgp_clearsign_command="gpg-2comp --no-verbose --batch --output - --passphrase-fd 0 --armor --textmode --clearsign %?a?-u %a? %f"
-set pgp_clearsign_command="gpg --no-verbose --batch --output - --passphrase-fd 0 --armor --textmode --clearsign %?a?-u %a? %f"
-
-# create a pgp/mime encrypted attachment
-# set pgp_encrypt_only_command="pgpewrap gpg-2comp -v --batch --output - --encrypt --textmode --armor --always-trust -- -r %r -- %f"
-set pgp_encrypt_only_command="pgpewrap gpg -v --batch --output - --encrypt --textmode --armor -- -r %r -- %f"
-# --always-trust
-
-# create a pgp/mime encrypted and signed attachment
-# set pgp_encrypt_sign_command="pgpewrap gpg-2comp --passphrase-fd 0 -v --batch --output - --encrypt --sign %?a?-u %a? --armor --always-trust -- -r %r -- %f"
-set pgp_encrypt_sign_command="pgpewrap gpg --passphrase-fd 0 -v --batch --textmode --output - --encrypt --sign %?a?-u %a? --armor -- -r %r -- %f"
-# --always-trust
-
-# import a key into the public key ring
-set pgp_import_command="gpg --no-verbose --import -v %f"
-
-# export a key from the public key ring
-set pgp_export_command="gpg --no-verbose --export --armor %r"
-
-# verify a key
-set pgp_verify_key_command="gpg --no-verbose --batch --fingerprint --check-sigs %r"
-
-# read in the public key ring
-set pgp_list_pubring_command="gpg --no-verbose --batch --with-colons --list-keys %r"
-
-# read in the secret key ring
-set pgp_list_secring_command="gpg --no-verbose --batch --with-colons --list-secret-keys %r"
-
-# receive key from keyserver:
-#set pgp_getkeys_command="wrap.sh -g %r"
-set pgp_getkeys_command=""
+++ /dev/null
-# System-wide personalization for Mutt
-######################################
-
-folder-hook "" set sort=threads
-folder-hook "!" set sort=mailbox-order
-folder-hook "=sent" set sort=mailbox-order
-folder-hook "=spam" set sort=mailbox-order
-folder-hook "=err" set sort=mailbox-order
-folder-hook "=input$" set sort=mailbox-order
-bind index \` next-unread
-bind pager \` next-unread
-bind index <Esc>\` previous-unread
-bind pager <Esc>\` previous-unread
-unset strict_threads
-set editor="vim -c 'set noai' -c 'set ts=8' -c 'set fileencoding=iso-8859-2' -c 'set fileencodings=iso-8859-2'"
-set send_charset="us-ascii:iso-8859-2:utf-8"
-set charset="iso-8859-2"
-set autoedit
-set auto_tag
-set history=100
-set include=yes
-unset metoo
-set mime_fwd
-set forward_format="Fwd: [%a] %s"
-set move=no
-set pager_context=1
-set pager_stop
-set pop_delete
-set record=+sent
-set reverse_alias
-set status_format="---%h:%f [%M %nN %tT %dD %lB]%>-%v---"
-#set web_browser="lynx %s"
-set pager_format="-%S- [%l lines, %c] %C/%T: %-20.20n %s"
-set status_on_top
-set fcc_clear
-set rfc2047_parameters
-unset save_empty
-set read_inc=1000
-set write_inc=1000
-unset confirmappend
-unset confirmcreate
-set reply_to=ask-yes
-set thorough_search
-set abort_unmodified=no
-set date_format="!%a, %d %b %Y %H:%M:%S %z" # RFC 2822: 3.3.
-# FIXME: %D not needed: RFC 2822: 3.3: "converted" can IMO incl. timezone
-# but %d will place +0000 for %z and thus brokes the timestamp
-set attribution="On %D, %n wrote:"
-
-
-# Mail command
-##############
-bind index \ca mail
-macro index M ":my_hdr X-Priority: 1\n:my_hdr Importance: high\n:set dsn_return=hdrs\n:set dsn_notify=failure,delay,success\n^a" "DSN and Priority-1 classed compose of a new mail message"
-macro index m ":unmy_hdr X-Priority Importance\n:unset dsn_return dsn_notify\n^a" "Standard compose of a new mail message"
-# quote 'macro' argument to prevent: macro: too many arguments
-folder-hook "" "macro index S \":unset wait_key\n:set pipe_split\n|/home/short/bin/razor-report\n:unset pipe_split\n:set wait_key\ns=spamo-mutt\n\""
-folder-hook "=spam" "macro index S \":unset wait_key\n:set pipe_split\n|/home/short/bin/razor-report\n:unset pipe_split\n:set wait_key\nWN\ct~T\n\""
-macro editor \ew "^a [WAS: ^e]^a"
-
-# GPG
-#####
-source /home/short/.muttrc-gpg.rc
-unset pgp_show_unusable
-set pgp_replyencrypt
-set pgp_replysignencrypted
-
-# Ignore headers
-################
-ignore received content- mime-version status x-status message-id sender
-ignore references return-path lines precedence x-authentication-warning
-ignore list-help list-subscribe list-unsubscribe list-post list-archive
-ignore x-mimetrack priority x-priority importance x-mime-autoconverted
-ignore x-accept-language resent-message-id x-sender x-antirelay
-ignore x-msmail-priority x-mimeole x-pop3-rcpt delivered-to
-
-# Colors
-########
-color hdrdefault brightcyan black
-color quoted cyan black
-color signature brightred black
-color indicator brightyellow red
-color error brightred black
-color status brightyellow blue
-color tree brightmagenta black # the thread tree in the index menu
-color tilde brightmagenta black
-color message brightcyan black
-color normal white black
-color attachment brightmagenta black
-color search black green # how to hilite search patterns in the pager
-color header brightyellow black ^(From|Subject):
-color body brightyellow black "(ftp|http)://[^ ]+" # point out URLs
-color body brightcyan black [-a-z_0-9.]+@[-a-z_0-9.]+ # e-mail addresses
-color underline brightgreen black
-mono header underline ^(From|Subject):
-mono quoted bold
+++ /dev/null
-default
- login anonymous password short@
- macdef init
- prom
- bi
- tick
-
+++ /dev/null
-%packager Jan Kratochvil <pgp-44FC7632@jankratochvil.net>
-%_signature gpg
-%_gpg_name %{packager}
-
-#%_usrsrc /home/lace/src
-#%_topdir %{_usrsrc}/rpm
+++ /dev/null
-
-#
-# Example of a user's .screenrc file
-#
-
-# This is how one can set a reattach password:
-# password ODSJQf.4IJN7E # "1234"
-
-# no annoying audible bell, please
-vbell on
-
-# detach on hangup
-autodetach on
-
-# don't display the copyright page
-startup_message off
-
-# emulate .logout message
-pow_detach_msg "Screen session of \$LOGNAME \$:cr:\$:nl:ended."
-
-# advertise hardstatus support to $TERMCAP
-# termcapinfo * '' 'hs:ts=\E_:fs=\E\\:ds=\E_\E\\'
-
-# make the shell in every window a login shell
-#shell -$SHELL
-
-# autoaka testing
-# shellaka '> |tcsh'
-# shellaka '$ |sh'
-
-# set every new windows hardstatus line to somenthing descriptive
-# defhstatus "screen: ^En (^Et)"
-
-defscrollback 1000
-
-# don't kill window after the process died
-# zombie "^["
-
-################
-#
-# xterm tweaks
-#
-
-#xterm understands both im/ic and doesn't have a status line.
-#Note: Do not specify im and ic in the real termcap/info file as
-#some programs (e.g. vi) will not work anymore.
-termcap xterm hs@:cs=\E[%i%d;%dr:im=\E[4h:ei=\E[4l
-terminfo xterm hs@:cs=\E[%i%p1%d;%p2%dr:im=\E[4h:ei=\E[4l
-
-#80/132 column switching must be enabled for ^AW to work
-#change init sequence to not switch width
-termcapinfo xterm Z0=\E[?3h:Z1=\E[?3l:is=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;4;6l
-
-# Make the output buffer large for (fast) xterms.
-termcapinfo xterm* OL=10000
-
-# tell screen that xterm can switch to dark background and has function
-# keys.
-termcapinfo xterm 'VR=\E[?5h:VN=\E[?5l'
-termcapinfo xterm 'k1=\E[11~:k2=\E[12~:k3=\E[13~:k4=\E[14~'
-termcapinfo xterm 'kh=\E[1~:kI=\E[2~:kD=\E[3~:kH=\E[4~:kP=\E[H:kN=\E[6~'
-
-# special xterm hardstatus: use the window title.
-termcapinfo xterm 'hs:ts=\E]2;:fs=\007:ds=\E]2;screen\007'
-
-#terminfo xterm 'vb=\E[?5h$<200/>\E[?5l'
-termcapinfo xterm 'vi=\E[?25l:ve=\E[34h\E[?25h:vs=\E[34l'
-
-# emulate part of the 'K' charset
-termcapinfo xterm 'XC=K%,%\E(B,[\304,\\\\\326,]\334,{\344,|\366,}\374,~\337'
-
-# xterm-52 tweaks:
-# - uses background color for delete operations
-termcapinfo xterm be
-
-################
-#
-# wyse terminals
-#
-
-#wyse-75-42 must have flow control (xo = "terminal uses xon/xoff")
-#essential to have it here, as this is a slow terminal.
-termcapinfo wy75-42 xo:hs@
-
-# New termcap sequences for cursor application mode.
-termcapinfo wy* CS=\E[?1h:CE=\E[?1l:vi=\E[?25l:ve=\E[?25h:VR=\E[?5h:VN=\E[?5l:cb=\E[1K:CD=\E[1J
-
-################
-#
-# other terminals
-#
-
-#make hp700 termcap/info better
-termcapinfo hp700 'Z0=\E[?3h:Z1=\E[?3l:hs:ts=\E[62"p\E[0$~\E[2$~\E[1$}:fs=\E[0}\E[61"p:ds=\E[62"p\E[1$~\E[61"p:ic@'
-
-# Extend the vt100 desciption by some sequences.
-termcap vt100* ms:AL=\E[%dL:DL=\E[%dM:UP=\E[%dA:DO=\E[%dB:LE=\E[%dD:RI=\E[%dC
-terminfo vt100* ms:AL=\E[%p1%dL:DL=\E[%p1%dM:UP=\E[%p1%dA:DO=\E[%p1%dB:LE=\E[%p1%dD:RI=\E[%p1%dC
-
-
-################
-#
-# keybindings
-#
-
-#remove some stupid / dangerous key bindings
-bind k
-bind ^k
-bind .
-bind ^\
-bind \\
-bind ^h
-bind h
-#make them better
-bind 'K' kill
-bind 'I' login on
-bind 'O' login off
-bind '}' history
-
-# Yet another hack:
-# Prepend/append register [/] to the paste if ^a^] is pressed.
-# This lets me have autoindent mode in vi.
-register [ "\033:se noai\015a"
-register ] "\033:se ai\015a"
-bind ^] paste [.]
-
-# Red Hat Hack^H^H^H^HPatch
-# This makes screen treat backspaces '^?' as
-# deletes. THere should be a fix in the code
-# for the way termcap inheritance works,
-# but I dont know where to put it, and this works.
-bindkey -d -k kb stuff \010
-# /Red Hat Patch
-
-
-################
-#
-# default windows
-#
-
-# screen -t local 0
-# screen -t mail 1 elm
-# screen -t 40 2 rlogin faui40
-
-# caption always "%3n %t%? @%u%?%? [%h]%?"
-# hardstatus alwaysignore
-# hardstatus alwayslastline "%w"
-
-# bind = resize =
-# bind + resize +1
-# bind - resize -1
-# bind _ resize max
+++ /dev/null
-random_seed
-identity
-identity.pub
+++ /dev/null
-Host localhost
-#Cipher none
-Compression no
-User lace
-
-Host ats-casablanca
-HostName localhost
-Port 5000
-HostKeyAlias ats-casablanca
-User root
-
-Host charlie
-HostName charlie.karlovo.cz
-User root
-Host charlie.karlovo.cz
-User root
-
-Host gulz
-HostName gw.gulz.cz
-User root
-
-Host *sourceforge.net
-User kratochvil
-CompressionLevel 3
-
-Host chip.ms.mff.cuni.cz
-User krbu
-
-Host *.ms.mff.cuni.cz
-User jkra7289
-
-Host vega.fjfi.cvut.cz
-User jkratoc
- # unable to get .ssh2/authorization working
-Protocol 1,2
-
-Host *
-User short
-Compression yes
-CompressionLevel 9
-ForwardAgent yes
-ConnectionAttempts 1
-UsePrivilegedPort no
-UseRsh no
-RhostsRSAAuthentication no
-ForwardX11 no
+++ /dev/null
-dolly.vellum.cz,212.47.3.251 1024 37 138791998207279898434469195531993696771197233245266407852430313913479890103579363266072768449275026746822584251774202659607740837631698034058688929589254456991421226027963130041301374278809448176473468889344062887404930122657580936940462583118289931108542189961250755443433859803521510534865682982643282832731
-gw.gulz.cz,195.122.203.142 1024 35 135364793082266512921406037629590300568279387490052843661759526148733668526118969914146129456303677835707885835653952179475275737260812078317099451692802227460674020789936323691837715529893620395732244566615075055668298007328146465273581235766144559562569276379844551503955237635249140122399767828180220522989 gw.gulz.cz,trust=myself
-pauline.vellum.cz,paulina.vellum.cz,62.80.83.38,vellum.cz 1024 35 128736891967663456843937232449883442680197430748569172924302860185874589791226160373914068190792558929295400299058173258177275633082013606779430804389625236339278514177089029301846840082591660557477118867559942034629342207458140606760283098486400756437853576680698537779210962825291939606454153541459843721519
-k332.feld.cvut.cz,147.32.192.12 1024 37 117516146723079458678792649759633894007180076623668590112947499227207482017096669134437658187817723332484576398106392494872938279934798308925406960886127098390438106585339931975874538084019436751801581216372894343901776394737509078289816194337477157788917073245446938373140820078756652260764320164461825139329
-atrey.karlin.mff.cuni.cz,195.113.31.123 1024 35 171494489114704804489937836899063594522165591418445971049330410181037796853942196958784072850905002305882758269332595000055140034347448855223668154222226396828334966941438962831598055463856100259017675926349053928040776737590079039002405696028405745532343666916791300726526431133754689011844482240827420709169
-tangens.sinus.cz,195.39.17.8 1024 35 134115155585071696734908622315877129440852741670693684053815996110048758959456977119637426273337197428404944531846322547840015549108002670295479982733436711859051400684273685067066152421600310038567652069066014270729150070204826559099539186002496166159521987470670459688779845745629711129639839672747147096111
-vega.fjfi.cvut.cz,147.32.6.28 1024 37 109296915745315616559548935619796620109600686026481555916542984628075067361013841335722770051982997404005155435366287427344535737063226964493989953586185567196127860546226645489431848537063840907341666143391790164287815816776464624430364622512347593810143368014845617929234046563489235552296628783714055537963
-dolly.vellum.cz,194.228.51.220 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEAxav7/zTNiWjoKwH5Mj9EHmHz41RjmVJCEVkAd8faUGaQst7eY3etWJmYbU7Vxa0nReQxoJ8lkKPnM9G25nNYaTlT6SAkyiiQ/K2w7IVlq8SFLOH8W1ENlEKTIjKfzBRJj2fovDqvFmFTxWCG5HMSJhEbOzITKICRak6J2P/1ux8=
-212.24.139.3 1024 35 130431664629083743305113242473417789395061335400285624668953070312006337920867049492032400943748274357633030092660434262072683701354908156796084118992918742223899909328144941868618408113911594850764878578385526881571710615417228667099217492545201898958836439798158993748143703721014839058581355595051109159333
+++ /dev/null
-gw.gulz.cz,195.122.203.142 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEAvYPqUENFvSt6yeMyeYqVp3S6a2/2dO7T8HIPq07A4L0Lfvo1L4oL482lawaCbgmMHYO02WhynQERJxBRZ/gbYtE3qX3JZIujxUh7YnrbSEVrMOCM8MChnJbmpRe3h+QBKf44aJkjC+1FUULL7pcOIZkV/if/aJeQKs2zveBjN/c= gw.gulz.cz,trust=myself
-dolly.vellum.cz,212.47.3.251 ssh-dss AAAAB3NzaC1kc3MAAACBAM3SjR9le01wZr1kVbN3Ns3nWHO/IG4nisYa8hTkIVKSYyxjjWPC8B/IOIheoJTsfkQ6xgem6OPHHe/07/WcFJ5uasLiunoXeHa8rMyUN6gb7KXm4Fl+h0hQMGQMGRJ3jLW0Z0aduoRqDo1XApHWiP4lYwCC4MUyeEp0JydPWlexAAAAFQClIR51S9gcA5XNZ99xRHHH2kFtPQAAAIEAt09Ch9F0MaRABPe+K8Uruz+srOfqPTXSMDkieUYo/sWQrSvdyn1508mtXSNts+Qjok4XIVVw+j/Iz/dL4eDZg00qaNgLH6W5pVjXcwU8qki+Ihg2LG+lWPJbhZlqVc0LihrLiurGAHEbrAjLBY2jw3TFK7SaaYIgR83aZ16fpD0AAACBAKOp0QT42feGOG0nDsi5V6RrmEjCG0YxV3OwZOkzcoQykeLfJoCFFiVbgCKmF/1QrIcmKsABl9R0NpYvOd7aoF8N3u/u7ZZdV29aTBYuRJITcgZdvnhSgs0u5qErpZ61m2JjmMEsINwN84C3DSXrIfqGUf8mLy9AcTYGzm0nw89+
-vega.fjfi.cvut.cz,147.32.6.28 ssh-dss AAAAB3NzaC1kc3MAAACBAKFqj+f9fUI7SprmIEdiRNb33+Y8s9qaIrI8ZPseponpnVipsygo7hqbAhdJfXYnN7Y/WkGNb3AWbcaE5gPoIspOEwvP1uzUyDv7kzw4F1qAomMbW6ne1bRanIMErpWmd7J7MnESwTL8jz9bEASPy3pu11TDTeg0ftCxAf0m+8t7AAAAFQCBttEgSu5DZfQDEFUgl0fjUDU/FQAAAIAWrd5gtjpQfwy1MEuZx8m2VELj/+UQ0S9LyvU+oGlzPcEJwsEjWcWJ+CP++sB0OBJFuF8hqE81zVmzzYGMNl4LdqSqwsbuSazBRVulHbGhHLrZOaXmFWcg958DHQYH4OxqOZCZKu48cPd5cwdtZ+aHkXowj7CXNZwuIzp7sIKqZQAAAIBcxk0X8ry2wH6F0k4G2Ang0Usxjthtp64lzObrz9NPaMGwFtoBuct9SsDdkguIGWF9f597iTvScfrqmam+CkhmPe9uK+ih6dlVW4wjEeAS5F/kWCysSu95+YSGMes9ysprRIOnaZ0NqudnmY/qHEdJn5J3yJQyt8p89ywbCEc9fw==
-atrey.karlin.mff.cuni.cz,195.113.31.123 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEA3m5J2NUk4+DSVk4p29I/ecHOilXd2QvMbSl3+dROh5N5tbWcHR077RLcWvyOhfgmZ6qAalN9t8tOE/AWXBEUxkNj91R1cVQCTLVqNKYA9HKO1zjkLHACAn7yhgMnwQiIoWNjIx6O8n9rjX51Ud5KOlTxY45TDtyvdnNzXlQ0SZ0=
-paulina.vellum.cz,pauline.vellum.cz,62.80.83.38,vellum.cz ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEA3Xob2TBjGKjOFKcSqke5nZD2XWO4YdDRKbzq9vu4yE4LJgYTFDV9dtv69ZCZJGWdDsbqGNNuFgEAnFE8u05XmpyFBFAqbE9W80Dcxna+Gsoj3bTZLhk7ZXX5HCZbNbT7Db76ANRc8jU3o1w1/gkPWSt/RLNQT7x7rxLX7XwI750=
-tangens.sinus.cz,195.39.17.8 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEAxMphMtLFs2Y17Q6LullXwgMtA39BORogb0U9FukVxdy3fkp9PY+CJi7//7InITcKWVXEGFAkcG0F4Fe0wSYk7z+58SwZOr17gFiU4AMv8OF0Kq+gWDQYVafo0aClQM4nlUAMEMx+BHvNDVYUbMPksj6RpBCrvG2PUnVULlL/5h0=
-cindy.vellum.cz,195.144.124.19 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEAvp/yjJeZILi5rISz9BR38xYkxYqBCUvQ/8iv/EkliizBrbTxkGMqo+HGDw5p7C/LUsBCBbLaOJ1xs5qcR55Ndm49/lRWDknOa7M90GaipLn5OMXamQrhuagQxP2xZJ4+zqzf8t1AYqlEMdx53XSBHRmhpqkD0er8+02zyTbFV5E=
-rallye.panda.cz,217.11.227.56 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEAxFaLaa/pLDVw/jXmkzBIdaZNJowfUJ19bB1dInGJpd4Ji8vGUMGeNLUTEb2xo7AqnHC6hc6f38ub6Q6of7MxEorFLH1SRsYSt2SkUHhJTddJnJHP7fbZUFxm6MhEbDkB109ecUCZpF3SEWqlCosK7kBCXTgawJuQP4P6xVX2QQ8=
-gw.jklabs.cz,195.144.102.46 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEAy6hLRrIbDATf1nlDmX1SlefKJC4r++tQgVHkfu/Bf0pg6UddI6fEd0zqKSAbXTIXWexcgtdz38NXX8HCqoiQo4GIkT0RcThJOK2oa3g2bvwqo3vDeuEvB30yZkJKHqoU6vKTHZDeMmk6ir1wXQb6ypLLQt0prCAzq3CkunZuwVE=
+++ /dev/null
-/* $Id$ */
-
-html,html>head,html>body {
- padding: 5px !important;
- border-style: none !important;
- margin: 0px !important;
- }
-
-html,html>head,html>head *,html>body,html>body * {
- background-attachment: scroll !important;
- background-image: none !important;
- background-color: black !important;
- color: white !important;
- border-color: gray !important;
- position: static !important;
- left: 0px !important;
- top: 0px !important;
- right: 0px !important;
- bottom: 0px !important;
-/* It would prevent any tables formatting:
- width: auto !important;
- height: auto !important;
-*/
-/* It would display all the intentionally hidden content:
- display: inline !important;
-*/
- text-indent: 0px !important;
- }
-
-html * li {
- color: yellow !important;
- }
-
-/* FIXME: http://www.hyway.com.au/747/747.html
- * "UPDATED 15/04/2002" still blinks
- * although "747 SIMULATOR MESSAGE BOARD" no longer blinks.
- */
-html * blink {
- text-decoration: none !important;
- }
-
-html * input,html * select,html * textarea {
- background-color: navy !important;
- padding: 1px !important;
- border-style: solid !important;
- border-width: 1px !important;
- margin: 1px !important;
- }
-html * input *,html * select *,html * textarea * {
- background-color: navy !important;
- }
-
-html *:link { color: #f44 !important; } /* unvisited links */
-html *:visited { color: #44f !important; } /* visited links */
-/* See: http://bugzilla.mozilla.org/show_bug.cgi?id=256477
- * bugreported by Timo Lindfors timo.lindfors of iki.fi
- *
-html *:hover { color: yellow !important; } * user hovers *
-html *:active { color: lime !important; } * active links *
-*/
+++ /dev/null
-if !exists("g:_kratochvil_vimrc")
- let g:_kratochvil_vimrc=1
-
-autocmd! filetypedetect
-autocmd! gzip BufRead
-autocmd! gzip BufWritePost
-autocmd! gzip FileAppendPost
-autocmd! gzip FileAppendPre
-autocmd! gzip FileReadPost
-autocmd! gzip FileWritePost
-"remove 'set tw=78':
-autocmd! BufRead *.txt
-
-"autocmd * * echo "test"
-
-"startup read existing file: BufReadPre BufReadPost BufEnter VimEnter
-"command read non-existing file: BufCreate BufNewFile BufEnter
-"immediate switch to existing file: BufReadPre BufReadPost BufEnter
-"immediate switch to non-existing file: BufNewFile BufEnter
-
-autocmd BufCreate,VimEnter * let g:BufEnter_ts= 8
-autocmd BufCreate,VimEnter */home/{short,kratochvil,root}/{src,WWW}/* let g:BufEnter_ts= 2
-autocmd BufCreate,VimEnter */home/{short,kratochvil,root}/src/*gnokii*/* let g:BufEnter_ts= 8
-autocmd BufCreate,VimEnter *.{i{,.as},s} let g:BufEnter_ts=20
-autocmd BufEnter * call BufEnter()
-autocmd VimEnter * call BufEnter()
-set runtimepath=.,$VIMRUNTIME
-function BufEnter()
- if exists("g:BufEnter_ts")
- let &ts=g:BufEnter_ts
- let &sw=g:BufEnter_ts
- unlet g:BufEnter_ts
-
- set autoindent
- set nocindent
- set nosmartindent
- set indentexpr=
-
- runtime! ./../../../../../../../../../../../.vimrc ./../../../../../../../../../../.vimrc ./../../../../../../../../../.vimrc ./../../../../../../../../.vimrc ./../../../../../../../.vimrc ./../../../../../../.vimrc ./../../../../../.vimrc ./../../../../.vimrc ./../../../.vimrc ./../../.vimrc ./../.vimrc ./.vimrc
- endif
-endfunction
-
-set encoding=utf-8
-set termencoding=iso-8859-2
-" fileencoding is detected from fileencodings, first one for empty files
-set fileencodings=utf-8,iso-8859-2
-
-ca X x
-syntax off
-set noerrorbells
-set ruler
-set ignorecase
-set nobackup
-set nowritebackup
-set exrc
-set nostartofline
-set nohlsearch
-set fo=tcq
-set viminfo='100,\"1000,:100,/40
-set tags=./tags,./TAGS,./../tags,./../TAGS,./../../tags,./../../TAGS,./../../../tags,./../../../TAGS,./../../../../tags,./../../../../TAGS,./../../../../../tags,./../../../../../TAGS,./../../../../../../tags,./../../../../../../TAGS,./../../../../../../../tags,./../../../../../../../TAGS,./../../../../../../../../tags,./../../../../../../../../TAGS,./../../../../../../../../../tags,./../../../../../../../../../TAGS,./../../../../../../../../../../tags,./../../../../../../../../../../TAGS,./../../../../../../../../../../../tags,./../../../../../../../../../../../TAGS,./reactos/tags,./../reactos/tags,./../../reactos/tags,,./../../../reactos/tags,./../../../../reactos/tags,./../../../../../reactos/tags,./../../../../../../reactos/tags,./w32/inc/tags,./../w32/inc/tags,./../../w32/inc/tags,,./../../../w32/inc/tags,./../../../../w32/inc/tags,./../../../../../w32/inc/tags,./../../../../../../w32/inc/tags,./../../../../../../../w32/inc/tags,/usr/src/redhat/BUILD/tags,/usr/src/redhat/BUILD/TAGS,/usr/include/tags,/usr/include/TAGS
-
-noremap <Esc>p :set invpaste paste?<cr>
-noremap <Esc>l :set invlist paste?<cr>
-noremap <Esc>q @q
-noremap <Esc>: @:
-noremap <Esc>N :next<cr>zz<C-g>
-noremap <Esc>B :cn<cr>zz<C-g>
-noremap <Esc>P :prev<cr>zz<C-g>
-noremap <Esc>O :cp<cr>zz<C-g>
-noremap <Esc>g "myiw:grep<Space>-rw<Space>'<C-r>m'<Space>.
-noremap <C-]> <C-]>zz<C-g>
-noremap <C-t> <C-t>zz<C-g>
-noremap <C-d> G:r !date '+\%H:\%M:\%S-'<cr>kA
-noremap <Esc>d :set hlsearch<cr>/^[+-]\([^+-].*\\|\)$<cr>
-noremap <Esc>D :set hlsearch<cr>/^[+-][+-]\([^+-].*\\|\)$<cr>
-noremap <Esc>w 0i <Esc>/[^ ]<cr>vf.h"kyf./[^ ]<cr>vf.h"ly0x:r !date -d "`date '+\%Y'`-<C-r>l-<C-r>k" '+\%u'<cr>yypkV:!tr '1234567' 'PUSCPSN'<cr>jV:!tr '1234567' 'otttaoe'<cr>kJxv0xk0llllllplxxjddk0
-noremap * :let ic_save=&ic<cr>:set noic<cr>*:let &ic=ic_save<cr>
-noremap # :let ic_save=&ic<cr>:set noic<cr>#:let &ic=ic_save<cr>
-
-endif "!exists("g:_kratochvil_vimrc")
+++ /dev/null
-#
-# sample configuration file for weblint
-# distributed as part of weblint 1.020
-#
-# The settings in this file reflect the built-in defaults.
-# I.e. if a warning is enabled in this file, then it is enabled by
-# default, and you don't have to enable it in your .weblintrc.
-#
-
-#========================================================================
-# Global Configuration File
-#========================================================================
-#
-# Weblint supports a local site configuration file.
-# If one is set up, then you can specify it be included with the following:
-#
-# use global weblintrc
-#
-
-#========================================================================
-# Weblint Variables
-#========================================================================
-
-#
-# message-style: style of warning message to generate
-# lint generate warnings similar to traditional lint:
-# file(line #): warning
-# this is the default
-# short don't include the filename in the warning message:
-# line #: warning
-# terse a style which is easy for another program to parse:
-# file:line #:warning-identifier
-
-set message-style = lint
-
-#
-# url-get: a program which can be used to retrieve a URL
-#
-
-set url-get = lynx -source
-
-#
-# directory-index: list of filenames for directory indices
-#
-# If your server supports multiple index file names:
-# set directory-index = index.html, welcome.html
-#
-
-set directory-index = index.html
-
-#
-# file-extensions: list of filename extensions for valid HTML filenames
-#
-# A comma-separated list of filenames extensions; these are used when
-# recursing in a directory, to decide which files should be checked.
-#
-
-set file-extensions = html, htm
-
-#========================================================================
-# Extensions
-#========================================================================
-
-#------------------------------------------------------------------------
-# Allow Netscape HTML extensions, such as CENTER and FONT
-#------------------------------------------------------------------------
-# uncomment following line to enable the Netscape extensions
-# extension Netscape
-
-#------------------------------------------------------------------------
-# Allow Microsoft HTML extensions, such as MARQUEE
-#------------------------------------------------------------------------
-# uncomment following line to enable the Microsoft extensions
-# extension Microsoft
-
-
-#========================================================================
-# Weblint Warnings
-#========================================================================
-
-#------------------------------------------------------------------------
-# By default, when recursing in a directory, weblint will check files
-# which are symlinks. Uncomment the following line if you want weblint
-# to skip symlinks. This is equivalent to the -l command-line switch
-#------------------------------------------------------------------------
-# ignore symlinks
-
-#------------------------------------------------------------------------
-# There are two checks for the case of element tags:
-# upper-case all tags should be in upper case
-# lower-case all tags should be in lower case
-# If both are disabled, then case is ignored
-#------------------------------------------------------------------------
-disable upper-case lower-case
-
-#------------------------------------------------------------------------
-# Bad style to use `here' as anchor text
-#------------------------------------------------------------------------
-enable here-anchor
-
-#------------------------------------------------------------------------
-# Flag any elements which are not recognized. This will catch mis-typed
-# elements (e.g. <TOTLE>, or <\BODY>).
-#------------------------------------------------------------------------
-enable unknown-element
-
-#------------------------------------------------------------------------
-# check element attributes to see if they are legal
-#------------------------------------------------------------------------
-enable unknown-attribute
-
-#------------------------------------------------------------------------
-# flag if no HEAD element in page
-#------------------------------------------------------------------------
-enable require-head
-
-#------------------------------------------------------------------------
-# Flag elements which should only appear once on a page (eg TITLE)
-#------------------------------------------------------------------------
-enable once-only
-
-#------------------------------------------------------------------------
-# Flag case where page has BODY element, but no HEAD defined
-#------------------------------------------------------------------------
-enable body-no-head
-
-#------------------------------------------------------------------------
-# If you want outer element to be <HTML>
-#------------------------------------------------------------------------
-enable html-outer
-
-#------------------------------------------------------------------------
-# Flag elements which are only allowed to appear in HEAD element
-#------------------------------------------------------------------------
-enable head-element
-
-#------------------------------------------------------------------------
-# Flag elements which aren't allowed to appear in HEAD element
-#------------------------------------------------------------------------
-enable non-head-element
-
-#------------------------------------------------------------------------
-# Flag obsolete elements, such as XMP and LISTING
-#------------------------------------------------------------------------
-enable obsolete
-
-#------------------------------------------------------------------------
-# Flag mis-matched begin and end tags; for example:
-# <H1> ... </H2>
-#------------------------------------------------------------------------
-enable mis-match
-
-#------------------------------------------------------------------------
-# Flag any IMG elements which don't have ALT text defined.
-#------------------------------------------------------------------------
-enable img-alt
-
-#------------------------------------------------------------------------
-# Flag illegally nested elements (such as anchors).
-#------------------------------------------------------------------------
-enable nested-element
-
-#------------------------------------------------------------------------
-# Check for those elements which have required context.
-# For example, the <CAPTION> element can only appear in <FIG> or <TABLE>
-#------------------------------------------------------------------------
-enable required-context
-
-#------------------------------------------------------------------------
-# Check for mailto: LINK in header; for example:
-# <LINK REV=MADE HREF="mailto:neilb@cre.canon.co.uk">
-# This lets at least lynx users comment on a page.
-#------------------------------------------------------------------------
-disable mailto-link
-
-#------------------------------------------------------------------------
-# Flag overlapped elements. For example:
-# <A HREF="..."> <B> text </A> </B>
-#------------------------------------------------------------------------
-enable element-overlap
-
-#------------------------------------------------------------------------
-# Generate a warning if closing tag is not seen for elements where
-# it is expected. A common case is <A NAME="..."> ... </A>.
-#------------------------------------------------------------------------
-enable unclosed-element
-
-#------------------------------------------------------------------------
-# Generate a warning if markup appears inside a comment. This can
-# confuse quite a few browsers, so it's not a good idea to do it.
-#------------------------------------------------------------------------
-enable markup-in-comment
-
-#------------------------------------------------------------------------
-# You are not allowed to have any whitespace between the opening
-# < and element name.
-#------------------------------------------------------------------------
-enable leading-whitespace
-
-#------------------------------------------------------------------------
-# Flag potentially unclosed tags:
-# < ... < ... >
-#------------------------------------------------------------------------
-enable unexpected-open
-
-#------------------------------------------------------------------------
-# Elements which do not have any required attributes, but for which at
-# least one attribute is expected. Anchors, for example.
-#------------------------------------------------------------------------
-enable expected-attribute
-
-#------------------------------------------------------------------------
-# Required element attributes. Eg IMG tag must have SRC attribute.
-#------------------------------------------------------------------------
-enable required-attribute
-
-#------------------------------------------------------------------------
-# Currently just checks local links, to see if target file exists.
-# disabled at the moment, since it generates bogus warnings if the file
-# path included directories.
-#------------------------------------------------------------------------
-disable bad-link
-
-#------------------------------------------------------------------------
-# Check for headings which are more than 1 level deeper than previous.
-# Example: <H1> followed by <H3>
-#------------------------------------------------------------------------
-enable heading-order
-
-#------------------------------------------------------------------------
-# Check for odd number of double quotes in tag, to catch things like:
-# <A HREF="url >
-#------------------------------------------------------------------------
-enable odd-quotes
-
-#------------------------------------------------------------------------
-# Warn about closing tag for elements which don't take a closing tag.
-# For example: <IMG SRC="foo.gif" ALT="alt text"></IMG>
-#------------------------------------------------------------------------
-enable illegal-closing
-
-#------------------------------------------------------------------------
-# Warn about unclosed comments. For example:
-# <!-- this comment is not correctly closed >
-# Legal SGML comments are:
-# <!-- ... blah blah ... -->
-#------------------------------------------------------------------------
-enable unclosed-comment
-
-#------------------------------------------------------------------------
-# Warning for use of physical font markup, rather than logical
-# For example:
-# <B> where you should use <STRONG>
-# <I> where you should use <EM>
-# <TT> where you should use <CODE>, <KBD>, <VAR>, or <SAMP>
-#------------------------------------------------------------------------
-disable physical-font
-
-#------------------------------------------------------------------------
-# Warning for repeated attributes within the same tag. For example:
-# <IMG SRC="foo.gif" SRC="bar.gif">
-# <A NAME="fred" NAME="bloggs">
-#------------------------------------------------------------------------
-enable repeated-attribute
-
-#------------------------------------------------------------------------
-# Warn against use of ' as a delimiter for attribute values. E.g.:
-# <A HREF='http://www.cre.canon.co.uk/'>Canon Research Centre</A>
-#------------------------------------------------------------------------
-enable attribute-delimiter
-
-#------------------------------------------------------------------------
-# Warn about attributes on a closing tag of container element. E.g.:
-# <A HREF="foobar.html">click here!</A NAME="foobar">
-#------------------------------------------------------------------------
-enable closing-attribute
-
-#------------------------------------------------------------------------
-# When recursing in a directory, check whether there is a directory
-# index file. See also the variable `directory-index', which specifies
-# the name of index file to look for.
-#------------------------------------------------------------------------
-enable directory-index
-
-#------------------------------------------------------------------------
-# Warn about empty container elements. For example:
-# <TITLE></TITLE>
-#------------------------------------------------------------------------
-enable empty-container
-
-#------------------------------------------------------------------------
-# Warn about situations where one element is expected to immediately
-# follow another, with no tags or text between. For example:
-# 1) LH should be the first thing in a UL, if it appears at all
-# 2) should be nothing between </HEAD> and <BODY>
-#------------------------------------------------------------------------
-enable must-follow
-
-#------------------------------------------------------------------------
-# Warn about IMG elements which don't have the WIDTH and HEIGHT
-# attributes set. Setting these attributes can improve page layout speed
-# on some browsers.
-#------------------------------------------------------------------------
-disable img-size
-
-#------------------------------------------------------------------------
-# Warn about leading or trailing whitespace for certain container
-# elements: A, TITLE, H1 through H6.
-#------------------------------------------------------------------------
-disable container-whitespace
-
-#------------------------------------------------------------------------
-# Warn if you don't have a DOCTYPE element as the first thing in
-# your document.
-#------------------------------------------------------------------------
-disable require-doctype
-
-#------------------------------------------------------------------------
-# Warn if you a metacharacter is included literally, rather than using
-# the appropriate entity. Currently this just warns about use of >,
-# in which case you should use >
-#------------------------------------------------------------------------
-enable literal-metacharacter
-
-# ========================================================================
-# Warnings added in the 1.014 release
-# ========================================================================
-
-#------------------------------------------------------------------------
-# Warn if a heading is closed with a different level close tag than
-# the heading was opened with. For example:
-# <H2>... blah blah ...</H1>
-#------------------------------------------------------------------------
-enable heading-mismatch
-
-#------------------------------------------------------------------------
-# Warn if text is seen in unexpected context, such as inside a UL element
-# (rather than inside an LI, which is inside a UL. Or in the HEAD element.
-#------------------------------------------------------------------------
-enable bad-text-context
-
-#------------------------------------------------------------------------
-# Warn about illegal attribute values, such as values in the wrong format.
-#------------------------------------------------------------------------
-enable attribute-format
-
-# ========================================================================
-# Warnings added in the 1.015 release
-# NOTE: the netscape-markup and netscape-attribute warnings
-# were deleted with the 1.015 release
-# ========================================================================
-
-# uncomment the following line if using the Microsoft HTML extensions
-# extension Microsoft
-
-#------------------------------------------------------------------------
-# Warn if using extended markup without an appropriate extension enabled.
-# This warning replaces the 'netscape-markup' warning, and is now generated
-# if the page uses Netscape or Microsoft extensions.
-#------------------------------------------------------------------------
-enable extension-markup
-
-#------------------------------------------------------------------------
-# Warn if using extended attributes without an appropriate extension enabled.
-# This warning replaces the 'netscape-attribute' warning, and is now generated
-# if the page uses Netscape or Microsoft attributes.
-#------------------------------------------------------------------------
-enable extension-attribute
-
-
-# ========================================================================
-# New stuff in the 1.016 release
-# ========================================================================
-
-#------------------------------------------------------------------------
-# Warn of the document TITLE is longer than 64 characters.
-# This limit is recommended by the HTML specification
-#------------------------------------------------------------------------
-enable title-length
-
-#------------------------------------------------------------------------
-# Warn about a heading inside an anchor. Should be the other way round;
-# i.e. an anchor inside a heading.
-#------------------------------------------------------------------------
-enable heading-in-anchor
-
-#------------------------------------------------------------------------
-# Warn about use of < inside the PRE element. This is just a special
-# case of the `literal-metacharacter' warning.
-#------------------------------------------------------------------------
-enable meta-in-pre
-
-#------------------------------------------------------------------------
-# Warn about attribute values which should be quoted, but aren't.
-# Attribute values should be quoted if they contain characters
-# other than [-.A-Za-z0-9]
-#------------------------------------------------------------------------
-enable quote-attribute-value
-
-
-# ========================================================================
-# New stuff in the 1.020 release
-# ========================================================================
-
-#-- no new warnings or variables added in 1.020
-
+++ /dev/null
-unmime
-flock
-nmap
-hexedit
-ghortident
-rmd160
-urlencode
-webcopy
-weblint
-cvs
-
-python2.1
-python
-pydoc
-
-grep
-egrep
-fgrep
-
-ldconfig-docache
-
-iconv
-mutt
-pgpring
-pgpewrap
-
-perl
-perl5.6.1
-a2p
-c2ph
-h2ph
-h2xs
-perlbug
-perldoc
-pl2pm
-splain
-perlcc
-dprofpp
-s2p
-pod2man
-find2perl
-pod2html
-pod2latex
-pod2text
-pod2usage
-podchecker
-podselect
-pstruct
-
-GET
-lwp-mirror
-lwp-request
-lwp-download
-lwp-rget
-HEAD
-POST
-
-xmlwf
-yapp
-pngtogd
-pngtogd2
-gdtopng
-gd2topng
-gd2copypal
-gdparttopng
-webpng
-bdftogd
-xpath
-dbiproxy
-dbish
-xql.pl
-ttree
-tpage
-
-php
-phpextdist
-phpize
-php-config
-pear
+++ /dev/null
-#! /bin/sh
-exec formail -s <$HOME/www/4c.jankratochvil.net/list-folder $HOME/www/www.jankratochvil.net/phorum/scripts/phorummail forum=1
-
-#exec $HOME/bin/From-split.perl <$HOME/www/4c.jankratochvil.net/list-folder "$HOME/www/www.jankratochvil.net/phorum/scripts/phorummail forum=1"
+++ /dev/null
-#! /bin/sh
-tail -n5000 `echo *,v|sed 's/,v//g'`|grep -v '^#'|less
+++ /dev/null
-#! /usr/bin/perl -w
-use strict;
-use vars qw/$cmd/;
-
-$/="\nFrom ";
-$|=1;
-while (<STDIN>) {
- s/^From //s;
- s/From $//s;
- $_="From ".$_;
- $cmd=$ARGV[0];
- $cmd=~s/%/$./;
- open(OUT,"|".$cmd.";cat >/dev/null") or die "Cannot open $cmd";
- print OUT $_ or die "Cannot write";
- close(OUT) or die "Cannot close";
- print STDOUT ".";
- }
-print STDOUT " done.\n";
+++ /dev/null
-#! /bin/bash
-exec passg "$0" "$@"
+++ /dev/null
-#! /bin/sh
-#max of max is 999!
-max=310
-umask 077
-exec &>~/priv/centrum.log
-cd ~
-rm -rf ~/centrum
-mkdir ~/centrum
-cd ~/centrum
-i=1
-last=
-while [ $i -le $max ];do
- j="`echo -n 000$i|tail -c 3`"
- echo -n "$j: `date` - "
- lynx -auth short:`cat ~/priv/centrum.pwd` -reload -source 'http://hazard.centrum.cz/~short~eb3c8f5deb72db253053b59290c804d9/hry/bandita_code.phtml' >$j.html
- date
- now="`sed -n 's/^.*Kredity.*VALUE="\([0-9]*\)".*$/\1/p' <$j.html`"
- if [ "$now" = "$last" ];then break;fi
- last="$now"
- sleep 17
- i=$[$i+1]
- done
-echo -n "Termination: "
-if [ $i -gt $max ];then echo "max $max credits exceeded."
-else echo "Count "$last" matched on file $j.html."
-fi
-echo "Current credits: $last"
-tar cf - *|bzip2 -v >~/priv/centrum.tar.bz2
-cd ~
-rm -rf ~/centrum
+++ /dev/null
-#! /usr/bin/perl
-
-use strict;
-use warnings;
-use Cwd;
-use Data::Dumper;
-use Getopt::Long;
-
-
-my(%symtab)=();
-
-my $D;
-my $opt_nm="nm";
-my $opt_headers=1;
-die if !GetOptions(
- "d|debug+",\$D,
- "nm=s" ,\$opt_nm,
- "headers!",\$opt_headers,
- );
-
-
-sub defmiss
-{
-my($ref,$missval,$sub)=@_;
-
- $$ref=$missval if !defined $$ref;
- &{$sub}($ref);
-}
-
-sub addsymtype
-{
-my($slot,$type,$symref)=@_;
-
- defmiss(\$slot,{},sub {
- my($typeref)=@_;
- push(@{$$$typeref{$type}},$symref);
- });
-}
-
-sub storesym
-{
-my(%sym)=@_;
-
- $sym{"fn_c"}=~s#^$ENV{PWD}/#./# if defined $sym{"fn_c"};
- defmiss(\$symtab{$sym{"name"}},{},sub {
- my($slotref)=@_;
- my($type)=$sym{"type"};
- addsymtype($$slotref,$type,\%sym);
- addsymtype($$slotref,$type,\%sym)
- if ($type!~/nU/ && ($type=~s/(n)[[:upper:]]/$1+/ || $type=~s/(n)[[:lower:]]/$1-/));
- });
-}
-
-open(NM,"-|",'find -name "*.o"|xargs -- '.$opt_nm.' -f posix --print-file-name --no-sort --line-numbers')
- or die "Cannot get nm output: $!";
-while (<NM>) {
- chomp;
- die "Line $. of nm output not recognized: $_"
- # $1 $2 $3 $4
- if !/^([^:]*):\s*(\S*) (\w) [^\t]*(?:\t(.*))?$/;
- storesym(
- "fn_o"=>$1,
- "name"=>$2,
- "type"=>"n$3",
- "fn_c"=>$4,
- );
- }
-close NM;
-
-if ($opt_headers) {
- open(CTAGS,"-|",'find -name "*.h"|xargs ctags -f - --c-types=xp')
- or die "Cannot get ctags output: $!";
- while (<CTAGS>) {
- chomp;
- die "Line $. of ctags output not recognized: $_"
- # $1 $2 $3
- if !/^([^\t]*)\t([^\t]*)\t.*\t(\w)$/;
- storesym(
- "name"=>$1,
- "fn_c"=>$2,
- "type"=>"c$3",
- );
- }
- close CTAGS;
- }
-
-print Data::Dumper->Dump([\%symtab],["%symtab"]) if $D;
-
-sub dumpsyms
-{
-my($error,@arr)=@_;
-
- print("$error ".$arr[0]{"name"}.($arr[0]{"type"}=~/cp|n[tT]/ ? "()" : "").":\n");
- my($symref);
- while ($symref=shift(@arr)) {
- print("\t");
- if (defined($$symref{"fn_c"})) {
- print($$symref{"fn_c"});
- print("\t(".$$symref{"fn_o"}.")") if defined $$symref{"fn_o"};
- }
- else {
- my($fn)=$$symref{"fn_o"};
- $fn=~s/\.o$/.c/;
- print($fn);
- }
- print("\n");
- }
-}
-
-sub refendef
-{
-my($ref)=@_;
-
- return [] if !defined($ref);
- return $ref;
-}
-
-my($symname);
-foreach $symname (sort keys %symtab) {
- my($typesref)=$symtab{$symname};
- my($ref,$ref1,$ref2);
-
-# >=2 n[:upper:]\U symbols => global conflict
- if (@{refendef($ref=$$typesref{"n+"})}>=2) {
- dumpsyms("global conflict",@{$ref});
- }
-
-# >=1 n[:upper:]\U symbol && >=1 n[:lower:] symbol => local override
- if (@{refendef($ref1=$$typesref{"n+"})}>=1 && @{refendef($ref2=$$typesref{"n-"})}>=1) {
- dumpsyms("local override of global",@{$ref1});
- dumpsyms(" -- with local",@{$ref2});
- }
-
-# >=1 n[:upper:]\U symbol && ==0 nU symbol => global singularity
- if (@{refendef($ref=$$typesref{"n+"})}>=1 && @{refendef($$typesref{"nU"})}==0) {
- dumpsyms("global singularity",@{$ref});
- }
-
-# >=1 cx symbol && ==0 n[:upper:]\U symbol => floating extern data
- if (@{refendef($ref=$$typesref{"cx"})}>=1 && @{refendef($$typesref{"n+"})}==0) {
- dumpsyms("floating extern data",@{$ref});
- }
-
-# >=1 cp symbol && ==0 n[:upper:]\U symbol => floating extern func
- if (@{refendef($ref=$$typesref{"cp"})}>=1 && @{refendef($$typesref{"n+"})}==0) {
- dumpsyms("floating extern func",@{$ref});
- }
- }
+++ /dev/null
-#! /bin/sh
-where="$PWD"
-project=`basename "$where"`
-set -x
-if [ $# != 0 ];then
- ./autogen clean
- cvs update 2>&1|tee $HOME/update
- ./autogen clean
- cvs diff 2>&1|tee $HOME/diff
- fi
-time sh -c "./autogen;make" 2>&1| \
- grep -v 'warning: inline declaration ignored for function with `\.\.\.'"'"'$'| \
- tee $HOME/errs.comp-$project
+++ /dev/null
-#! /bin/sh
-#
-# $Id$
-
-
-if [ $# = 0 ];then
- echo 'currendir == CVS (old) version; $1 == dir w/new version; [$2 == "print"]'
- exit 1
- fi
-
-t=/tmp/cvsbranchdiff.$$
-trap 'rm -rf $t' EXIT
-rm -rf $t
-mkdir $t
-function findnice
-{
- find "$1" -not -regex '.*/CVS\(\|/[^/]+\)$' '(' '!' -type d -o -printf "%P/\n" ')' '(' '!' -type f -o -printf "%P\n" ')'|sort
-}
-(findnice . ;echo "/") >$t/old
-(findnice "$1" ) >$t/new
-diff -U 999999 $t/old $t/new|sed -e '1,/^@@.*@@$/d' >$t/diff
-if [ "$2" = print ];then
- grep '^[+-]' $t/diff
- exit 0
- fi
-echo '#! /bin/sh'
-echo 'set -ex'
-sed \
- -e 's#^[+]\(.*\)/$#mkdir '\''./\1'\''; cvs add -kk '\''\1'\''#' \
- -e 's#^[+]\(.*[^/]\)$#cp -p '\'"$1"'/\1'\'' '\''./\1'\''; cvs add -kk '\''\1'\''#' \
- -e '\#^[-]\(.*\)/$#d' \
- -e 's#^[-]\(.*[^/]\)$#cvs remove -f '\''\1'\''#' \
- -e '\#^[ ]\(.*\)/$#d' \
- -e 's#^[ ]\(.*[^/]\)$#cmp -s '\'"$1"'/\1'\'' '\''./\1'\'' || cp -p '\'"$1"'/\1'\'' '\''./\1'\''#' \
- <$t/diff
-echo 'echo done'
+++ /dev/null
-#! /usr/bin/perl
-
-use strict;
-use warnings;
-
-use Getopt::Std;
-use Cwd;
-
-use constant FILENAME=>".cvslinks";
-use constant ENTRIES=>"CVS/Entries";
-
-
-our($opt_u,$opt_c,$opt_d,$opt_r,$opt_R,$opt_l,$opt_v);
-getopts "ucdrRlv";
-
-die "-u (update), -c (commit) or -d (delete) required" if !$opt_u && !$opt_c && !$opt_d;
-die "-r (recursive)/-R (recursive w/o CVS) and -l (local) are conflicting"
- if ($opt_r || $opt_R) && $opt_l;
-
-$opt_r=1 if !$opt_r && !$opt_R && !$opt_l; # default
-
-body();
-exit 0;
-
-sub body
-{
- do_u() if $opt_u;
- do_c() if $opt_c;
- do_d() if $opt_d;
- do_r() if $opt_r;
- do_R() if $opt_R;
-}
-
-sub verbose
-{
-my($msg)=@_;
-
- return if !$opt_v;
- print cwd().": $msg\n";
-}
-
-sub do_d
-{
- local *D;
- opendir D,"." or die "Cannot open directory \".\": $!";
- for (readdir D) {
- next if ! -l;
- verbose "Deleting local link $_";
- unlink;
- }
- closedir D;
-}
-
-sub do_u
-{
- local *L;
- open L,FILENAME or die "File ".FILENAME." cannot be opened: $!";
- do_d();
- verbose "Creating links from ".FILENAME;
- my $cmt=0;
- while (<L>) {
- chomp;
- my $cmt_old=$cmt;
- $cmt=!$cmt if /^#!/;
- next if $cmt || $cmt_old || /^$/; # comment or empty-file (->empty-dir) stub line
- /^(.+)\t(.+)$/ or warn "Unrecognized line: $_";
- verbose "Creating link $1";
- symlink $2,$1 or warn "symlink(\"$2\"->\"$1\"): $!";
- }
- close L;
-}
-
-sub do_c
-{
- local(*L,*D);
- opendir D,"." or die "Cannot open directory \".\": $!";
- verbose "Storing links to ".FILENAME;
- my $cmtblock="";
- if (open L,FILENAME) {
- my $cmt=0;
- while (<L>) {
- my $cmt_old=$cmt;
- $cmt=!$cmt if /^#!/;
- next unless $cmt || $cmt_old; # comment
- $cmtblock.=$_;
- }
- close L;
- }
- $cmtblock="\n" if !$cmtblock; # empty-file (->empty-dir) stub line
- open L,">".FILENAME or die "File ".FILENAME." cannot be created: $!";
- print L $cmtblock;
- for (readdir D) {
- next if ! -l;
- my $target=readlink or die "Cannot read link $_: $!";
- verbose "Storing link $_";
- print L "$_\t$target\n";
- }
- closedir D;
- close L;
-}
-
-sub descent
-{
-my($dir)=@_;
-
- if (!chdir $dir) {
- warn "Cannot chdir to $dir: $!";
- return;
- }
- verbose "Descented to child directory";
- body();
- chdir ".." or die "Cannot return back to ..: $!";
- verbose "Back in parent directory";
-}
-
-sub do_r
-{
- local *C;
- if (!open C,ENTRIES) {
- warn "Cannot open file \"".ENTRIES."\": $!";
- return;
- }
- while (<C>) {
- chomp;
- next if !m#^D/([^/]*)/#;
- descent($1);
- }
- close C;
-}
-
-sub do_R
-{
- local *D;
- opendir D,"." or die "Cannot open directory \".\": $!";
- for (readdir D) {
- # Beware of symlinked-directories !
- next if -l || ! -d || $_ eq "." || $_ eq "..";
- descent($_);
- }
- closedir D;
-}
+++ /dev/null
-#! /usr/bin/perl
-#
-# $Id$
-#
-# Recommended aliases:
-# alias cvsfiles='cvsutil --files --print'
-# alias cvsignores='cvsutil --ignores --print'
-# alias cvsignoresall='cvsutil --ignores --workings --print'
-# alias cvsignoresrm='cvsutil --ignores --rm'
-# alias cvsignoresrmall='cvsutil --ignores --workings --rm'
-# alias cvsignoresallrm='cvsutil --ignores --workings --rm'
-
-use strict;
-use warnings;
-
-use Getopt::Long;
-use Cwd qw(chdir fastgetcwd);
-use Errno qw(ENOENT);
-
-use constant ENTRIES =>"CVS/Entries";
-use constant CVSIGNORE=>".cvsignore";
-use constant ROOT =>"CVS/Root";
-
-my($opt_files,$opt_ignores,$opt_workings,$opt_dirs);
-my($opt_rm,$opt_print);
-our($opt_root); # undefined=>no rooting, ""=>print roots or first phase for root checking, ne ""=>set roots
-my($opt_verbose,$opt_fatal);
-my($opt_force); # set roots without their checking
-my(@opt_ignore);
-
-$Getopt::Long::ignorecase=0;
-$Getopt::Long::bundling=1;
-die if !GetOptions_shortfilter(
- "f|files!" ,\$opt_files,
- "i|ignores!" ,\$opt_ignores,
- "w|workings!",\$opt_workings,
- "d|dirs!" ,\$opt_dirs,
- "r|rm!" ,\$opt_rm,
- "p|print!" ,\$opt_print,
- "root:s" ,\$opt_root,
- "v|verbose!" ,\$opt_verbose,
- "fatal!" ,\$opt_fatal,
- "force!" ,\$opt_force,
- "I|ignore=s" ,\@opt_ignore,
- );
-
-die "--root possible only with (optional and ignored) -d|--dirs"
- if defined $opt_root && ($opt_files || $opt_ignores || $opt_workings || $opt_dirs || $opt_rm || $opt_print);
-die "-d|--dirs forbidden with -r|--rm"
- if $opt_dirs && $opt_rm;
-die "Nothing to do (no -r|--rm, no -p|--print)"
- if !$opt_rm && !$opt_print && !defined $opt_root;
-die "Nothing to process (no -f|--files, no -i|--ignores, no -w|--workings, no -d|--dirs)"
- if !defined $opt_root && (!$opt_files && !$opt_ignores && !$opt_workings && !$opt_dirs);
-
-my @all_ignore=("CVS");
-for (@opt_ignore) {
- push @all_ignore,$_;
- @all_ignore=() if $_ eq "!";
- }
-
-my($root_contents,@root_dirs);
-
-@ARGV=(".") if !@ARGV;
-our(@dir_dirs)=@ARGV;
-our(@dir_files,@dir_ignores,@dir_workings,@dir_victims);
-our($dir_dirname)="";
-unless ((defined $opt_root && $opt_root ne "") && $opt_force) {
- local($opt_root)=$opt_root;
- $opt_root="" if defined $opt_root && $opt_root ne "";
- localdircore();
- }
-
-actionrootfinal() if defined $opt_root && $opt_root eq "";
-if (defined $opt_root && $opt_root ne "") {
- die "Non-matching \"".ROOT."\" contents, use --force for override" if !@root_dirs && !$opt_force;
- localdircore();
- }
-
-exit 0;
-
-sub mayfatal
-{
-my($msg,%opts)=@_;
-
- my $errstr=$!;
- $msg.=" in \"".fastgetcwd."\" (CVS \"$dir_dirname\")".($opts{"noerrno"} ? "" : ": $errstr");
- die $msg if $opt_fatal;
- warn $msg;
-}
-
-sub fordirs
-{
-my($func,@dirs)=@_;
-
- my $origdir=fastgetcwd;
- for (@dirs) {
- if (!chdir $_) {
- mayfatal "Unable to process directory \"$_\"";
- next;
- }
- &$func($_);
- chdir $origdir;
- }
-}
-
-sub localdir
-{
-my($localdirname)=@_;
-
- verbose("localdir(\"$localdirname\") entry");
-
- local(@dir_dirs,@dir_files,@dir_ignores,@dir_workings,@dir_victims);
- local($dir_dirname)=$dir_dirname.$localdirname."/";
-
- localreaddir() or return;
-
- localdircore();
-
- verbose("localdir(\"$localdirname\") exit");
-}
-
-sub localdircore
-{
- localvictims() if !defined $opt_root;
- localaction();
-
- fordirs \&localdir,@dir_dirs;
-}
-
-sub filterout
-{
-my($from,@what)=@_;
-
- my %hash=map { $_=>1; } @$from;
- for (@what) {
- delete $hash{$_};
- }
- return keys %hash;
-}
-
-sub localreaddir
-{
- local *E;
- if (!open E,ENTRIES) {
- mayfatal "File \"".ENTRIES."\" cannot be opened";
- return 0;
- }
- while (<E>) {
- chomp;
- do { push @dir_dirs ,$1; next; } if m#^D/([^/]*)/#;
- do { push @dir_files,$1; next; } if m#^/([^/]*)/# ;
- next if /^D$/;
- mayfatal "File ".ENTRIES." contains invalid line \"$_\"",("noerrno"=>1);
- }
- close E;
-
- return 1 if defined $opt_root;
-
- local *I;
- if (open I,CVSIGNORE) {
- while (<I>) {
- while (/\S+/g) {
- for (<$&>) {
- push @dir_ignores,$_ if -e $_;
- }
- }
- }
- close I;
- @dir_ignores=filterout \@dir_ignores,@dir_dirs,@dir_files;
- }
- else {
- mayfatal "File \"".CVSIGNORE."\" cannot be opened" if !$!{ENOENT};
- }
-
- local *D;
- if (!opendir D,".") {
- mayfatal "Cannot read directory \".\"";
- return 0;
- }
- @dir_workings=filterout [readdir D],@dir_dirs,@dir_files,@dir_ignores,@all_ignore,".","..";
- closedir D;
- return 1;
-}
-
-sub localvictims
-{
- push @dir_victims,@dir_files if $opt_files;
- push @dir_victims,@dir_ignores if $opt_ignores;
- push @dir_victims,@dir_workings if $opt_workings;
- push @dir_victims,@dir_dirs if $opt_dirs;
-}
-
-sub localactionprint
-{
-my($filename)=@_;
-
- mayfatal "File \"$filename\" does not exist",("noerrno"=>1) if !-e $filename;
- print "${dir_dirname}$filename\n";
-}
-
-sub localactionrm
-{
-my($filename)=@_;
-
- if (!unlink $filename) {
- mayfatal "File \"$_\" cannot be removed" if !$!{ENOENT};
- }
-}
-
-sub localactionrootset
-{
- local *R;
- if (!open R,'+<',ROOT) {
- mayfatal "File \"".ROOT."\" cannot be written";
- return;
- }
- print R "$opt_root\n";
- truncate R,tell R;
- close R;
-}
-
-sub localactionrootprint
-{
- local *R;
- if (!open R,ROOT) {
- mayfatal "File \"".ROOT."\" cannot be opened";
- return;
- }
- local $/=undef;
- localactionrootprintcheck(<R>);
- close R;
-}
-
-sub localactionrootprintcheck
-{
-my($contents)=@_;
-
- if (!defined $root_contents) {
- push @root_dirs,$dir_dirname;
- $root_contents=$contents;
- return;
- }
- if (@root_dirs && $root_contents eq $contents) {
- push @root_dirs,$dir_dirname;
- return;
- }
- if (@root_dirs) {
- print map "$_: $root_contents",@root_dirs;
- @root_dirs=();
- }
- print "$dir_dirname: $contents";
-}
-
-sub actionrootfinal
-{
- return if !@root_dirs;
- print $root_contents;
-}
-
-sub localaction
-{
- if ("" ne $dir_dirname && defined $opt_root) {
- localactionrootset() if defined $opt_root && "" ne $opt_root;
- localactionrootprint() if defined $opt_root && "" eq $opt_root;
- return;
- }
- for (@dir_victims) {
- localactionprint $_ if $opt_print;
- localactionrm $_ if $opt_rm;
- }
-}
-
-sub verbose
-{
-my($msg)=@_;
-
- return if !$opt_verbose;
- print fastgetcwd.": $msg\n";
-}
-
-sub GetOptions_shortfilter
-{
- my @r;
- while ($_=shift) {
- if (/^(\w)\|/) {
- my $ref=shift;
- push @r,$1,$ref,$',$ref;
- next;
- }
- push @r,$_;
- }
- return GetOptions @r;
-}
+++ /dev/null
-#! /bin/bash
-
-# Current user is copied to the specified machine $1
-
-if [ $# != 1 ];then
- echo "$0 <hostname>"
- exit 1
-fi
-
-NFSHOME="jsc-nfs.czech.sun.com"
-HOMEPATH="/net/$NFSHOME/export/home/$USER"
-REALNAME="`perl -e '$_=(getpwnam "'"$USER"'")[6];s/^root for //;print;'`"
-PASSWD="`cat $HOME/.passwd`"
-
-# "</dev/null" to prevent "stopped" state
-rsh </dev/null -l root "$1" '
- useradd -c "root for '"$REALNAME"'" -d "'"$HOMEPATH"'" -g 0 -o -s /bin/bash -u 0 '$USER'
- echo "begin 644 scr\\nM<W!A=VX@<&%S<W=D(\"UR(&9I;&5S(%5315(*;6%T8VA?;6%X(#\$P,#\`P,\`IE\\nM>'\''!E8W0@+65X86-T(\").97<@4&%S<W=O<F0Z(\"(*<V5N9\"\`M+2\`B4\$%34U=\$\\nM7'\''(B\"F5X<&5C=\"\`M97AA8W0@(EQR\"E)E+65N=&5R(&YE=R!087-S=V]R9#H@\\n@(@IS96YD(\"TM(\")005-35T1<<B(*97AP96-T(&5O9@H\`\\n\`\\nend"|uudecode -p|sed -e '\''s/USER/'$USER'/g'\'' -e '\''s/PASSWD/'"$PASSWD"'/g'\''|/usr/dist/exe/expect -f -
- echo done
- '
-exit
-
-
-GNU/Linux:
- vi /etc/libsocks5.conf
- noproxy - 129.156.75.0/255.255.255.0 - - -
- noproxy - 129.156.76.0/255.255.255.0 - - -
- noproxy - 129.156.79.0/255.255.255.0 - - -
- socks5 - - - - icsocks.holland.sun.com
-
-exec bash
-alias l='ls -l'
-export TERM=vt100
+++ /dev/null
-#! /usr/bin/perl
-use strict;
-use warnings;
-
-my $tree;
-LINE: while (<>) {
- chomp;
- my $base=\$tree;
- warn($_),next if !s#^/##;
- warn($_),next if m#//#;
- warn($_),next if m#/$#;
- for (split qr#/#) {
- next LINE if ${$base}->{""};
- $base=\(${$base}->{$_});
- }
- ${$base}->{""}=1;
- }
-#use Data::Dumper;
-#print Dumper $tree;
-
-sub out($$);
-sub out($$)
-{
-my($base,$where)=@_;
-
- if ($base->{""}) {
- print $where."\n";
- return;
- }
- for (sort keys(%$base)) {
- next if $_ eq "";
- out($base->{$_},"$where/$_");
- }
-}
-
-out($tree,"");
+++ /dev/null
-#! /bin/sh
-user="${1:-short-m}"
-echo 'poll localhost proto IMAP user '"$user"' pass '"`cat ~/priv/"$user".pwd \
- `"' mda "cat >/dev/null" norewrite fetchall nokeep' \
- |fetchmail -f - -s
+++ /dev/null
-#! /usr/bin/perl
-#
-# $Id$
-
-use strict;
-use warnings;
-
-use IO::Handle;
-use Cwd qw(chdir cwd);
-
-use constant FORMAT_TAR=>'tar xf $pathname;i=`echo *`;echo "$i"|grep -q " " || test * != $base ||'
- .'(mv "$i" "$i".$$;(set +x;mv "$i".$$/* .);rmdir "$i".$$)';
-use constant FORMATS=>{
- "rpm" =>'rpm2cpio $pathname|cpio -id --quiet', #-v #FIXME: --sparse doesn't work, why?
- "zip" =>'unzip -Lq $pathname',
- "jar" =>'unzip -Lq $pathname',
- "a" =>'ar x $pathname',
- "deb" =>'ar x $pathname;'
- .'for i in *.tar.gz;do j=`basename $i .tar.gz`;mkdir -p $j;cd $j;tar xzf ../$i;cd ..;rm -f $i;done',
- "arj" =>'unarj x $pathname',
- "tar" =>FORMAT_TAR,
- "tar.gz" =>do { $_=FORMAT_TAR; s/xf/xzf/; $_; },
- "tgz" =>"tar.gz",
- "tar.bz2"=>do { $_=FORMAT_TAR; s/xf/xjf/; $_; },
- "tar.bz" =>"tar.bz2",
- "tbz" =>"tar.bz",
- };
-
-die "Syntax: $0 <pathname((".join("|",map(".$_",sort keys %{+FORMATS})).")|=<ext>)>..."
- if !@ARGV;
-
-my @extdirs;
-my $origdir=cwd;
-for my $fname (@ARGV) {
- my @parsed;
- for my $fmt (sort { length $b<=>length $a; } keys %{+FORMATS}) {
- last if @parsed=$fname=~m#^(.*?)([^/]+)([.=])(\Q$fmt\E)$#i;
- }
- $parsed[3] or die "Extension not found for archive: $fname";
- my($path,$base,$ext)=@parsed[0,1,3];
- my($pathname)=($parsed[2] eq "=" ? "$path$base" : $fname);
- my($cmdtry,$cmd)=(lc $ext);
- do {
- $cmd=$cmdtry;
- $cmdtry=FORMATS->{$cmdtry};
- } while ($cmdtry);
- -r $pathname && !-d $pathname or die "Archive not readable: $pathname";
- my($extdir)=(-e $base && !-d $base ? "$base.dir" : $base);
- # Extraction-overwriting cowardly not supported:
- # -d $extdir or ...
- mkdir $extdir or die "Unable to create directory \"$extdir\": $!";
- chdir $extdir or die "Unable to chdir to \"$extdir\": $!";
- $pathname="../$pathname" if $pathname!~m#^/#;
- $path ="../$path" if $path !~m#^/#;
- $cmd="set -ex;$cmd";
- my %substvars=(
- "pathname"=>\$pathname,
- "path" =>\$path,
- "base" =>\$base,
- "ext" =>\$ext,
- "extdir" =>\$extdir,
- );
- while (my($name,$var)=each %substvars) {
- ($_=$$var)=~s/'/'\\''/g;
- $cmd="$name='$_';$cmd";
- }
- print "\t$extdir/:\n"; STDOUT->flush();
- my $rc;
- $rc=system $cmd and die "$cmd (rc=".($rc>>8)."): $!";
- push @extdirs,$extdir;
- }
- continue {
- chdir $origdir;
- }
-print "extdir=".$extdirs[0]."\n" if 1==@extdirs;
-exit 0;
+++ /dev/null
-#! /bin/sh
-exec tr -d '\r'
+++ /dev/null
-#! /usr/bin/perl
-
-use strict;
-use warnings;
-
-while (<>) {
- printf("%c",hex($1)) while ($_=~s/([[:xdigit:]]{2})//);
- }
+++ /dev/null
-#!/bin/sh
-if [ $# -lt 1 -o $# -gt 3 ];then
- echo "$0: <filename> [<expected size>] [<ctime>]"
- exit
- fi
-if [ -n "$3" ];then
- ctms="`date -d "$3" '+%s'`"
- ctmd="$3"
-else
- ctms="`find "$1" -printf "%A@\n"`"
- ctmd="`find "$1" -printf "%a\n"`"
-fi
-find "$1" -printf "scale=2;print \"Current rate: \",%s/(%T@-$ctms),\" B/s\\n\"\n"|bc
-if [ -n "$2" ];then
- echo -n "Progress : ";find "$1" -printf "scale=2;print \"%`echo -n "$2"|wc -c`s / $2 (\",%s*100/$2,\"%%)\\n\"\n"|bc
- echo -n "Start time: ";date -d "$ctmd"
- echo -n "Current time: ";date
- echo -n "Finish time: ";date --date "`find "$1" -printf "($2-%s)*(%T@-$ctms)/%s\n"|bc` secs"
- fi
+++ /dev/null
-#! /usr/bin/perl
-#
-# $Id$
-
-use strict;
-use warnings;
-
-use Socket;
-use IO::Handle;
-use Getopt::Std;
-
-use constant DEFAULT_PORT=>80;
-use constant BUFFER_LENGTH=>0x1000;
-
-my %opts;
-getopts "hH",\%opts or die "getopts()";
-@ARGV==1 && $ARGV[0]=~m#^http://([^/:]+)(?::(\d+))?(/.*)$#
- or die "Syntax: $0 [-hH] http://hostname/pathname";
-my($host,$port,$path)=($1,$2,$3);
-defined $port or $port=DEFAULT_PORT;
-
-my $proto=getprotobyname "tcp" or die "getprotobyname \"tcp\": $!";
-socket SOCK,PF_INET,SOCK_STREAM,$proto or die "socket PF_INET,SOCK_STREAM,\"tcp\": $!";
-my $hostaddr=gethostbyname $host or die "hostname \"$host\": $!";
-my $sockaddr=sockaddr_in $port,$hostaddr or die "sockaddr_in(".inet_ntoa($hostaddr).":$port): $!";
-connect SOCK,$sockaddr or die "connect \"$host\"(".inet_ntoa($hostaddr).":$port): $!";
-
-print SOCK ($opts{"h"} ? "HEAD" : "GET")." $path HTTP/1.0\r\nHost: $host\r\n\r\n";
-if ($opts{"H"}) {
- while (<STDIN>) {
- chomp;
- last if /^$/;
- print SOCK "$_\r\n";
- }
- }
-SOCK->flush();
-while (<SOCK>) {
- print STDERR;
- chomp;
- last if /^\r?$/;
- }
-for (;;) {
- my $buf;
- my $got=read SOCK,$buf,BUFFER_LENGTH;
- defined $got or die "read: $!";
- last if !$got;
- die "read()=$got (<0)" if $got<0;
- print $buf;
- }
-exit 0;
+++ /dev/null
-#! /bin/sh
-if [ $# = 0 ];then
- echo "Available chains:"
- /sbin/iptables -L -n|sed -n 's/^Chain isp_\([^ ]*\)_output .*$/ \1/p'
- exit 0
- fi
-while [ $# -gt 0 ];do
- for suffix in `/sbin/iptables -L -n|sed -n 's/^Chain isp_week_\([^ ]*\) .*$/\1/p'`;do
- /sbin/iptables -v -n -L isp_$1_$suffix
- echo
- done
- shift
- done
+++ /dev/null
-#! /bin/sh
-set -ex
-exec filterdiff -i '*/[cC]onfig.in' \
- -x '*/arch/alpha/*' \
- -x '*/arch/arm/*' \
- -x '*/arch/cris/*' \
- -x '*/arch/ia64/*' \
- -x '*/arch/x86_64/*' \
- -x '*/arch/mips*/*' \
- -x '*/arch/ppc*/*' \
- -x '*/arch/sparc*/*' \
- -x '*/arch/m68k/*' \
- -x '*/isdn/*' \
- -x '*/usb/*' \
- -x '*/sound/*' \
- -x '*/pcmcia/*' \
- -x '*/net/wan/*' \
- -x '*/net/irda/*' \
- -x '*/net/appletalk/*' \
- -x '*/bluetooth/*' \
- -x '*/wireless/*' \
- "$@" | \
- grep -vw '^diff'
+++ /dev/null
-#! /bin/sh
-[ -x /usr/bin/killall ] && exec /usr/bin/killall "$@"
-sig=""
-if echo "$1" | grep >/dev/null -- '^-';then
- sig="$1"
- shift
-fi
-pgrep -l "$@"
-if pkill $sig "$@";then true;else
- echo "$*: no process killed"
- exit 1
-fi
-if pgrep >/dev/null -l "$@";then
- echo "FAIL:"
- pgrep -l "$@"
-else
- echo OK
-fi
-exit 0
+++ /dev/null
-#! /bin/sh
-
-lockfile="/home/short/bin/kratochvil.vellum.cz-update.lock"
-kratochvil_IP="`echo "${SSH_CLIENT:-$SSH2_CLIENT}"|cut -d ' ' -f 1`"
-kratochvil_IP="${1:-$kratochvil_IP}"
-kratochvil_IP_back="`echo "$kratochvil_IP"|sed 's/\./\\\\./g'`"
-named_dir="/etc/named"
-cf_file="$named_dir/cf/kratochvil.vellum.cz"
-
-if [ -f "$lockfile" ];then lockmsg=true;else lockmsg=false;fi
-if $lockmsg;then echo -n "$0: Locking \"$lockfile\"...";fi
-lockfile -l 60 "$lockfile"
-trap 'rm -f "$lockfile"' EXIT
-if $lockmsg;then echo " done.";fi
-
-if grep -q '^ `'"$kratochvil_IP_back'"'$' "$cf_file";then
- echo "$0: Nothing to do, $kratochvil_IP already present."
- exit 0
- fi
-
-echo "$0: Updating new IP $kratochvil_IP..."
-echo -e '%s#\(^ `\)[0-9.]*\('"'"'\)$#\\1'"$kratochvil_IP"'\\2#\nw'|ed -s "$cf_file"
-make -C "$named_dir" --assume-new="ver/.version"
-/home/short/secure/ndc-reload-short kratochvil.vellum.cz
-echo "$0: Update done."
-exit 0
+++ /dev/null
-#! /bin/sh
-set -ex
-exec /home/short/bin/ldconfig-docache -C /home/short/pserver/etc/ld.so.cache -n -v /home/short/pserver/lib
+++ /dev/null
-#! /bin/bash
-#
-# $Id$
-# http://www.jankratochvil.net/project/line9k/
-# Modem / Nokia 9110 incoming GSM data gate
-#
-# /etc/ppp/chap-secrets:
-# Secrets for authentication using CHAP
-# client server secret IP addresses
-# username1a line9k secret1a 192.168.90.11
-# username1b line9k secret1b 192.168.90.11
-# username2 linecr secret2 192.168.90.12
-#
-# /etc/inittab:
-# l9:2345:respawn:/usr/local/sbin/line9k line9k
-# lc:2345:respawn:/usr/local/sbin/line9k linecr
-#
-# Charger scheme:
-# 1N4148
-# RS232 DTR------|>|------ --------------+-------------- ----AC conn.
-# | | | | |
-# ) / | 1N4148 ) /
-# ) / ----|>|---- ) /
-# 680R ) -- | ) --
-# ______ | | | | |
-# RS232 GND----|______|--- ----PS/2 +5V PS/2 GND-+-- ----AC conn.
-# RELSIA05-500 RAS-0515
-#
-# Manual charge control:
-# /usr/local/sbin/line9k charge on # Force charging on
-# /usr/local/sbin/line9k charge off # Automatic charging
-# /usr/local/sbin/line9k charge # Query charging force
-
-
-device=$1
-
-# Local IP address of setup pointtopoint interfaces
-LOCAL_IP=192.168.90.10
-
-# Nameserver for remote clients:
-NS=192.168.90.10
-
-# Percent of battery where charging starts
-charge_force_le=50;
-
-# Charger control port
-charge_ttyS=/dev/ttyS0
-
-# Time in seconds to charge the battery after reaching 100% state
-max_limit_time=$[3*60*60];
-
-case $device in
- line9k)
- PORT=/dev/ttyS4 # 9110
- BAUD=19200
- # Local IP address of setup pointtopoint interfaces
- REMOTE_IP=192.168.90.11
- RINGS=1
- OPTIONS="-crtscts xonxoff asyncmap a0000"
- # "server" field in /etc/ppp/chap-secrets
- AUTH_NAME=line9k
- CHARGE=true
- ;;
- linecr)
- PORT=/dev/ttyS3 # Courier
- BAUD=57600
- REMOTE_IP=192.168.90.12
- RINGS=7
- OPTIONS="crtscts asyncmap 0"
- AUTH_NAME=linecr
- CHARGE=false
- ;;
-
-##############################################################################
-# Configuration section ends here.
-##############################################################################
-
- charge)
- function chargestate
- {
- echo -n "Charging force: "
- if test -f $charge_ttyS.charge;then
- echo "YES"
- else
- echo "NO"
- fi
- }
- chargestate
- if [ "$2" = on -o "$2" = yes ];then
- echo "CHANGED: YES"
- touch $charge_ttyS.charge
- baud=9600
- elif [ "$2" = off -o "$2" = no ];then
- echo "CHANGED: NO"
- rm -f $charge_ttyS.charge
- baud=0
- fi
- stty -F $charge_ttyS -hup clocal $baud 2>/dev/null
- [ -n "$2" ] && chargestate
- exit 0
- ;;
- *)
- echo "Unknown device: $device"
- exit 1
- esac
-
-RING1='"RING" "\c"'
-RINGSTR=""
-while [ $RINGS -gt 0 ];do
- # FIXME: timeout is not reset after stray ring(s)
- RINGSTR="$RINGSTR $RING1"
- RINGS=$[$RINGS-1]
- done
-LOGGER="logger -i -t $device"
-
-# Use single AT/OK after ATZ to set terminal speed for USRobotics Courier
-exec pppd "$PORT" "$BAUD" modem lock $OPTIONS $LOCAL_IP:$REMOTE_IP ms-dns "$NS" \
- connect '
- charge_val_last=-1;
- baud_last=0;
- limit_date_last=0;
- aborts='\''
- ABORT "ERROR"
- ABORT "BUSY"
- ABORT "NO\sANSWER"
- ABORT "NO\sCARRIER"
- ABORT "NO\sDIAL\sTONE"
- ABORT "VOICE"
- '\'';
- rc=3;
- while test $rc -eq 3; do
- chat \
- TIMEOUT 1 \
- "" "ATZ" \
- "OK-ATZ-OK" "AT" \
- ABORT "+CBC: 0,0" \
- ABORT "+CBC: 0,25" \
- ABORT "+CBC: 0,50" \
- ABORT "+CBC: 0,75" \
- ABORT "+CBC: 0,100" \
- "OK" \
- '"`if $CHARGE;then echo "AT+CBC" NOTREACHED;fi`"' \
- "\c" \
- ;
- rc=$?; test $rc -eq 0 -o $rc -ge 4 || exit $rc;
- if '$CHARGE';then
- charge_arr=(0 25 50 75 100);
- charge_val=${charge_arr[$[$rc-4]]};
- charge_force_le='$charge_force_le';
- charge_limit_gt=99;
- max_limit_time='$max_limit_time';
- baud=$baud_last;
- charge_ttyS='$charge_ttyS';
- if test -f $charge_ttyS.charge;then
- baud=nocontrol;
- else
- if test $baud = nocontrol;then
- baud=0;
- fi;
- if test $charge_val -le $charge_force_le;then baud=9600;fi;
- if test $charge_val -gt $charge_limit_gt;then
- limit_date=$[`date +%s`];
- if test $limit_date_last -eq 0;then
- limit_date_last=$limit_date;
- if test $baud -ne 0;then
- '"$LOGGER"' "CHARGE state: full-stage charging entered";
- fi;
- else
- if test $baud -ne 0 -a $[$limit_date-$limit_date_last] -gt $max_limit_time;then
- '"$LOGGER"' "CHARGE state: full-stage charging terminated";
- baud=0;
- fi;
- fi;
- else
- limit_date_last=0;
- fi;
- fi;
- if test $charge_val_last -ne $charge_val -o $baud_last '!=' $baud;then
- '"$LOGGER"' "CHARGE state: charge=$charge_val; baud=$baud";
- fi;
- charge_val_last=$charge_val;
- baud_last=$baud;
- if test $baud '!=' nocontrol;then
- stty -F $charge_ttyS -hup clocal $baud 2>/dev/null;
- fi;
- fi;
- chat \
- $aborts \
- TIMEOUT 590 \
- '"$RINGSTR"' \
- ;
- rc=$?; test $rc -eq 0 -o $rc -eq 3 || exit $rc;
- done
- chat -v $aborts \
- TIMEOUT 40 \
- REPORT "CONNECT" \
- "" "ATA" \
- "CONNECT" "\c" \
- "^M" "\c" \
- ;
- rc=$?; test $rc -eq 0 || exit $rc;
- baud=9600;
- stty -F $charge_ttyS -hup clocal $baud 2>/dev/null;
- ' \
- -ccp nodefaultroute lcp-echo-interval 30 lcp-echo-failure 4 lcp-max-configure 30 -detach debug nologfd kdebug 255 \
- require-chap -pap auth name $AUTH_NAME
+++ /dev/null
-#! /bin/sh
-case $# in
- 0) ls -ltL ~/Mail #|less
- ;;
- 1) exec mutt -f ="$1"
- ;;
- *) echo "Error parameters"
- ;;
- esac
+++ /dev/null
-#! /bin/sh
-if [ -f .print_userprogs ];then
- if [ `wc -l <.print_userprogs` = 1 ];then
- arg="./`sed 's/:.*//' <.print_userprogs`"
- fi
-fi
-if [ -z "$arg" ];then
- arg="`basename "$PWD"`"
-fi
-
-run_args="`mdr_args "$arg"`"
-
-if [ -z "$1" ];then
- cmd="run"
-else
- cmd="rtl $1";shift
-fi
-
-echo "ARG: $arg CMD: $cmd"
-t="/tmp/mr.$$";rm -f "$t"
-trap 'rm -f "$t"' EXIT
-cat >"$t" <<EOCMDS
-set args $run_args
-`stty size|awk '{print "set height "$1"\nset width "$2}'`
-echo $cmd\n
-$cmd
-shell rm -vf "$t"
-EOCMDS
-set -xe
-make "$arg"
-gdb --command="$t" ./"$arg"
+++ /dev/null
-#! /bin/sh
-if [ $# != 1 ];then
- echo "Syntax: $0 \"\$arg\""
- exit 1
-fi
-
-case "`basename "$1"`" in
-
-tac_plus)
- minus=
- minus="$minus -8" # AUTHOR
- #minus="$minus -128" # CONFIG
- minus="$minus -4096" # CLEAN
- #minus="$minus -16384" # CFGEVAL
- echo "-g -p 4949 -d `echo 2^17-1-2-256-512-1024-2048-65536 $minus |bc`"
- ;;
-dosfsck)
- echo "-f -v -V -r /dev/hdc1"
- ;;
-httpd)
- echo "-DSSL -X -f $HOME/http/httpd.conf"
- ;;
-*)
- ;;
-esac
+++ /dev/null
-#! /bin/sh
-if [ -f .print_userprogs ];then
- if [ `wc -l <.print_userprogs` = 1 ];then
- arg="./`sed 's/:.*//' <.print_userprogs`"
- fi
-### elif [ -n "$1" ];then arg="$1";shift
-fi
-if [ -z "$arg" ];then
- arg="`basename "$PWD"`"
-fi
-
-run_args="`mdr_args "$arg"`"
-
-echo "ARG: $arg"
-set -xe
-make "$arg"
-./"$arg" $run_args
+++ /dev/null
-#! /bin/bash
-pfiles 2>/dev/null `cd /proc;echo *` \
- |awk '/^[0-9]/{idpid=$1;idproc=$2}/ AF_INET6? .*port: /{printf "%6s%-50s %15s:%d\n",idpid,idproc,$3,$5}' \
- |sort -t : -k 3 -n
+++ /dev/null
-#! /bin/sh
-arg0="$1"
-shift
-me="`basename "$arg0"`"
-# FIXME: Why not: IFS=: for i in...
-save_IFS="$IFS"
-IFS=:
-for i in $PATH;do
- IFS="$save_IFS"
- test -x "$i/$me" -a "$i/$me" != "$arg0" || continue
- exec "$i/$me" "$@"
- echo >&2 "NOTREACHED" && exit 1
- done
-IFS="$save_IFS"
-exec "g$me" "$@"
+++ /dev/null
-#! /bin/sh
-#
-# $Id$
-
-exec /usr/bin/perl`echo "${PERLLIB:+:$PERLLIB}"|sed 's/:/ -I/g'` "$@"
-
-exit 0
-
-exec /usr/bin/perl -e '
- @LIB=qw(
- /home/short/lib/perl5/site_perl/5.6.1/i386-linux
- /home/short/lib/perl5/site_perl/5.6.1
- /home/short/lib/perl5/site_perl/i386-linux
- /home/short/lib/perl5/site_perl
- /home/short/lib/perl5/5.6.1/i386-linux
- /home/short/lib/perl5/5.6.1
- /home/short/lib/perl5/i386-linux
- /home/short/lib/perl5
- /usr/lib/perl5/5.6.1/i386-linux
- /usr/lib/perl5/5.6.1
- /usr/lib/perl5/site_perl/5.6.1/i386-linux
- /usr/lib/perl5/site_perl/5.6.1
- /usr/lib/perl5/site_perl
- /usr/lib/perl5/vendor_perl/5.6.1/i386-linux
- /usr/lib/perl5/vendor_perl/5.6.1
- /usr/lib/perl5/vendor_perl
- .);' \
- "$@"
+++ /dev/null
-#!/bin/sh
-#
-# $Id$
-# written by Jan Kratochvil <short@ucw.cz>
-#
-# Note to users of:
-# Linux running INSIDE VMWare (e.g. on Win32 machine)
-# and internet connection through local ethernet card:
-# You MUST enable masquerading (NAT) for your Communicator's IP address!
-# iptables -t nat -F
-# iptables -t nat -A POSTROUTING --source 192.168.90.1 -j MASQUERADE
-# (replace 192.168.90.1 by your $NOKIA9K setting below, if you change it)
-# - problem investigation by courtesy of Hussain Akbar <Hussain@systemsltd.com>
-
-
-# IP address for N9K, "192.168.90.1" if not provided (either here or from
-# some ~/.profile etc.)
-#NOKIA9K=
-
-# Nameserver for N9K, taken from /etc/resolv.conf if not provided
-#NS=
-
-# Serial port with attached N9K, default is /dev/ttyS1 (AKA COM2:)
-#PORT=/dev/ttyS1
-
-# Nokia baudrate, usually 19200 or 38400, default is 19200
-#NOKIABAUD=19200
-
-# No user-servicable parts below!
-
-pid="/var/run/ppp9k.pid"
-if [ -f "$pid" ];then
- if kill -0 `head -n 1 "$pid"` 2>/dev/null;then
- echo "Killing previous ppp9k on PID(s):" `cat "$pid"`
- kill `cat "$pid"`
- rm -f "$pid"
- exit 0
- else
- echo "Removing state lock of PID(s):" `cat "$pid"`
- rm -f "$pid"
- fi
-fi
-
-IP="${NOKIA9K:-192.168.90.1}"
-NS="`grep '^nameserver' /etc/resolv.conf|head -n 1|cut -f 2 -d ' '`"
-NS="${NS:-127.0.0.1}"
-if [ "$NS" = localhost -o "${NS#127.}" != "$NS" ];then NS="`hostname -f`";fi
-PORT="${PORT:-ttyS1}"
-if [ "${PORT#*/}" = "$PORT" ];then PORT="/dev/$PORT";fi
-NOKIABAUD="${NOKIABAUD:-19200}"
-
-# Some rules for the chat script:
-# 9000i starts with: ATZ, AT&F (the need for TIMEOUT 2, "-OK^M^J-AT&F")
-# 9110 starts with: AT&F
-# user can have global custom initialization string (need for one "OK^M^J")
-# user can have connection custom initialization string (need for one "OK^M^J")
-
-(trap "" HUP
- while [ '!' -f "$pid" ];do sleep 1;done
- me="`cat "$pid"`"
- while :;do
- pppd "$PORT" "$NOKIABAUD" modem lock -crtscts xonxoff :$IP asyncmap 0 ms-dns "$NS" \
- connect 'chat -v \
- "TIMEOUT" "86400" \
- "AT" "\c" \
- "TIMEOUT" "2" \
- "&F-OK^M^J-AT&F" "OK^M^JOK^M^JOK^M^J" \
- "TIMEOUT" "20" \
- "ATD" "CONNECT^M^J" \
- ' \
- -ccp nodefaultroute proxyarp lcp-echo-interval 30 lcp-echo-failure 2 lcp-max-configure 30 -detach \
- -chap noauth "$@" &
- echo -e "$me\n$!" >"$pid"
- wait
- echo "$me" >"$pid"
- sleep 10
- done) </dev/null &>/dev/null &
-
-he="$!"
-echo "$he" >"$pid"
-echo "Starting up: PID=$he, port=$PORT, baud=$NOKIABAUD, remoteIP=$IP, nameserver=$NS"
+++ /dev/null
-#! /bin/sh
-box=$HOME/Mail/radary
-while [ -f $box ];do
- mv $box $box.$$
- awk '/^From /{hdr=1}{if (!hdr) print}/^$/{hdr=0}' <$box.$$|less
- rm -f $box.$$
- done
+++ /dev/null
-#!/bin/sh
-#
-# Put the path to the socks shared library in our LD_LIBRARY_PATH so when we
-# preload the library, ld.so will find it...
-#
-if test -n "${SOCKS5_SHLIB_RUNPATH}" ; then
- SOCKS5_SHLIB_RUNPATH="${SOCKS5_SHLIB_RUNPATH}/"
-elif test -n "/usr/local/lib"; then
- SOCKS5_SHLIB_RUNPATH="/usr/local/lib/"
-else
- SOCKS5_SHLIB_RUNPATH="./"
-fi
-
-#
-# Some OS's use PRELOADS=lib while others use _RLD_LIST=lib:DEFAULT. Hopefully
-# this can handle all those cases. At any rate, this is basically causing the
-# socks5 shared libary to be used to resolve symbols before other libraries,
-# hence we get socks's connect before we get libc's connect...
-#
-# Also, on SunOS 4*, LD_LIBRARY_PATH has no effect on, so we need to put the path
-# in front of it. We make the path overridable with SOCKS5_SHLIB_RUNPATH...
-#
-case `uname -rs` in
-SunOS*4.*)
- LD_PRELOAD=${SOCKS5_SHLIB_RUNPATH}libsocks5_sh.so
- export LD_PRELOAD
- ;;
-*)
- if test -z "$LD_LIBRARY_PATH" ; then
- LD_LIBRARY_PATH=${SOCKS5_SHLIB_RUNPATH}
- else
- LD_LIBRARY_PATH=${SOCKS5_SHLIB_RUNPATH}:${LD_LIBRARY_PATH}
- export LD_LIBRARY_PATH
- fi
-
- LD_PRELOAD=libsocks5_sh.so
- export LD_LIBRARY_PATH
- ;;
-esac
-#
-# Run the actual program...
-#
-export LD_PRELOAD
-exec "$@"
+++ /dev/null
-#! /bin/sh
-exec /usr/sbin/sendmail -fshort+err@vellum.cz "$@"
+++ /dev/null
-#! /bin/sh
-port="${1:-925}"
-exec /usr/sbin/stunnel -S 0 -c -p $HOME/priv/sslvellum.key -v 3 -a $HOME/priv/sslsmtp.dir -r kratochvil.vellum.cz:"$port"
+++ /dev/null
-#! /bin/bash
-exec passg "$0" "$@"
+++ /dev/null
-#! /bin/sh
-exec sed 's/$/\r/g'
+++ /dev/null
-#! /bin/sh
-#
-# $Id$
-
-arch=$HOME/arch
-prefix=/usr/local/apache
-pkgs="
- httpd=apache_1.3.31
- openssl=openssl-0.9.7d
- modssl=mod_ssl-2.8.19-1.3.31
- php=php-4.3.6
- modperl=mod_perl-1.29
- "
-with_perl=false
-export CFLAGS="-ggdb3"
-
-#-----------------------------------------------------------------------------
-
-do_failed=true
-trap 'if $do_failed;then echo "FAILED FAILED FAILED!";fi' EXIT
-
-set -e
-eval "$pkgs"
-echo "$pkgs"|sed -n 's/=/ /p'|while read -r pkg pkgb;do
- ! $with_perl && test $pkg = modperl && continue
- if test -f $arch/$pkgb.tar.gz ;then pkgarchext=.tar.gz ;z=z
- elif test -f $arch/$pkgb.tgz ;then pkgarchext=.tgz ;z=z
- elif test -f $arch/$pkgb.tar.bz2;then pkgarchext=.tar.bz2;z=j
- else echo "Missing archive \"$pkgb*\"!";exit 1;fi
- rm -rf $pkg;echo -n .
- tar x${z}f $arch/$pkgb$pkgarchext;echo -n .
-done;echo
-
-(
-set -ex
-
-pushd $httpd
- ./configure --prefix=$prefix
-popd
-
-pushd $openssl
- rm -rf /usr/local/ssl*
- ./config
- make
- make install
-popd
-
-pushd $modssl
- ./configure --with-apache=../$httpd --with-ssl=../$openssl \
- --prefix=$prefix \
- --with-crt=/etc/httpd/conf/ssl.crt/server.crt \
- --with-key=/etc/httpd/conf/ssl.key/server.key
-popd
-
-pushd $php
- ./configure --with-apache=../$httpd \
- --with-mysql`d=/usr/local/mysql && test -d $d && echo =$d` \
- --enable-track-vars \
- --enable-memory-limit=yes \
- --enable-debug=no \
- --with-gd \
- --with-zlib-dir=/usr/lib \
- --with-jpeg-dir=/usr/lib \
- --with-iconv
- make
- make install
-popd
-
-if $with_perl;then
-pushd $modperl
- perl Makefile.PL APACHE_SRC=../$httpd DO_HTTPD=1 USE_APACI=1 PREP_HTTPD=1 EVERYTHING=1 \
- PERL_DEBUG=1
- make
-# make test # requires running httpd!
- make install UNINST=1
-popd
-fi
-
-pushd $httpd
- OPTIM="$CFLAGS" SSL_BASE="$PWD/../$openssl" ./configure --prefix=$prefix \
- --enable-module=ssl \
- --activate-module=src/modules/php4/libphp4.a \
- $(if $with_perl;then echo \
- --activate-module=src/modules/perl/libperl.a \
- --disable-rule=EXPAT \
- ;fi
- ) \
- --enable-module=so \
- --enable-module=headers \
- --enable-module=rewrite \
- --enable-module=auth_anon \
- --enable-module=proxy
- make
- make install
-popd
-
-echo "success."
-) 2>&1|tee errs
-do_failed=false
+++ /dev/null
-#!/bin/sh
-t=/tmp/worldisup.$$
-
-(date
- echo -e "\n$SSH_CLIENT\n"
- h="`echo "$SSH_CLIENT"|awk '{print $1}'`"
- host -a "$h"
- ~/bin/ghortident $SSH_CLIENT
- n="`host -a "$h" 2>&1|sed -n 's/^Name: \(.*\)/\1/p'`"
- n="${n:-h}"
- echo -e "\nssh -v $n -p 56122\ntelnet $n 56123"
-) 2>&1|todos >$t
-mv $t ~/WWW/home.txt
+++ /dev/null
-Options -Indexes
-<FilesMatch "^[^.]*$">
- SetHandler cgi-script
-</FilesMatch>
+++ /dev/null
-<?php
- $path_priv="/home/lace/priv/";
- $getget=isset($HTTP_GET_VARS["_getget"]);
- $wherename=($getget ? "_getget" : "_postget");
- $where=$HTTP_GET_VARS[$wherename];
- unset($HTTP_GET_VARS[$wherename]);
-
- foreach ($HTTP_GET_VARS as $key=>$val) {
- if (ereg("^_priv_(postget.*)\$",$val,$matched)) {
- $permit=array("127.0.0.1"=>1,"192.168.192.1"=>1,"192.168.90.11"=>1,"192.168.90.12"=>1);
- if (!$permit[$HTTP_SERVER_VARS["REMOTE_ADDR"]])
- print("Forbidden:"
- ." REMOTE_ADDR=".htmlspecialchars($HTTP_SERVER_VARS["REMOTE_ADDR"])
- .",key=".htmlspecialchars($key)
- .",val=".htmlspecialchars($val)
- ."<br />"
- );
- else
- $HTTP_GET_VARS[$key]=chop(join(" ",file($path_priv.$matched[1],false/*use_include_path*/)));
- }
- }
-
- if ($getget) {
- $first='?';
- foreach ($HTTP_GET_VARS as $key=>$val) {
- $where.="${first}".urlencode($key)."=".urlencode($val);
- $first='&';
- }
- header("Location: $where");
- }
- header("Content-type: text/html");
- print('<?xml version="1.0" encoding="iso-8859-1"?>'."\n");
-?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head><title>postget</title></head>
-<?php
-
- if ($getget) {
- print(""
- ."<body onload=\"window.location.href=document.links[0].href;\"><p>\n"
- ."<a href=\"".htmlspecialchars($where)."\">get</a>\n"
- ."</p></body>\n");
- }
- else {
- print(""
- ."<body onload=\"document.forms[0].submit();\">\n"
- ."<form action=\"".htmlspecialchars($where)."\" method=\"post\"><p>\n");
- foreach ($HTTP_GET_VARS as $key=>$val)
- print("<input type=\"hidden\" name=\"".htmlspecialchars($key)."\" value=\"".htmlspecialchars($val)."\" />\n");
- print("<input type=\"submit\" />\n");
- print("</p></form></body>\n");
- }
-
-?>
-</html>
+++ /dev/null
-CFLAGS=
-CFLAGS+=-Wall -Wstrict-prototypes -ggdb3
-#CFLAGS+=-pedantic -ansi -traditional -Wall -Wstrict-prototype
-#CFLAGS+=-O9 -fexpensive-optimizations -finline-functions
-#CFLAGS+=-pg
-
-all: unmime flock pipebuf
-
-pipebuf: pipebuf.c
- sh $<
+++ /dev/null
-$Id$
-
-Important lines prefixed by '[!](?:(?!\s)| )'.
-General (non-Perl) lines prefixed by '[~](?:(?!\s)| )'.
-Perl general knowledge from docs prefixed by '[#](?:(?!\s)| )'.
-
-Perl-5.0+ header:
-! #! /usr/bin/perl -w
- #
- # $Id$
-
- package My::Package::Name;
-! use vars qw($VERSION);
-! # $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
-! use strict;
- #use warnings;
- * Note 'sprintf' hack to keep Perl MakeMaker numbering linear with CVS.
- * Always using 'strict'/'warnings'
- * Not sure if one has right to declare own non-CPAN-accepted package
- name outside of 'My::' prefix, recently using always rather 'My::'
-
-Perl-5.6.0+ header:
-! #! /usr/bin/perl
- #
- # $Id$
-
- package My::Package::Name;
-! # our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
-! use strict;
-! use warnings;
-
-
-Header block for OO files and/or exporting files:
- require My::Inherited1;
- require My::Inherited2;
- require Exporter;
- use vars qw(@ISA @EXPORT);
- @ISA=qw(My::Inherited1 My::Inherited2 Exporter);
- @EXPORT=qw();
-
-Generally always rather 'require' than 'use'. Modules with non-conflicting
-naming are 'use'd (such as 'MIME::Base64' with &encode_base64 etc.).
-
-Method parenthesis:
-! * Always given if no arguments are passed.
-! * Always given for any object or class method calls.
-! * Always given if the first arguments looks as bless()ed.
- * docs/comments: 'method()' used for invocation, '&method' for reference
-! * Always given for 'map', 'each' (commands-not methods from previous line)
- * Trying to prevent if not neccessary
-! * Usually needed for 'print' argument as its first arg already has '()'
-! * Never using 'method_name blessed_object' syntax:
- Dangerous:
- name blessed_object
- interpreted as
- blessed_object->name()
- instead of intended
- name(blessed_object)
-
-Always use named control variable for 'for my $var (...)' if the naming makes
-sense, leave the default '$_' instead of common names such as $i or $n.
-
-Function header:
- # $first_arg,%$secondarg,@rest
- sub function_name
- {
- my($class,first_arg,$secondarg,@rest)=@_;
- * Comment-line suppressed if trivial.
- * Comment-line written in the dereferencing operators order being used
- for accessing elements.
-! * Suicide imminent if '=@_' forgotten.
- * Always used $class or $self for class-methods or object-methods.
- * Usually not using (caller should call it manually):
- $self=$self->new() if !ref $self;
-! * Never modifying @_ to keep perl debugger 'T' command happy
- * Wanna use function prototypes (not yet) although I will never use
- '\', '*' or '&' for the same reasons I would never use C++ '&' param.
-
-Not using: 'unless'(->'if !'), 'until'(->'while !'), 'foreach'(->'for').
-
-Always trying to use 'map' instead of 'for'. Nested 'map's are fined although
-$_ renaming is needed there:
- map({
-! my $whole_record=$_;
- map({ $_+$whole_record->{"shift_value"}; } ($whole_record->{"list"}));
- } @some_record_list)
-
-Always trying to place 'for'/'if'/'while' after the command (without block).
- * Impossible if multiple modifiers needed (just one placed after):
-! print "$_\n" for (0..5) if $do_print;
- * Impossible if using variable declared in the modifier:
-! print "$var\n" for my $var (@some_array);
- * Sometimes even using for multiple commands under the control:
- do { print "kaboom"; return; } if $serious_problem;
- do not use this as even 'print' can fail:
- print "kaboom" and return if $serious_problem;
- (and it uses unclear precedence rules)
-
-OO constructor always named &new or &new_*.
-
-Utility functions without any OO sense do not use $class or $self.
-
-Rather referrencing rvalue than dereferrencing lvalue:
- @{$ref->{"array"}}=(1,2,3);
- never used, I like rather:
- $ref->{"array"}=[1,2,3];
-
-Lists parenthesed where passed as 'list' argument:
- map({ some_function_body; } listarg1,listarg2);
- never used, I like rather:
- map({ some_function_body; } (listarg1,listarg2));
- * parentheses suppressed if simple '@array_name' is passed.
-
-Last command of block { } always suffixed by its ';'.
-
-String substitution used only for simple scalars, concatenation used otherwise:
- print "total_crashes: $left or $maybe->{'crashes'}\n";
- never used, I like rather:
- print "total_crashes: $crashes or ".$maybe->{'crashes'}."\n";
-
-Conditional expressions 'a?b:c' usually use the same item
- $record->{"field"}==5 ? 7 : $record->{"field"}+1
-can be nicely rewritten as:
-! map(($_==5 ? 7 : $_+1),$record->{"field"})
-
-while(<HANDLE>) modifies $_ without its localization! Needed everywhere:
-! # local $_;
- while (<HANDLE>) {
- some_commands;
- }
-
-Never used barewords for hash keys, always quoted:
- $hashref->{somekey}
- never used, I like rather:
-! $hashref->{"somekey"}
-as it can crash for some reseverd words used as 'somekey'.
-
-You cannot use positive-case substitution in list context:
- @list=($user_wishes{"provide_arg"} && "real_arg");
- does '@list=(undef()); @list==1; #YES' if !$user_wishes{"provide_arg"},
- instead you must code the full ugly construction:
-! @list=(!$user_wishes{"provide_arg"} ? () : ("real_arg"));
-
-~ Conditional-evaluation always shortcut optimized by providing the trivial case
-as the first one of two branches (even if such trivial branch has more source
-code letters to write).
- @new_list=(!@list ? (list_is_empty(\@list)) : @list);
- although sometimes the meaning of 'trivial case' can be subjective.
-
-# Private methods named as &_method (still must be called as _method()!).
-
-~ Value being prepared for return named 'r'.
-
-It may get handy to use:
- confess if !wantarray() && 2<=@r; # optional and sometimes not appropriate
- return wantarray() ? @r : $r[0];
-
-Never using 'die' or 'warn', always 'confess' or 'cluck'
-(and never 'carp' or 'cloak'):
- use Carp qw(cluck confess);
-
-Always local()ize file handle globref if not in package 'main':
-! local *F;
- do { open F,$_ or confess "$_: $!"; } for ("some_file");
-
-There are many ways to code 'C switch(){}', I use:
- if (cond1) {
- }
- elsif (cond2) {
- }
- else {
- }
- although it is deprecated by Perl doc but they do not give much better
- solutions. Some of them are restricted to single command body ('do {}'
- needed) etc. if-elsif-else method would be shorter in the code if
- } elsif (condX) {
- indenting style is used.
-
-~ Function definitions ordered lower->higher to prevent pre-declarations.
-
-! For any non-trivial data structures it is essential to differentiate between:
- scalar, list, array, hash, ref to scalar, ref to array, ref to hash
-
-Any missing trailing function parameters appear as undef().
-Any passed trailing undef()s can still be properly detected and interpreted:
- scalar(@_) will still report the real number of parameters.
- undef() is the real parameter.
-
-Perl is too damn slow during startup but it is blazingly fast when it runs.
-mod_perl prevents this startup overhead (present in standalone Perl CGIs).
-'Storable'-disk-dumped complex memory data structures are 10x larger in memory
-as reported by http://petamem.com .
-
-Curly-bracketing all subexpressions for dereferencign explicitely if not trivial:
- my %rec=("x"=>["a\n","b\n"]);print @$rec{"x"};
- print @$arrayref;
- would not work as it would mean:
- my %rec=("x"=>["a\n","b\n"]);print @{$rec}{"x"};
- print @$arrayref;
- , I like rather even if it would work without curly-bracketing:
-! my %rec=("x"=>["a\n","b\n"]);print @{$rec{"x"}};
- print @$arrayref;
-
-Declaration scope of 'my' in the non-sub{} file: Whole file inside one package.
-Declaration scope of 'my' in sub{} or block {}: Only in { }, not accessible by callees.
-Declaration scope of 'local': This sub{} and globally for all callees.
- * Perfect for some nesting counters:
- my $func_nest=0;
- sub func
- {
- # automatically restored after exit from &func
- local $func_nest=$func_nest+1;
- }
- * Built-in variables cannot be 'my' scoped, use 'local' instead
-Declaration scope of 'our'(5.6.0+) or 'use vars...': Global across packages.
-(These scoping rules are simplified but works4me.)
+++ /dev/null
-#include <stdlib.h>
-#include <string.h>
-
-static void func1(const char *const *array) /* FAILURE! */
-{
-}
-static void func2(const char * *array) /* FAILURE! */
-{
-}
-static void func3( char *const *array) /* ok */
-{
-}
-static void func4(const char *string) /* ok */
-{
-}
-
-char **static_array;
-
-int main(void)
-{
- static_array=malloc(3*sizeof(*static_array));
- static_array[0]=strdup("A");
- static_array[1]=strdup("B");
- static_array[2]=strdup("C");
- func1(static_array);
- func2(static_array);
- func3(static_array);
- func4(static_array[0]);
- return(0);
-}
+++ /dev/null
-# /*
-set -ex
-gcc -o cvs-wrap cvs-wrap.c -O2 -Wall -ggdb3
-exit
-# */
-
-#include <unistd.h>
-#include <stdlib.h>
-
-
-#define LENGTH(x) (sizeof((x))/sizeof(*(x)))
-
-int main(int argc,char **argv)
-{
-const char *strace[]={"cvs","-s","200","-q","-o","/tmp/strace.log","/usr/bin/cvs-orig"};
-char **arg;
-
- arg=malloc(sizeof(*arg)*(LENGTH(strace)+(argc-1)+1));
- memcpy(arg ,strace,sizeof(*arg)*LENGTH(strace));
- memcpy(arg+LENGTH(strace),argv+1,sizeof(*arg)*(argc-1));
- arg[LENGTH(strace)+(argc-1)]=NULL;
- execv("/usr/bin/strace",arg);
- return(EXIT_FAILURE);
-}
+++ /dev/null
-#include <stdio.h>
-#include <stdlib.h>
-#include <ctype.h>
-#include <assert.h>
-
-#define NDEBUG
-
-#define BUFSIZE 1024
-
-#define bail(arg...) do { fprintf(stderr, ##arg); exit(EXIT_FAILURE); } while (0)
-
-char *arg;
-
-int istack[BUFSIZE];
-char opstack[BUFSIZE];
-int istackp,opstackp;
-
-#ifdef NDEBUG
-#define dump(x)
-#else
-static void dump(char *pref)
-{
-int i;
- fprintf(stderr,"%s: i[",pref);
- for (i=0;i<istackp;i++) {
- if (i) fputc(',',stderr);
- fprintf(stderr,"%d",istack[i]);
- }
- fprintf(stderr,"],op=[");
- for (i=0;i<opstackp;i++) fputc(opstack[i],stderr);
- fprintf(stderr,"]\n");
-}
-#endif
-
-static char lex(int *ip)
-{
-char c;
-long l;
-
- while (isspace(*arg)) arg++;
- switch (*arg) {
- case 0: case '+': case '-': case '*': case '/': case '(': case ')':
- c=*arg;
- if (c) arg++;
- return(c);
- case '0' ... '9':
- l=strtol(arg,&arg,10);
- *ip=l;
- return 'n';
- default:
- bail("Invalid characted in string: %s\n",arg);
- }
-}
-
-static int oppri(char op)
-{
- switch (op) {
- case 0: return(0);
- case '+': case '-': return (10);
- case '*': case '/': return (20);
- case '(': return (2);
- case ')': return (5);
- default: assert(0);
- }
-}
-
-static void evalit(void)
-{
- dump("evalit()");
- assert(opstackp); opstackp--;
- if (istackp<2)
- if (opstack[opstackp]!='(') bail("2 arguments for operator '%c' required!\n",opstack[opstackp]);
- else bail("Stray '('!\n");
- istackp--;
- switch (opstack[opstackp]) {
- case '+': istack[istackp-1]+=istack[istackp]; break;
- case '-': istack[istackp-1]-=istack[istackp]; break;
- case '*': istack[istackp-1]*=istack[istackp]; break;
- case '/':
- if (!istack[istackp]) bail("Division of %d by zero not supported!\n",istack[istackp-1]);
- istack[istackp-1]/=istack[istackp];
- break;
- }
-}
-
-static void pushop(char op)
-{
-int mypri=oppri(op);
- while (opstackp && op!='(' && oppri(opstack[opstackp-1])>=mypri)
- evalit();
- if (!op) return;
- if (op==')') {
- if (!opstackp || opstack[opstackp-1]!='(')
- bail("Not enough content for brackets-inside space!\n");
- opstackp--;
- return;
- }
- if (opstackp>=BUFSIZE) bail("Too many operators (%d is max)!\n",BUFSIZE);
- opstack[opstackp++]=op;
-}
-
-static void process(void)
-{
-char lastop,op;
-int curi;
-
- istackp=opstackp=0;
- for (lastop=0;;lastop=op) switch (op=lex(&curi)) {
- case 'n':
- if (lastop=='n') bail("Two successive numbers not permitted!\n");
- if (istackp>=BUFSIZE) bail("Too many operators (%d is max)!\n",BUFSIZE);
- istack[istackp++]=curi;
- break;
- case '(':
- if (lastop=='n') bail("Open-bracket not permitted after number!\n");
- pushop(op);
- break;
- case '+': case '-': case '*': case '/': case ')': pushop(op); break;
- case 0:
- pushop(op);
- if (istackp!=1||opstackp)
- bail("Machine not in sane state on the end of expression, ints=%d,ops=%d!\n",istackp,opstackp);
- printf("%d\n",istack[0]);
- return;
- default: assert(0);
- }
-}
-
-int main(int argc,char **argv)
-{
-int argn;
- for (argn=1;argn<argc;argn++) {
- arg=argv[argn];
- process();
- }
- return(EXIT_SUCCESS);
-}
+++ /dev/null
-#include <stdio.h>
-#include <stdlib.h>
-#include <sys/time.h>
-#include <sys/types.h>
-#include <sys/wait.h>
-#include <signal.h>
-#include <unistd.h>
-#include <fcntl.h>
-#include <string.h>
-#include <limits.h>
-#include <getopt.h>
-#include <sys/file.h>
-
-#define failf(name) do { fprintf(stderr,"%s: ",pname); perror(name"()"); exit(EXIT_FAILURE); } while (0)
-const char version[]="This is FLock, version 1.0\n";
-
-int verbose;
-
-char *pname;
-
-static void usage(void) __attribute__((noreturn));
-static void usage(void)
-{
- fprintf(stderr,"\
-%s\
-This command acts as an interface to flock(2):\n\
-\n\
-Usage: flock [{-s|--shared}|{-x|--exclusive}] [-n|--nonblock]\n\
- [-v|--verbose] [-h|--help] [-V|--version]\n\
- <lockname> <command>\n\
-\n\
- -s, --shared\tCreate shared lock (LOCK_SH) - DEFAULT\n\
- -x, --exclusive\tCreate exclusive lock (LOCK_EX)\n\
- -n, --nonblock\tFail immediately if req. lock is busy\n\
- -v, --verbose\tDisplay progress during locking\n\
- -h, --help\tPrint a summary of the options\n\
- -V, --version\tPrint the version number\n\
-",version);
- exit(EXIT_FAILURE);
-}
-
-const struct option longopts[]={
-{"shared" ,0,0,'s'},
-{"exclusive",0,0,'x'},
-{"nonblock" ,0,0,'n'},
-{"verbose" ,0,0,'v'},
-{"help" ,0,0,'h'},
-{"version" ,0,0,'V'},
-{NULL ,0,0,0 }};
-
-int main(int argc,char **argv)
-{
-char *fn,*cmd;
-int locktype=LOCK_SH,nonblock=0,fd,optc;
-
- pname=*argv;
- while ((optc=getopt_long(argc,argv,"sxnvhV",longopts,NULL))!=EOF) switch (optc) {
- case 's':
- locktype=LOCK_SH;
- break;
- case 'x':
- locktype=LOCK_EX;
- break;
- case 'n':
- nonblock=LOCK_NB;
- break;
- case 'v':
- verbose=1;
- break;
- case 'V':
- fprintf(stderr,version);
- exit(EXIT_FAILURE);
- default: /* also 'h' */
- usage();
- break;
- }
- if (optind+2!=argc) {
- fprintf(stderr,"%s: Incorrect number of parameters (command needs quoting?)!\n",pname);
- exit(EXIT_FAILURE);
- }
- fn=argv[optind];
- cmd=argv[optind+1];
- if (verbose) { fprintf(stderr,"%s: Opening \"%s\"...",pname,fn); fflush(stderr); }
- if ((fd=open(fn,O_RDONLY|(nonblock?O_NONBLOCK:0)))==-1) failf("open");
- if (verbose) { fprintf(stderr,"done\n%s: Locking \"%s\"...",pname,fn); fflush(stderr); }
- if (flock(fd,locktype|nonblock)) failf("flock");
- if (verbose) { fprintf(stderr,"done\n%s: Running \"%s\"...",pname,cmd); fflush(stderr); }
- if (system(cmd)==-1) failf("system");
- if (verbose) { fprintf(stderr,"done\n%s: Finishing - removing lock.\n",pname); }
- return(EXIT_SUCCESS);
-}
+++ /dev/null
-#include <stdio.h>
-#include <unistd.h>
-#include <netinet/in.h>
-#include <string.h>
-#include <errno.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-
-#define DBG 0
-
-int parseparams(int argc, char *argv[], ulong *adres, uint *rport, uint *lport, uint *service)
-{
- char *s;
- uint c, d;
-
- if (argc<1) return 255;
-
- *lport=80;
- *service=113;
-
- switch (argc)
- {
- case 2:
- fprintf(stderr,"Error: missing remote port!\n");
- case 1:
- fprintf(stderr,"Usage: ident <xxx.xxx.xxx.xxx> <remote port> [local port] [ident port]\n");
- return 1;
- default:
- case 5:
- c=0;
- s=argv[4];
- while (*s)
- {
- if (c<65536 && *s>='0' && *s<='9') c=c*10+*s-'0';
- else
- {
- fprintf(stderr,"Error: wrong ident port!\n");
- return 5;
- }
- s++;
- }
- *service=c;
- case 4:
- c=0;
- s=argv[3];
- while (*s)
- {
- if (c<65536 && *s>='0' && *s<='9') c=c*10+*s-'0';
- else
- {
- fprintf(stderr,"Error: wrong local port!\n");
- return 4;
- }
- s++;
- }
- *lport=c;
- case 3:
- *adres=0;
- c=d=0;
- s=argv[1];
- while (*s)
- {
- if (*s>='0' && *s<='9')
- {
- c=c*10+*s-'0';
- if (c>255)
- {
- fprintf(stderr,"Error: wrong address!\n");
- return 2;
- }
- }
- else
- if (*s=='.')
- {
- *adres=*adres*256+c;
- c=0;
- if (d++>=3)
- {
- fprintf(stderr,"Error: wrong address!\n");
- return 2;
- }
- }
- else
- {
- fprintf(stderr,"Error: wrong address!\n");
- return 2;
- }
- s++;
- }
- *adres=*adres*256+c;
-
- c=0;
- s=argv[2];
- while (*s)
- {
- if (c<65536 && *s>='0' && *s<='9') c=c*10+*s-'0';
- else
- {
- fprintf(stderr,"Error: wrong remote port!\n");
- return 3;
- }
- s++;
- }
- *rport=c;
- }
- return 0;
-}
-
-int main(int argc, char *argv[])
-{
- int sock;
- struct sockaddr_in addr;
- char buf[256];
- int count;
- ulong adres;
- uint rport, lport, service;
- int err;
- static const int val_one=1;
-
- if (parseparams(argc,argv,&adres,&rport,&lport,&service)) return 3;
-
- if (DBG) fprintf(stderr,"addr: %lX rport: %u lport: %u service: %i\n",adres,rport,lport,service);
-
- addr.sin_family=AF_INET;
- addr.sin_addr.s_addr=htonl(adres);
- addr.sin_port=htons(service);
-
- sock=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
- setsockopt(sock,SOL_SOCKET,SO_KEEPALIVE,&val_one,sizeof(val_one));
-
- if (DBG)
- {
- err=errno;
- fprintf(stderr,"socket: %i, errno: %i\n",sock,err);
- }
- if (sock==-1)
- {
- fprintf(stderr,"Error: cannot create socket!\n");
- return 4;
- }
-
- count=connect(sock,(struct sockaddr*)&addr,sizeof(addr));
- if (DBG)
- {
- err=errno;
- fprintf(stderr,"connect: %i, errno: %i\n",count,err);
- }
-
- if (count)
- {
- fprintf(stderr,"Error: connection failed!\n");
- return 5;
- }
-
- count=snprintf(buf,sizeof(buf),"%d , %d\n",rport,lport);
- if (count==-1) return 1;
- if (write(sock,buf,count)!=count) return 2;
-
- for (;;)
- {
- count=read(sock,buf,sizeof(buf)-1);
- if (count<=0) break;
- buf[count]=0;
- printf("%s",buf);
- fflush(stdout);
- }
-
- if (DBG) fprintf(stderr,"count = %d , errno = %d\n",count,errno);
- close(sock);
- return 0;
-}
-
+++ /dev/null
-ftp://sunsite.mff.cuni.cz/MIRRORS/ftp.redhat.com/redhat/linux/6.2/en/os/i386/SRPMS/ldconfig-1.9.5-16.src.rpm
-
-diff -ru ldconfig-1999-02-21-prep-orig/ldconfig.c ldconfig-1999-02-21-prep/ldconfig.c
---- ldconfig-1999-02-21-prep-orig/ldconfig.c Fri Jun 29 21:06:47 2001
-+++ ldconfig-1999-02-21-prep/ldconfig.c Fri Jun 29 21:11:22 2001
-@@ -624,7 +624,7 @@
- break;
- case 'n':
- nodefault = 1; /* no default dirs */
-- nocache = 1;
-+ /* nocache = 1; * Lace */
- break;
- case 'N':
- nocache = 1; /* don't build cache */
-@@ -707,16 +707,20 @@
- {
- /* the lazy bum want's us to do all the work for him */
-
-+#if 0 /* Lace */
- /* don't cache dirs on the command line */
- int nocache_save = nocache;
- nocache = 1;
-+#endif
-
- /* OK, which directories should we do? */
- for (i = optind; i < argc; i++)
- scan_dir(argv[i]);
-
-+#if 0 /* Lace */
- /* restore the desired caching state */
- nocache = nocache_save;
-+#endif
-
- /* look ma, no defaults */
- if (!nodefault)
+++ /dev/null
- GNU LESSER GENERAL PUBLIC LICENSE
- Version 2.1, February 1999
-
- Copyright (C) 1991, 1999 Free Software Foundation, Inc.
- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-[This is the first released version of the Lesser GPL. It also counts
- as the successor of the GNU Library Public License, version 2, hence
- the version number 2.1.]
-
- Preamble
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-Licenses are intended to guarantee your freedom to share and change
-free software--to make sure the software is free for all its users.
-
- This license, the Lesser General Public License, applies to some
-specially designated software packages--typically libraries--of the
-Free Software Foundation and other authors who decide to use it. You
-can use it too, but we suggest you first think carefully about whether
-this license or the ordinary General Public License is the better
-strategy to use in any particular case, based on the explanations below.
-
- When we speak of free software, we are referring to freedom of use,
-not price. Our General Public Licenses are designed to make sure that
-you have the freedom to distribute copies of free software (and charge
-for this service if you wish); that you receive source code or can get
-it if you want it; that you can change the software and use pieces of
-it in new free programs; and that you are informed that you can do
-these things.
-
- To protect your rights, we need to make restrictions that forbid
-distributors to deny you these rights or to ask you to surrender these
-rights. These restrictions translate to certain responsibilities for
-you if you distribute copies of the library or if you modify it.
-
- For example, if you distribute copies of the library, whether gratis
-or for a fee, you must give the recipients all the rights that we gave
-you. You must make sure that they, too, receive or can get the source
-code. If you link other code with the library, you must provide
-complete object files to the recipients, so that they can relink them
-with the library after making changes to the library and recompiling
-it. And you must show them these terms so they know their rights.
-
- We protect your rights with a two-step method: (1) we copyright the
-library, and (2) we offer you this license, which gives you legal
-permission to copy, distribute and/or modify the library.
-
- To protect each distributor, we want to make it very clear that
-there is no warranty for the free library. Also, if the library is
-modified by someone else and passed on, the recipients should know
-that what they have is not the original version, so that the original
-author's reputation will not be affected by problems that might be
-introduced by others.
-\f
- Finally, software patents pose a constant threat to the existence of
-any free program. We wish to make sure that a company cannot
-effectively restrict the users of a free program by obtaining a
-restrictive license from a patent holder. Therefore, we insist that
-any patent license obtained for a version of the library must be
-consistent with the full freedom of use specified in this license.
-
- Most GNU software, including some libraries, is covered by the
-ordinary GNU General Public License. This license, the GNU Lesser
-General Public License, applies to certain designated libraries, and
-is quite different from the ordinary General Public License. We this
-license for certain libraries in order to permit linking those
-libraries into non-free programs.
-
- When a program is linked with a library, whether statically or using
-a shared library, the combination of the two is legally speaking a
-combined work, a derivative of the original library. The ordinary
-General Public License therefore permits such linking only if the
-entire combination fits its criteria of freedom. The Lesser General
-Public License permits more lax criteria for linking other code with
-the library.
-
- We call this license the "Lesser" General Public License because it
-does Less to protect the user's freedom than the ordinary General
-Public License. It also provides other free software developers Less
-of an advantage over competing non-free programs. These disadvantages
-are the reason we use the ordinary General Public License for many
-libraries. However, the Lesser license provides advantages in certain
-special circumstances.
-
- For example, on rare occasions, there may be a special need to
-encourage widest possible use of a certain library, so that it becomes
-a de-facto standard. To achieve this, non-free programs must be
-allowed to use the library. A more frequent case is that a free
-library does the same job as widely used non-free libraries. In this
-case, there is little to gain by limiting the free library to free
-software only, so we use the Lesser General Public License.
-
- Another cases, permission to use a particular library in non-free
-programs enables a greater number of people to use a large body of
-free software. For example, permission to use the GNU C Library in
-non-free programs enables many more people to use the whole GNU
-operating system, as well as its variant, the GNU/Linux operating
-system.
-
- Although the Lesser General Public License is Less protective of the
-users' freedom, it does insure that the user of a program that is
-linked with the Library has the freedom and the wherewithal to run
-that program using a modified version of the Library.
-
- The precise terms and conditions for copying, distribution and
-modification follow. Pay close attention to the difference between a
-"work based on the library" and a "work that uses the library". The
-former contains code derived from the library, whereas the latter must
-be combined with the library in order to run.
-\f
- GNU LESSER GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License Agreement applies to any software library or other
-program which contains a notice placed by the copyright holder or
-other authorized party saying it may be distributed under the terms of
-this Lesser General Public License (also called "this License").
-Each licensee is addressed as "you".
-
- A "library" means a collection of software functions and/or data
-prepared so as to be conveniently linked with application programs
-(which use some of those functions and data) to form executables.
-
- The "Library", below, refers to any such software library or work
-which has been distributed under these terms. A "work based on the
-Library" means either the Library or any derivative work under
-copyright law: that is to say, a work containing the Library or a
-portion of it, either verbatim or with modifications and/or translated
-straightforwardly into another language. (Hereinafter, translation is
-included without limitation in the term "modification".)
-
- "Source code" for a work means the preferred form of the work for
-making modifications to it. For a library, complete source code means
-all the source code for all modules it contains, plus any associated
-interface definition files, plus the scripts used to control compilation
-and installation of the library.
-
- Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running a program using the Library is not restricted, and output from
-such a program is covered only if its contents constitute a work based
-on the Library (independent of the use of the Library in a tool for
-writing it). Whether that is true depends on what the Library does
-and what the program that uses the Library does.
-
- 1. You may copy and distribute verbatim copies of the Library's
-complete source code as you receive it, in any medium, provided that
-you conspicuously and appropriately publish on each copy an
-appropriate copyright notice and disclaimer of warranty; keep intact
-all the notices that refer to this License and to the absence of any
-warranty; and distribute a copy of this License along with the
-Library.
-
- You may charge a fee for the physical act of transferring a copy,
-and you may at your option offer warranty protection in exchange for a
-fee.
-\f
- 2. You may modify your copy or copies of the Library or any portion
-of it, thus forming a work based on the Library, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
- a) The modified work must itself be a software library.
-
- b) You must cause the files modified to carry prominent notices
- stating that you changed the files and the date of any change.
-
- c) You must cause the whole of the work to be licensed at no
- charge to all third parties under the terms of this License.
-
- d) If a facility in the modified Library refers to a function or a
- table of data to be supplied by an application program that uses
- the facility, other than as an argument passed when the facility
- is invoked, then you must make a good faith effort to ensure that,
- in the event an application does not supply such function or
- table, the facility still operates, and performs whatever part of
- its purpose remains meaningful.
-
- (For example, a function in a library to compute square roots has
- a purpose that is entirely well-defined independent of the
- application. Therefore, Subsection 2d requires that any
- application-supplied function or table used by this function must
- be optional: if the application does not supply it, the square
- root function must still compute square roots.)
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Library,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Library, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote
-it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Library.
-
-In addition, mere aggregation of another work not based on the Library
-with the Library (or with a work based on the Library) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
- 3. You may opt to apply the terms of the ordinary GNU General Public
-License instead of this License to a given copy of the Library. To do
-this, you must alter all the notices that refer to this License, so
-that they refer to the ordinary GNU General Public License, version 2,
-instead of to this License. (If a newer version than version 2 of the
-ordinary GNU General Public License has appeared, then you can specify
-that version instead if you wish.) Do not make any other change in
-these notices.
-\f
- Once this change is made in a given copy, it is irreversible for
-that copy, so the ordinary GNU General Public License applies to all
-subsequent copies and derivative works made from that copy.
-
- This option is useful when you wish to copy part of the code of
-the Library into a program that is not a library.
-
- 4. You may copy and distribute the Library (or a portion or
-derivative of it, under Section 2) in object code or executable form
-under the terms of Sections 1 and 2 above provided that you accompany
-it with the complete corresponding machine-readable source code, which
-must be distributed under the terms of Sections 1 and 2 above on a
-medium customarily used for software interchange.
-
- If distribution of object code is made by offering access to copy
-from a designated place, then offering equivalent access to copy the
-source code from the same place satisfies the requirement to
-distribute the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
- 5. A program that contains no derivative of any portion of the
-Library, but is designed to work with the Library by being compiled or
-linked with it, is called a "work that uses the Library". Such a
-work, in isolation, is not a derivative work of the Library, and
-therefore falls outside the scope of this License.
-
- However, linking a "work that uses the Library" with the Library
-creates an executable that is a derivative of the Library (because it
-contains portions of the Library), rather than a "work that uses the
-library". The executable is therefore covered by this License.
-Section 6 states terms for distribution of such executables.
-
- When a "work that uses the Library" uses material from a header file
-that is part of the Library, the object code for the work may be a
-derivative work of the Library even though the source code is not.
-Whether this is true is especially significant if the work can be
-linked without the Library, or if the work is itself a library. The
-threshold for this to be true is not precisely defined by law.
-
- If such an object file uses only numerical parameters, data
-structure layouts and accessors, and small macros and small inline
-functions (ten lines or less in length), then the use of the object
-file is unrestricted, regardless of whether it is legally a derivative
-work. (Executables containing this object code plus portions of the
-Library will still fall under Section 6.)
-
- Otherwise, if the work is a derivative of the Library, you may
-distribute the object code for the work under the terms of Section 6.
-Any executables containing that work also fall under Section 6,
-whether or not they are linked directly with the Library itself.
-\f
- 6. As an exception to the Sections above, you may also combine or
-link a "work that uses the Library" with the Library to produce a
-work containing portions of the Library, and distribute that work
-under terms of your choice, provided that the terms permit
-modification of the work for the customer's own use and reverse
-engineering for debugging such modifications.
-
- You must give prominent notice with each copy of the work that the
-Library is used in it and that the Library and its use are covered by
-this License. You must supply a copy of this License. If the work
-during execution displays copyright notices, you must include the
-copyright notice for the Library among them, as well as a reference
-directing the user to the copy of this License. Also, you must do one
-of these things:
-
- a) Accompany the work with the complete corresponding
- machine-readable source code for the Library including whatever
- changes were used in the work (which must be distributed under
- Sections 1 and 2 above); and, if the work is an executable linked
- with the Library, with the complete machine-readable "work that
- uses the Library", as object code and/or source code, so that the
- user can modify the Library and then relink to produce a modified
- executable containing the modified Library. (It is understood
- that the user who changes the contents of definitions files in the
- Library will not necessarily be able to recompile the application
- to use the modified definitions.)
-
- b) Use a suitable shared library mechanism for linking with the
- Library. A suitable mechanism is one that (1) uses at run time a
- copy of the library already present on the user's computer system,
- rather than copying library functions into the executable, and (2)
- will operate properly with a modified version of the library, if
- the user installs one, as long as the modified version is
- interface-compatible with the version that the work was made with.
-
- c) Accompany the work with a written offer, valid for at
- least three years, to give the same user the materials
- specified in Subsection 6a, above, for a charge no more
- than the cost of performing this distribution.
-
- d) If distribution of the work is made by offering access to copy
- from a designated place, offer equivalent access to copy the above
- specified materials from the same place.
-
- e) Verify that the user has already received a copy of these
- materials or that you have already sent this user a copy.
-
- For an executable, the required form of the "work that uses the
-Library" must include any data and utility programs needed for
-reproducing the executable from it. However, as a special exception,
-the materials to be distributed need not include anything that is
-normally distributed (in either source or binary form) with the major
-components (compiler, kernel, and so on) of the operating system on
-which the executable runs, unless that component itself accompanies
-the executable.
-
- It may happen that this requirement contradicts the license
-restrictions of other proprietary libraries that do not normally
-accompany the operating system. Such a contradiction means you cannot
-use both them and the Library together in an executable that you
-distribute.
-\f
- 7. You may place library facilities that are a work based on the
-Library side-by-side in a single library together with other library
-facilities not covered by this License, and distribute such a combined
-library, provided that the separate distribution of the work based on
-the Library and of the other library facilities is otherwise
-permitted, and provided that you do these two things:
-
- a) Accompany the combined library with a copy of the same work
- based on the Library, uncombined with any other library
- facilities. This must be distributed under the terms of the
- Sections above.
-
- b) Give prominent notice with the combined library of the fact
- that part of it is a work based on the Library, and explaining
- where to find the accompanying uncombined form of the same work.
-
- 8. You may not copy, modify, sublicense, link with, or distribute
-the Library except as expressly provided under this License. Any
-attempt otherwise to copy, modify, sublicense, link with, or
-distribute the Library is void, and will automatically terminate your
-rights under this License. However, parties who have received copies,
-or rights, from you under this License will not have their licenses
-terminated so long as such parties remain in full compliance.
-
- 9. You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Library or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Library (or any work based on the
-Library), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Library or works based on it.
-
- 10. Each time you redistribute the Library (or any work based on the
-Library), the recipient automatically receives a license from the
-original licensor to copy, distribute, link with or modify the Library
-subject to these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties with
-this License.
-\f
- 11. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Library at all. For example, if a patent
-license would not permit royalty-free redistribution of the Library by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Library.
-
-If any portion of this section is held invalid or unenforceable under any
-particular circumstance, the balance of the section is intended to apply,
-and the section as a whole is intended to apply in other circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
- 12. If the distribution and/or use of the Library is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Library under this License may add
-an explicit geographical distribution limitation excluding those countries,
-so that distribution is permitted only in or among countries not thus
-excluded. In such case, this License incorporates the limitation as if
-written in the body of this License.
-
- 13. The Free Software Foundation may publish revised and/or new
-versions of the Lesser General Public License from time to time.
-Such new versions will be similar in spirit to the present version,
-but may differ in detail to address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Library
-specifies a version number of this License which applies to it and
-"any later version", you have the option of following the terms and
-conditions either of that version or of any later version published by
-the Free Software Foundation. If the Library does not specify a
-license version number, you may choose any version ever published by
-the Free Software Foundation.
-\f
- 14. If you wish to incorporate parts of the Library into other free
-programs whose distribution conditions are incompatible with these,
-write to the author to ask for permission. For software which is
-copyrighted by the Free Software Foundation, write to the Free
-Software Foundation; we sometimes make exceptions for this. Our
-decision will be guided by the two goals of preserving the free status
-of all derivatives of our free software and of promoting the sharing
-and reuse of software generally.
-
- NO WARRANTY
-
- 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
-WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
-EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
-OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
-KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
-LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
-THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
- 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
-WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
-AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
-FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
-CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
-LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
-RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
-FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
-SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGES.
-
- END OF TERMS AND CONDITIONS
-\f
- How to Apply These Terms to Your New Libraries
-
- If you develop a new library, and you want it to be of the greatest
-possible use to the public, we recommend making it free software that
-everyone can redistribute and change. You can do so by permitting
-redistribution under these terms (or, alternatively, under the terms of the
-ordinary General Public License).
-
- To apply these terms, attach the following notices to the library. It is
-safest to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least the
-"copyright" line and a pointer to where the full notice is found.
-
- <one line to give the library's name and a brief idea of what it does.>
- Copyright (C) <year> <name of author>
-
- This library 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 of the License, or (at your option) any later version.
-
- This library 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 library; if not, write to the Free
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-Also add information on how to contact you by electronic and paper mail.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the library, if
-necessary. Here is a sample; alter the names:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in the
- library `Frob' (a library for tweaking knobs) written by James Random Hacker.
-
- <signature of Ty Coon>, 1 April 1990
- Ty Coon, President of Vice
-
-That's all there is to it!
-
-
+++ /dev/null
-/* Getopt for GNU.
- NOTE: getopt is now part of the C library, so if you don't know what
- "Keep this file name-space clean" means, talk to drepper@gnu.org
- before changing it!
-
- Copyright (C) 1987, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98
- Free Software Foundation, Inc.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Library General Public License as
- published by the Free Software Foundation; either version 2 of the
- License, or (at your option) any later version.
-
- The GNU C Library 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
- Library General Public License for more details.
-
- You should have received a copy of the GNU Library General Public
- License along with the GNU C Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA. */
-\f
-/* This tells Alpha OSF/1 not to define a getopt prototype in <stdio.h>.
- Ditto for AIX 3.2 and <stdlib.h>. */
-#ifndef _NO_PROTO
-# define _NO_PROTO
-#endif
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#if !defined __STDC__ || !__STDC__
-/* This is a separate conditional since some stdc systems
- reject `defined (const)'. */
-# ifndef const
-# define const
-# endif
-#endif
-
-#include <stdio.h>
-
-/* Comment out all this code if we are using the GNU C Library, and are not
- actually compiling the library itself. This code is part of the GNU C
- Library, but also included in many other GNU distributions. Compiling
- and linking in this code is a waste when using the GNU C library
- (especially if it is a shared library). Rather than having every GNU
- program understand `configure --with-gnu-libc' and omit the object files,
- it is simpler to just do this in the source for each such file. */
-
-#define GETOPT_INTERFACE_VERSION 2
-#if !defined _LIBC && defined __GLIBC__ && __GLIBC__ >= 2
-# include <gnu-versions.h>
-# if _GNU_GETOPT_INTERFACE_VERSION == GETOPT_INTERFACE_VERSION
-# define ELIDE_CODE
-# endif
-#endif
-
-#ifndef ELIDE_CODE
-
-
-/* This needs to come after some library #include
- to get __GNU_LIBRARY__ defined. */
-#ifdef __GNU_LIBRARY__
-/* Don't include stdlib.h for non-GNU C libraries because some of them
- contain conflicting prototypes for getopt. */
-# include <stdlib.h>
-# include <unistd.h>
-#endif /* GNU C library. */
-
-#ifdef VMS
-# include <unixlib.h>
-# if HAVE_STRING_H - 0
-# include <string.h>
-# endif
-#endif
-
-#ifndef _
-/* This is for other GNU distributions with internationalized messages.
- When compiling libc, the _ macro is predefined. */
-# ifdef HAVE_LIBINTL_H
-# include <libintl.h>
-# define _(msgid) gettext (msgid)
-# else
-# define _(msgid) (msgid)
-# endif
-#endif
-
-/* This version of `getopt' appears to the caller like standard Unix `getopt'
- but it behaves differently for the user, since it allows the user
- to intersperse the options with the other arguments.
-
- As `getopt' works, it permutes the elements of ARGV so that,
- when it is done, all the options precede everything else. Thus
- all application programs are extended to handle flexible argument order.
-
- Setting the environment variable POSIXLY_CORRECT disables permutation.
- Then the behavior is completely standard.
-
- GNU application programs can use a third alternative mode in which
- they can distinguish the relative order of options and other arguments. */
-
-#include "getopt.h"
-
-/* For communication from `getopt' to the caller.
- When `getopt' finds an option that takes an argument,
- the argument value is returned here.
- Also, when `ordering' is RETURN_IN_ORDER,
- each non-option ARGV-element is returned here. */
-
-char *optarg = NULL;
-
-/* Index in ARGV of the next element to be scanned.
- This is used for communication to and from the caller
- and for communication between successive calls to `getopt'.
-
- On entry to `getopt', zero means this is the first call; initialize.
-
- When `getopt' returns -1, this is the index of the first of the
- non-option elements that the caller should itself scan.
-
- Otherwise, `optind' communicates from one call to the next
- how much of ARGV has been scanned so far. */
-
-/* 1003.2 says this must be 1 before any call. */
-int optind = 1;
-
-/* Formerly, initialization of getopt depended on optind==0, which
- causes problems with re-calling getopt as programs generally don't
- know that. */
-
-int __getopt_initialized = 0;
-
-/* The next char to be scanned in the option-element
- in which the last option character we returned was found.
- This allows us to pick up the scan where we left off.
-
- If this is zero, or a null string, it means resume the scan
- by advancing to the next ARGV-element. */
-
-static char *nextchar;
-
-/* Callers store zero here to inhibit the error message
- for unrecognized options. */
-
-int opterr = 1;
-
-/* Set to an option character which was unrecognized.
- This must be initialized on some systems to avoid linking in the
- system's own getopt implementation. */
-
-int optopt = '?';
-
-/* Describe how to deal with options that follow non-option ARGV-elements.
-
- If the caller did not specify anything,
- the default is REQUIRE_ORDER if the environment variable
- POSIXLY_CORRECT is defined, PERMUTE otherwise.
-
- REQUIRE_ORDER means don't recognize them as options;
- stop option processing when the first non-option is seen.
- This is what Unix does.
- This mode of operation is selected by either setting the environment
- variable POSIXLY_CORRECT, or using `+' as the first character
- of the list of option characters.
-
- PERMUTE is the default. We permute the contents of ARGV as we scan,
- so that eventually all the non-options are at the end. This allows options
- to be given in any order, even with programs that were not written to
- expect this.
-
- RETURN_IN_ORDER is an option available to programs that were written
- to expect options and other ARGV-elements in any order and that care about
- the ordering of the two. We describe each non-option ARGV-element
- as if it were the argument of an option with character code 1.
- Using `-' as the first character of the list of option characters
- selects this mode of operation.
-
- The special argument `--' forces an end of option-scanning regardless
- of the value of `ordering'. In the case of RETURN_IN_ORDER, only
- `--' can cause `getopt' to return -1 with `optind' != ARGC. */
-
-static enum
-{
- REQUIRE_ORDER, PERMUTE, RETURN_IN_ORDER
-} ordering;
-
-/* Value of POSIXLY_CORRECT environment variable. */
-static char *posixly_correct;
-\f
-#ifdef __GNU_LIBRARY__
-/* We want to avoid inclusion of string.h with non-GNU libraries
- because there are many ways it can cause trouble.
- On some systems, it contains special magic macros that don't work
- in GCC. */
-# include <string.h>
-# define my_index strchr
-#else
-
-# if HAVE_STRING_H
-# include <string.h>
-# else
-# include <strings.h>
-# endif
-
-/* Avoid depending on library functions or files
- whose names are inconsistent. */
-
-#ifndef getenv
-extern char *getenv ();
-#endif
-
-static char *
-my_index (str, chr)
- const char *str;
- int chr;
-{
- while (*str)
- {
- if (*str == chr)
- return (char *) str;
- str++;
- }
- return 0;
-}
-
-/* If using GCC, we can safely declare strlen this way.
- If not using GCC, it is ok not to declare it. */
-#ifdef __GNUC__
-/* Note that Motorola Delta 68k R3V7 comes with GCC but not stddef.h.
- That was relevant to code that was here before. */
-# if (!defined __STDC__ || !__STDC__) && !defined strlen
-/* gcc with -traditional declares the built-in strlen to return int,
- and has done so at least since version 2.4.5. -- rms. */
-extern int strlen (const char *);
-# endif /* not __STDC__ */
-#endif /* __GNUC__ */
-
-#endif /* not __GNU_LIBRARY__ */
-\f
-/* Handle permutation of arguments. */
-
-/* Describe the part of ARGV that contains non-options that have
- been skipped. `first_nonopt' is the index in ARGV of the first of them;
- `last_nonopt' is the index after the last of them. */
-
-static int first_nonopt;
-static int last_nonopt;
-
-#ifdef _LIBC
-/* Bash 2.0 gives us an environment variable containing flags
- indicating ARGV elements that should not be considered arguments. */
-
-/* Defined in getopt_init.c */
-extern char *__getopt_nonoption_flags;
-
-static int nonoption_flags_max_len;
-static int nonoption_flags_len;
-
-static int original_argc;
-static char *const *original_argv;
-
-/* Make sure the environment variable bash 2.0 puts in the environment
- is valid for the getopt call we must make sure that the ARGV passed
- to getopt is that one passed to the process. */
-static void
-__attribute__ ((unused))
-store_args_and_env (int argc, char *const *argv)
-{
- /* XXX This is no good solution. We should rather copy the args so
- that we can compare them later. But we must not use malloc(3). */
- original_argc = argc;
- original_argv = argv;
-}
-# ifdef text_set_element
-text_set_element (__libc_subinit, store_args_and_env);
-# endif /* text_set_element */
-
-# define SWAP_FLAGS(ch1, ch2) \
- if (nonoption_flags_len > 0) \
- { \
- char __tmp = __getopt_nonoption_flags[ch1]; \
- __getopt_nonoption_flags[ch1] = __getopt_nonoption_flags[ch2]; \
- __getopt_nonoption_flags[ch2] = __tmp; \
- }
-#else /* !_LIBC */
-# define SWAP_FLAGS(ch1, ch2)
-#endif /* _LIBC */
-
-/* Exchange two adjacent subsequences of ARGV.
- One subsequence is elements [first_nonopt,last_nonopt)
- which contains all the non-options that have been skipped so far.
- The other is elements [last_nonopt,optind), which contains all
- the options processed since those non-options were skipped.
-
- `first_nonopt' and `last_nonopt' are relocated so that they describe
- the new indices of the non-options in ARGV after they are moved. */
-
-#if defined __STDC__ && __STDC__
-static void exchange (char **);
-#endif
-
-static void
-exchange (argv)
- char **argv;
-{
- int bottom = first_nonopt;
- int middle = last_nonopt;
- int top = optind;
- char *tem;
-
- /* Exchange the shorter segment with the far end of the longer segment.
- That puts the shorter segment into the right place.
- It leaves the longer segment in the right place overall,
- but it consists of two parts that need to be swapped next. */
-
-#ifdef _LIBC
- /* First make sure the handling of the `__getopt_nonoption_flags'
- string can work normally. Our top argument must be in the range
- of the string. */
- if (nonoption_flags_len > 0 && top >= nonoption_flags_max_len)
- {
- /* We must extend the array. The user plays games with us and
- presents new arguments. */
- char *new_str = malloc (top + 1);
- if (new_str == NULL)
- nonoption_flags_len = nonoption_flags_max_len = 0;
- else
- {
- memset (__mempcpy (new_str, __getopt_nonoption_flags,
- nonoption_flags_max_len),
- '\0', top + 1 - nonoption_flags_max_len);
- nonoption_flags_max_len = top + 1;
- __getopt_nonoption_flags = new_str;
- }
- }
-#endif
-
- while (top > middle && middle > bottom)
- {
- if (top - middle > middle - bottom)
- {
- /* Bottom segment is the short one. */
- int len = middle - bottom;
- register int i;
-
- /* Swap it with the top part of the top segment. */
- for (i = 0; i < len; i++)
- {
- tem = argv[bottom + i];
- argv[bottom + i] = argv[top - (middle - bottom) + i];
- argv[top - (middle - bottom) + i] = tem;
- SWAP_FLAGS (bottom + i, top - (middle - bottom) + i);
- }
- /* Exclude the moved bottom segment from further swapping. */
- top -= len;
- }
- else
- {
- /* Top segment is the short one. */
- int len = top - middle;
- register int i;
-
- /* Swap it with the bottom part of the bottom segment. */
- for (i = 0; i < len; i++)
- {
- tem = argv[bottom + i];
- argv[bottom + i] = argv[middle + i];
- argv[middle + i] = tem;
- SWAP_FLAGS (bottom + i, middle + i);
- }
- /* Exclude the moved top segment from further swapping. */
- bottom += len;
- }
- }
-
- /* Update records for the slots the non-options now occupy. */
-
- first_nonopt += (optind - last_nonopt);
- last_nonopt = optind;
-}
-
-/* Initialize the internal data when the first call is made. */
-
-#if defined __STDC__ && __STDC__
-static const char *_getopt_initialize (int, char *const *, const char *);
-#endif
-static const char *
-_getopt_initialize (argc, argv, optstring)
- int argc;
- char *const *argv;
- const char *optstring;
-{
- /* Start processing options with ARGV-element 1 (since ARGV-element 0
- is the program name); the sequence of previously skipped
- non-option ARGV-elements is empty. */
-
- first_nonopt = last_nonopt = optind;
-
- nextchar = NULL;
-
- posixly_correct = getenv ("POSIXLY_CORRECT");
-
- /* Determine how to handle the ordering of options and nonoptions. */
-
- if (optstring[0] == '-')
- {
- ordering = RETURN_IN_ORDER;
- ++optstring;
- }
- else if (optstring[0] == '+')
- {
- ordering = REQUIRE_ORDER;
- ++optstring;
- }
- else if (posixly_correct != NULL)
- ordering = REQUIRE_ORDER;
- else
- ordering = PERMUTE;
-
-#ifdef _LIBC
- if (posixly_correct == NULL
- && argc == original_argc && argv == original_argv)
- {
- if (nonoption_flags_max_len == 0)
- {
- if (__getopt_nonoption_flags == NULL
- || __getopt_nonoption_flags[0] == '\0')
- nonoption_flags_max_len = -1;
- else
- {
- const char *orig_str = __getopt_nonoption_flags;
- int len = nonoption_flags_max_len = strlen (orig_str);
- if (nonoption_flags_max_len < argc)
- nonoption_flags_max_len = argc;
- __getopt_nonoption_flags =
- (char *) malloc (nonoption_flags_max_len);
- if (__getopt_nonoption_flags == NULL)
- nonoption_flags_max_len = -1;
- else
- memset (__mempcpy (__getopt_nonoption_flags, orig_str, len),
- '\0', nonoption_flags_max_len - len);
- }
- }
- nonoption_flags_len = nonoption_flags_max_len;
- }
- else
- nonoption_flags_len = 0;
-#endif
-
- return optstring;
-}
-\f
-/* Scan elements of ARGV (whose length is ARGC) for option characters
- given in OPTSTRING.
-
- If an element of ARGV starts with '-', and is not exactly "-" or "--",
- then it is an option element. The characters of this element
- (aside from the initial '-') are option characters. If `getopt'
- is called repeatedly, it returns successively each of the option characters
- from each of the option elements.
-
- If `getopt' finds another option character, it returns that character,
- updating `optind' and `nextchar' so that the next call to `getopt' can
- resume the scan with the following option character or ARGV-element.
-
- If there are no more option characters, `getopt' returns -1.
- Then `optind' is the index in ARGV of the first ARGV-element
- that is not an option. (The ARGV-elements have been permuted
- so that those that are not options now come last.)
-
- OPTSTRING is a string containing the legitimate option characters.
- If an option character is seen that is not listed in OPTSTRING,
- return '?' after printing an error message. If you set `opterr' to
- zero, the error message is suppressed but we still return '?'.
-
- If a char in OPTSTRING is followed by a colon, that means it wants an arg,
- so the following text in the same ARGV-element, or the text of the following
- ARGV-element, is returned in `optarg'. Two colons mean an option that
- wants an optional arg; if there is text in the current ARGV-element,
- it is returned in `optarg', otherwise `optarg' is set to zero.
-
- If OPTSTRING starts with `-' or `+', it requests different methods of
- handling the non-option ARGV-elements.
- See the comments about RETURN_IN_ORDER and REQUIRE_ORDER, above.
-
- Long-named options begin with `--' instead of `-'.
- Their names may be abbreviated as long as the abbreviation is unique
- or is an exact match for some defined option. If they have an
- argument, it follows the option name in the same ARGV-element, separated
- from the option name by a `=', or else the in next ARGV-element.
- When `getopt' finds a long-named option, it returns 0 if that option's
- `flag' field is nonzero, the value of the option's `val' field
- if the `flag' field is zero.
-
- The elements of ARGV aren't really const, because we permute them.
- But we pretend they're const in the prototype to be compatible
- with other systems.
-
- LONGOPTS is a vector of `struct option' terminated by an
- element containing a name which is zero.
-
- LONGIND returns the index in LONGOPT of the long-named option found.
- It is only valid when a long-named option has been found by the most
- recent call.
-
- If LONG_ONLY is nonzero, '-' as well as '--' can introduce
- long-named options. */
-
-int
-_getopt_internal (argc, argv, optstring, longopts, longind, long_only)
- int argc;
- char *const *argv;
- const char *optstring;
- const struct option *longopts;
- int *longind;
- int long_only;
-{
- optarg = NULL;
-
- if (optind == 0 || !__getopt_initialized)
- {
- if (optind == 0)
- optind = 1; /* Don't scan ARGV[0], the program name. */
- optstring = _getopt_initialize (argc, argv, optstring);
- __getopt_initialized = 1;
- }
-
- /* Test whether ARGV[optind] points to a non-option argument.
- Either it does not have option syntax, or there is an environment flag
- from the shell indicating it is not an option. The later information
- is only used when the used in the GNU libc. */
-#ifdef _LIBC
-# define NONOPTION_P (argv[optind][0] != '-' || argv[optind][1] == '\0' \
- || (optind < nonoption_flags_len \
- && __getopt_nonoption_flags[optind] == '1'))
-#else
-# define NONOPTION_P (argv[optind][0] != '-' || argv[optind][1] == '\0')
-#endif
-
- if (nextchar == NULL || *nextchar == '\0')
- {
- /* Advance to the next ARGV-element. */
-
- /* Give FIRST_NONOPT & LAST_NONOPT rational values if OPTIND has been
- moved back by the user (who may also have changed the arguments). */
- if (last_nonopt > optind)
- last_nonopt = optind;
- if (first_nonopt > optind)
- first_nonopt = optind;
-
- if (ordering == PERMUTE)
- {
- /* If we have just processed some options following some non-options,
- exchange them so that the options come first. */
-
- if (first_nonopt != last_nonopt && last_nonopt != optind)
- exchange ((char **) argv);
- else if (last_nonopt != optind)
- first_nonopt = optind;
-
- /* Skip any additional non-options
- and extend the range of non-options previously skipped. */
-
- while (optind < argc && NONOPTION_P)
- optind++;
- last_nonopt = optind;
- }
-
- /* The special ARGV-element `--' means premature end of options.
- Skip it like a null option,
- then exchange with previous non-options as if it were an option,
- then skip everything else like a non-option. */
-
- if (optind != argc && !strcmp (argv[optind], "--"))
- {
- optind++;
-
- if (first_nonopt != last_nonopt && last_nonopt != optind)
- exchange ((char **) argv);
- else if (first_nonopt == last_nonopt)
- first_nonopt = optind;
- last_nonopt = argc;
-
- optind = argc;
- }
-
- /* If we have done all the ARGV-elements, stop the scan
- and back over any non-options that we skipped and permuted. */
-
- if (optind == argc)
- {
- /* Set the next-arg-index to point at the non-options
- that we previously skipped, so the caller will digest them. */
- if (first_nonopt != last_nonopt)
- optind = first_nonopt;
- return -1;
- }
-
- /* If we have come to a non-option and did not permute it,
- either stop the scan or describe it to the caller and pass it by. */
-
- if (NONOPTION_P)
- {
- if (ordering == REQUIRE_ORDER)
- return -1;
- optarg = argv[optind++];
- return 1;
- }
-
- /* We have found another option-ARGV-element.
- Skip the initial punctuation. */
-
- nextchar = (argv[optind] + 1
- + (longopts != NULL && argv[optind][1] == '-'));
- }
-
- /* Decode the current option-ARGV-element. */
-
- /* Check whether the ARGV-element is a long option.
-
- If long_only and the ARGV-element has the form "-f", where f is
- a valid short option, don't consider it an abbreviated form of
- a long option that starts with f. Otherwise there would be no
- way to give the -f short option.
-
- On the other hand, if there's a long option "fubar" and
- the ARGV-element is "-fu", do consider that an abbreviation of
- the long option, just like "--fu", and not "-f" with arg "u".
-
- This distinction seems to be the most useful approach. */
-
- if (longopts != NULL
- && (argv[optind][1] == '-'
- || (long_only && (argv[optind][2] || !my_index (optstring, argv[optind][1])))))
- {
- char *nameend;
- const struct option *p;
- const struct option *pfound = NULL;
- int exact = 0;
- int ambig = 0;
- int indfound = -1;
- int option_index;
-
- for (nameend = nextchar; *nameend && *nameend != '='; nameend++)
- /* Do nothing. */ ;
-
- /* Test all long options for either exact match
- or abbreviated matches. */
- for (p = longopts, option_index = 0; p->name; p++, option_index++)
- if (!strncmp (p->name, nextchar, nameend - nextchar))
- {
- if ((unsigned int) (nameend - nextchar)
- == (unsigned int) strlen (p->name))
- {
- /* Exact match found. */
- pfound = p;
- indfound = option_index;
- exact = 1;
- break;
- }
- else if (pfound == NULL)
- {
- /* First nonexact match found. */
- pfound = p;
- indfound = option_index;
- }
- else
- /* Second or later nonexact match found. */
- ambig = 1;
- }
-
- if (ambig && !exact)
- {
- if (opterr)
- fprintf (stderr, _("%s: option `%s' is ambiguous\n"),
- argv[0], argv[optind]);
- nextchar += strlen (nextchar);
- optind++;
- optopt = 0;
- return '?';
- }
-
- if (pfound != NULL)
- {
- option_index = indfound;
- optind++;
- if (*nameend)
- {
- /* Don't test has_arg with >, because some C compilers don't
- allow it to be used on enums. */
- if (pfound->has_arg)
- optarg = nameend + 1;
- else
- {
- if (opterr)
- {
- if (argv[optind - 1][1] == '-')
- /* --option */
- fprintf (stderr,
- _("%s: option `--%s' doesn't allow an argument\n"),
- argv[0], pfound->name);
- else
- /* +option or -option */
- fprintf (stderr,
- _("%s: option `%c%s' doesn't allow an argument\n"),
- argv[0], argv[optind - 1][0], pfound->name);
- }
-
- nextchar += strlen (nextchar);
-
- optopt = pfound->val;
- return '?';
- }
- }
- else if (pfound->has_arg == 1)
- {
- if (optind < argc)
- optarg = argv[optind++];
- else
- {
- if (opterr)
- fprintf (stderr,
- _("%s: option `%s' requires an argument\n"),
- argv[0], argv[optind - 1]);
- nextchar += strlen (nextchar);
- optopt = pfound->val;
- return optstring[0] == ':' ? ':' : '?';
- }
- }
- nextchar += strlen (nextchar);
- if (longind != NULL)
- *longind = option_index;
- if (pfound->flag)
- {
- *(pfound->flag) = pfound->val;
- return 0;
- }
- return pfound->val;
- }
-
- /* Can't find it as a long option. If this is not getopt_long_only,
- or the option starts with '--' or is not a valid short
- option, then it's an error.
- Otherwise interpret it as a short option. */
- if (!long_only || argv[optind][1] == '-'
- || my_index (optstring, *nextchar) == NULL)
- {
- if (opterr)
- {
- if (argv[optind][1] == '-')
- /* --option */
- fprintf (stderr, _("%s: unrecognized option `--%s'\n"),
- argv[0], nextchar);
- else
- /* +option or -option */
- fprintf (stderr, _("%s: unrecognized option `%c%s'\n"),
- argv[0], argv[optind][0], nextchar);
- }
- nextchar = (char *) "";
- optind++;
- optopt = 0;
- return '?';
- }
- }
-
- /* Look at and handle the next short option-character. */
-
- {
- char c = *nextchar++;
- char *temp = my_index (optstring, c);
-
- /* Increment `optind' when we start to process its last character. */
- if (*nextchar == '\0')
- ++optind;
-
- if (temp == NULL || c == ':')
- {
- if (opterr)
- {
- if (posixly_correct)
- /* 1003.2 specifies the format of this message. */
- fprintf (stderr, _("%s: illegal option -- %c\n"),
- argv[0], c);
- else
- fprintf (stderr, _("%s: invalid option -- %c\n"),
- argv[0], c);
- }
- optopt = c;
- return '?';
- }
- /* Convenience. Treat POSIX -W foo same as long option --foo */
- if (temp[0] == 'W' && temp[1] == ';')
- {
- char *nameend;
- const struct option *p;
- const struct option *pfound = NULL;
- int exact = 0;
- int ambig = 0;
- int indfound = 0;
- int option_index;
-
- /* This is an option that requires an argument. */
- if (*nextchar != '\0')
- {
- optarg = nextchar;
- /* If we end this ARGV-element by taking the rest as an arg,
- we must advance to the next element now. */
- optind++;
- }
- else if (optind == argc)
- {
- if (opterr)
- {
- /* 1003.2 specifies the format of this message. */
- fprintf (stderr, _("%s: option requires an argument -- %c\n"),
- argv[0], c);
- }
- optopt = c;
- if (optstring[0] == ':')
- c = ':';
- else
- c = '?';
- return c;
- }
- else
- /* We already incremented `optind' once;
- increment it again when taking next ARGV-elt as argument. */
- optarg = argv[optind++];
-
- /* optarg is now the argument, see if it's in the
- table of longopts. */
-
- for (nextchar = nameend = optarg; *nameend && *nameend != '='; nameend++)
- /* Do nothing. */ ;
-
- /* Test all long options for either exact match
- or abbreviated matches. */
- for (p = longopts, option_index = 0; p->name; p++, option_index++)
- if (!strncmp (p->name, nextchar, nameend - nextchar))
- {
- if ((unsigned int) (nameend - nextchar) == strlen (p->name))
- {
- /* Exact match found. */
- pfound = p;
- indfound = option_index;
- exact = 1;
- break;
- }
- else if (pfound == NULL)
- {
- /* First nonexact match found. */
- pfound = p;
- indfound = option_index;
- }
- else
- /* Second or later nonexact match found. */
- ambig = 1;
- }
- if (ambig && !exact)
- {
- if (opterr)
- fprintf (stderr, _("%s: option `-W %s' is ambiguous\n"),
- argv[0], argv[optind]);
- nextchar += strlen (nextchar);
- optind++;
- return '?';
- }
- if (pfound != NULL)
- {
- option_index = indfound;
- if (*nameend)
- {
- /* Don't test has_arg with >, because some C compilers don't
- allow it to be used on enums. */
- if (pfound->has_arg)
- optarg = nameend + 1;
- else
- {
- if (opterr)
- fprintf (stderr, _("\
-%s: option `-W %s' doesn't allow an argument\n"),
- argv[0], pfound->name);
-
- nextchar += strlen (nextchar);
- return '?';
- }
- }
- else if (pfound->has_arg == 1)
- {
- if (optind < argc)
- optarg = argv[optind++];
- else
- {
- if (opterr)
- fprintf (stderr,
- _("%s: option `%s' requires an argument\n"),
- argv[0], argv[optind - 1]);
- nextchar += strlen (nextchar);
- return optstring[0] == ':' ? ':' : '?';
- }
- }
- nextchar += strlen (nextchar);
- if (longind != NULL)
- *longind = option_index;
- if (pfound->flag)
- {
- *(pfound->flag) = pfound->val;
- return 0;
- }
- return pfound->val;
- }
- nextchar = NULL;
- return 'W'; /* Let the application handle it. */
- }
- if (temp[1] == ':')
- {
- if (temp[2] == ':')
- {
- /* This is an option that accepts an argument optionally. */
- if (*nextchar != '\0')
- {
- optarg = nextchar;
- optind++;
- }
- else
- optarg = NULL;
- nextchar = NULL;
- }
- else
- {
- /* This is an option that requires an argument. */
- if (*nextchar != '\0')
- {
- optarg = nextchar;
- /* If we end this ARGV-element by taking the rest as an arg,
- we must advance to the next element now. */
- optind++;
- }
- else if (optind == argc)
- {
- if (opterr)
- {
- /* 1003.2 specifies the format of this message. */
- fprintf (stderr,
- _("%s: option requires an argument -- %c\n"),
- argv[0], c);
- }
- optopt = c;
- if (optstring[0] == ':')
- c = ':';
- else
- c = '?';
- }
- else
- /* We already incremented `optind' once;
- increment it again when taking next ARGV-elt as argument. */
- optarg = argv[optind++];
- nextchar = NULL;
- }
- }
- return c;
- }
-}
-
-int
-getopt (argc, argv, optstring)
- int argc;
- char *const *argv;
- const char *optstring;
-{
- return _getopt_internal (argc, argv, optstring,
- (const struct option *) 0,
- (int *) 0,
- 0);
-}
-
-#endif /* Not ELIDE_CODE. */
-\f
-#ifdef TEST
-
-/* Compile with -DTEST to make an executable for use in testing
- the above definition of `getopt'. */
-
-int
-main (argc, argv)
- int argc;
- char **argv;
-{
- int c;
- int digit_optind = 0;
-
- while (1)
- {
- int this_option_optind = optind ? optind : 1;
-
- c = getopt (argc, argv, "abc:d:0123456789");
- if (c == -1)
- break;
-
- switch (c)
- {
- case '0':
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9':
- if (digit_optind != 0 && digit_optind != this_option_optind)
- printf ("digits occur in two different argv-elements.\n");
- digit_optind = this_option_optind;
- printf ("option %c\n", c);
- break;
-
- case 'a':
- printf ("option a\n");
- break;
-
- case 'b':
- printf ("option b\n");
- break;
-
- case 'c':
- printf ("option c with value `%s'\n", optarg);
- break;
-
- case '?':
- break;
-
- default:
- printf ("?? getopt returned character code 0%o ??\n", c);
- }
- }
-
- if (optind < argc)
- {
- printf ("non-option ARGV-elements: ");
- while (optind < argc)
- printf ("%s ", argv[optind++]);
- printf ("\n");
- }
-
- exit (0);
-}
-
-#endif /* TEST */
+++ /dev/null
-/* Declarations for getopt.
- Copyright (C) 1989,90,91,92,93,94,96,97,98 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Library General Public License as
- published by the Free Software Foundation; either version 2 of the
- License, or (at your option) any later version.
-
- The GNU C Library 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
- Library General Public License for more details.
-
- You should have received a copy of the GNU Library General Public
- License along with the GNU C Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA. */
-
-#ifndef _GETOPT_H
-
-#ifndef __need_getopt
-# define _GETOPT_H 1
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* For communication from `getopt' to the caller.
- When `getopt' finds an option that takes an argument,
- the argument value is returned here.
- Also, when `ordering' is RETURN_IN_ORDER,
- each non-option ARGV-element is returned here. */
-
-extern char *optarg;
-
-/* Index in ARGV of the next element to be scanned.
- This is used for communication to and from the caller
- and for communication between successive calls to `getopt'.
-
- On entry to `getopt', zero means this is the first call; initialize.
-
- When `getopt' returns -1, this is the index of the first of the
- non-option elements that the caller should itself scan.
-
- Otherwise, `optind' communicates from one call to the next
- how much of ARGV has been scanned so far. */
-
-extern int optind;
-
-/* Callers store zero here to inhibit the error message `getopt' prints
- for unrecognized options. */
-
-extern int opterr;
-
-/* Set to an option character which was unrecognized. */
-
-extern int optopt;
-
-#ifndef __need_getopt
-/* Describe the long-named options requested by the application.
- The LONG_OPTIONS argument to getopt_long or getopt_long_only is a vector
- of `struct option' terminated by an element containing a name which is
- zero.
-
- The field `has_arg' is:
- no_argument (or 0) if the option does not take an argument,
- required_argument (or 1) if the option requires an argument,
- optional_argument (or 2) if the option takes an optional argument.
-
- If the field `flag' is not NULL, it points to a variable that is set
- to the value given in the field `val' when the option is found, but
- left unchanged if the option is not found.
-
- To have a long-named option do something other than set an `int' to
- a compiled-in constant, such as set a value from `optarg', set the
- option's `flag' field to zero and its `val' field to a nonzero
- value (the equivalent single-letter option character, if there is
- one). For long options that have a zero `flag' field, `getopt'
- returns the contents of the `val' field. */
-
-struct option
-{
-# if defined __STDC__ && __STDC__
- const char *name;
-# else
- char *name;
-# endif
- /* has_arg can't be an enum because some compilers complain about
- type mismatches in all the code that assumes it is an int. */
- int has_arg;
- int *flag;
- int val;
-};
-
-/* Names for the values of the `has_arg' field of `struct option'. */
-
-# define no_argument 0
-# define required_argument 1
-# define optional_argument 2
-#endif /* need getopt */
-
-
-/* Get definitions and prototypes for functions to process the
- arguments in ARGV (ARGC of them, minus the program name) for
- options given in OPTS.
-
- Return the option character from OPTS just read. Return -1 when
- there are no more options. For unrecognized options, or options
- missing arguments, `optopt' is set to the option letter, and '?' is
- returned.
-
- The OPTS string is a list of characters which are recognized option
- letters, optionally followed by colons, specifying that that letter
- takes an argument, to be placed in `optarg'.
-
- If a letter in OPTS is followed by two colons, its argument is
- optional. This behavior is specific to the GNU `getopt'.
-
- The argument `--' causes premature termination of argument
- scanning, explicitly telling `getopt' that there are no more
- options.
-
- If OPTS begins with `--', then non-option arguments are treated as
- arguments to the option '\0'. This behavior is specific to the GNU
- `getopt'. */
-
-#if defined __STDC__ && __STDC__
-# ifdef __GNU_LIBRARY__
-/* Many other libraries have conflicting prototypes for getopt, with
- differences in the consts, in stdlib.h. To avoid compilation
- errors, only prototype getopt for the GNU C library. */
-extern int getopt (int __argc, char *const *__argv, const char *__shortopts);
-# else /* not __GNU_LIBRARY__ */
-extern int getopt ();
-# endif /* __GNU_LIBRARY__ */
-
-# ifndef __need_getopt
-extern int getopt_long (int __argc, char *const *__argv, const char *__shortopts,
- const struct option *__longopts, int *__longind);
-extern int getopt_long_only (int __argc, char *const *__argv,
- const char *__shortopts,
- const struct option *__longopts, int *__longind);
-
-/* Internal only. Users should not call this directly. */
-extern int _getopt_internal (int __argc, char *const *__argv,
- const char *__shortopts,
- const struct option *__longopts, int *__longind,
- int __long_only);
-# endif
-#else /* not __STDC__ */
-extern int getopt ();
-# ifndef __need_getopt
-extern int getopt_long ();
-extern int getopt_long_only ();
-
-extern int _getopt_internal ();
-# endif
-#endif /* __STDC__ */
-
-#ifdef __cplusplus
-}
-#endif
-
-/* Make sure we later can get all the definitions and declarations. */
-#undef __need_getopt
-
-#endif /* getopt.h */
+++ /dev/null
-/* getopt_long and getopt_long_only entry points for GNU getopt.
- Copyright (C) 1987,88,89,90,91,92,93,94,96,97,98
- Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Library General Public License as
- published by the Free Software Foundation; either version 2 of the
- License, or (at your option) any later version.
-
- The GNU C Library 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
- Library General Public License for more details.
-
- You should have received a copy of the GNU Library General Public
- License along with the GNU C Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA. */
-\f
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include "getopt.h"
-
-#if !defined __STDC__ || !__STDC__
-/* This is a separate conditional since some stdc systems
- reject `defined (const)'. */
-#ifndef const
-#define const
-#endif
-#endif
-
-#include <stdio.h>
-
-/* Comment out all this code if we are using the GNU C Library, and are not
- actually compiling the library itself. This code is part of the GNU C
- Library, but also included in many other GNU distributions. Compiling
- and linking in this code is a waste when using the GNU C library
- (especially if it is a shared library). Rather than having every GNU
- program understand `configure --with-gnu-libc' and omit the object files,
- it is simpler to just do this in the source for each such file. */
-
-#define GETOPT_INTERFACE_VERSION 2
-#if !defined _LIBC && defined __GLIBC__ && __GLIBC__ >= 2
-#include <gnu-versions.h>
-#if _GNU_GETOPT_INTERFACE_VERSION == GETOPT_INTERFACE_VERSION
-#define ELIDE_CODE
-#endif
-#endif
-
-#ifndef ELIDE_CODE
-
-
-/* This needs to come after some library #include
- to get __GNU_LIBRARY__ defined. */
-#ifdef __GNU_LIBRARY__
-#include <stdlib.h>
-#endif
-
-#ifndef NULL
-#define NULL 0
-#endif
-
-int
-getopt_long (argc, argv, options, long_options, opt_index)
- int argc;
- char *const *argv;
- const char *options;
- const struct option *long_options;
- int *opt_index;
-{
- return _getopt_internal (argc, argv, options, long_options, opt_index, 0);
-}
-
-/* Like getopt_long, but '-' as well as '--' can indicate a long option.
- If an option that starts with '-' (not '--') doesn't match a long option,
- but does match a short option, it is parsed as a short option
- instead. */
-
-int
-getopt_long_only (argc, argv, options, long_options, opt_index)
- int argc;
- char *const *argv;
- const char *options;
- const struct option *long_options;
- int *opt_index;
-{
- return _getopt_internal (argc, argv, options, long_options, opt_index, 1);
-}
-
-
-#endif /* Not ELIDE_CODE. */
-\f
-#ifdef TEST
-
-#include <stdio.h>
-
-int
-main (argc, argv)
- int argc;
- char **argv;
-{
- int c;
- int digit_optind = 0;
-
- while (1)
- {
- int this_option_optind = optind ? optind : 1;
- int option_index = 0;
- static struct option long_options[] =
- {
- {"add", 1, 0, 0},
- {"append", 0, 0, 0},
- {"delete", 1, 0, 0},
- {"verbose", 0, 0, 0},
- {"create", 0, 0, 0},
- {"file", 1, 0, 0},
- {0, 0, 0, 0}
- };
-
- c = getopt_long (argc, argv, "abc:d:0123456789",
- long_options, &option_index);
- if (c == -1)
- break;
-
- switch (c)
- {
- case 0:
- printf ("option %s", long_options[option_index].name);
- if (optarg)
- printf (" with arg %s", optarg);
- printf ("\n");
- break;
-
- case '0':
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9':
- if (digit_optind != 0 && digit_optind != this_option_optind)
- printf ("digits occur in two different argv-elements.\n");
- digit_optind = this_option_optind;
- printf ("option %c\n", c);
- break;
-
- case 'a':
- printf ("option a\n");
- break;
-
- case 'b':
- printf ("option b\n");
- break;
-
- case 'c':
- printf ("option c with value `%s'\n", optarg);
- break;
-
- case 'd':
- printf ("option d with value `%s'\n", optarg);
- break;
-
- case '?':
- break;
-
- default:
- printf ("?? getopt returned character code 0%o ??\n", c);
- }
- }
-
- if (optind < argc)
- {
- printf ("non-option ARGV-elements: ");
- while (optind < argc)
- printf ("%s ", argv[optind++]);
- printf ("\n");
- }
-
- exit (0);
-}
-
-#endif /* TEST */
+++ /dev/null
-dnl See whether we need a declaration for a function.
-dnl GCC_NEED_DECLARATION(FUNCTION [, EXTRA-HEADER-FILES])
-AC_DEFUN(GCC_NEED_DECLARATION,
-[AC_MSG_CHECKING([whether $1 must be declared])
-AC_CACHE_VAL(gcc_cv_decl_needed_$1,
-[AC_TRY_COMPILE([
-#include <stdio.h>
-#ifdef HAVE_STRING_H
-#include <string.h>
-#else
-#ifdef HAVE_STRINGS_H
-#include <strings.h>
-#endif
-#endif
-#ifdef HAVE_STDLIB_H
-#include <stdlib.h>
-#endif
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-$2],
-[char *(*pfn) = (char *(*)) $1],
-eval "gcc_cv_decl_needed_$1=no", eval "gcc_cv_decl_needed_$1=yes")])
-if eval "test \"`echo '$gcc_cv_decl_needed_'$1`\" = yes"; then
- AC_MSG_RESULT(yes)
- gcc_need_declarations="$gcc_need_declarations $1"
- gcc_tr_decl=NEED_DECLARATION_`echo $1 | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
- AC_DEFINE_UNQUOTED($gcc_tr_decl)
-else
- AC_MSG_RESULT(no)
-fi
-])dnl
-
-dnl Check multiple functions to see whether each needs a declaration.
-dnl GCC_NEED_DECLARATIONS(FUNCTION... [, EXTRA-HEADER-FILES])
-AC_DEFUN(GCC_NEED_DECLARATIONS,
-[for ac_func in $1
-do
-GCC_NEED_DECLARATION($ac_func, $2)
-done
-]
-)
+++ /dev/null
-#include "config.h"
-#ifndef lint
-static char rcsid[] ATTR_UNUSED = "$Id$";
-#endif
-
-/* This part of code is a public domain */
-
-/* CONFORMING TO SVID 3, BSD 4.3, ISO 9899 */
-
-void *memmove(void *dest, const void *src, size_t n)
-{
-char *cdest,*csrc;
-
- if (dest==src || !n) return;
- cdest=dest; csrc=src;
- if (dest<src) {
- while (n--) *cdest++=*csrc++;
- } else {
- cdest+=n; csrc+=n;
- while (n--) *--cdest=*--csrc;
- }
-}
+++ /dev/null
-#include "config.h"
-#ifndef lint
-static char rcsid[] ATTR_UNUSED = "$Id$";
-#endif
-
-/* This part of code is a public domain */
-
-#ifdef HAVE_STDLIB_H
-#include <stdlib.h>
-#endif
-#ifdef HAVE_STRING_H
-#include <string.h>
-#endif
-
-/* CONFORMING TO SVID 3, BSD 4.3 */
-
-char *strdup(const char *s)
-{
-size_t l;
-char *d;
-
- if (!(d=malloc(l=strlen(s)+1))) return(NULL);
- return memcpy(d,s,l);
-}
+++ /dev/null
-#include "config.h"
-#ifndef lint
-static char rcsid[] ATTR_UNUSED = "$Id$";
-#endif
-
-/* This part of code is a public domain */
-
-#ifdef HAVE_SYS_TIME_H
-#include <sys/time.h>
-#endif
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-
-/* CONFORMING TO BSD 4.3 */
-
-void usleep(unsigned long usec)
-{
-struct timeval tv;
-
- tv.tv_sec =usec/1000000;
- tv.tv_usec=usec%1000000;
- select(0,NULL,NULL,NULL,&tv);
-}
+++ /dev/null
-#include <stdlib.h>
-#include <syslog.h>
-#include <unistd.h>
-#include <string.h>
-#include <errno.h>
-
-extern const char **environ;
-
-
-#define ZONES "jankratochvil.net","dyn.jankratochvil.net"
-
-#define SETUID 0 /* user UID */
-#define SETGID 0 /* group GID */
-#define PERMITTED_ENV_LIST "PWD"
-#define EXEC_PATHNAME "/usr/sbin/rndc"
-#define EXEC_ARGV(zone) "/usr/sbin/rndc","reload",(zone),NULL
-
-
-#ifndef G_GNUC_NORETURN
-#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ > 4)
-#define G_GNUC_NORETURN __attribute__((noreturn))
-#else /* !__GNUC__ */
-#define G_GNUC_NORETURN
-#endif /* !__GNUC__ */
-#endif /* !G_GNUC_NORETURN */
-
-#define EXITLOG(msg...) do {\
- openlog("ndc-reload-short",LOG_PID,LOG_DAEMON); \
- syslog(LOG_CRIT,msg); \
- closelog(); \
- exit(EXIT_FAILURE); \
- } while (0)
-
-#define LENGTH(x) (sizeof((x))/sizeof(*(x)))
-
-#define FUNCCHK(funcname,args...) do { \
- if (errno=0,funcname(args)) \
- funcfail( #funcname "()" ); \
- } while (0)
-
-static void funcfail(const char *funcname) G_GNUC_NORETURN;
-static void funcfail(const char *funcname)
-{
- EXITLOG("Unable to %s: %s",funcname,strerror(errno));
-}
-
-int main(int argc,char **argv)
-{
-int total=0;
-const char *allowed[]={ PERMITTED_ENV_LIST };
-const char **allp,**envp;
-char *dup=NULL,*s;
-const char *zones_allowed[]={ ZONES };
-
- errno=0;
- if (argc!=2)
- funcfail("argc!=2");
- for (allp=zones_allowed;allp<zones_allowed+LENGTH(zones_allowed);allp++)
- if (!strcmp(*allp,argv[1]))
- break;
- if (allp>=zones_allowed+LENGTH(zones_allowed))
- funcfail("zone rejected");
-
-retry:
- for (envp=environ;*envp;envp++) {
- if (dup) free(dup);
- dup=strdup(*envp);
- if ((s=strchr(dup,'='))) *s='\0';
- for (allp=allowed;allp<allowed+LENGTH(allowed);allp++)
- if (!strcmp(dup,*allp)) goto ok;
- if (total++>1000)
- EXITLOG("Unable to clean environment for 'ndc': %s",*envp);
- unsetenv(dup);
- goto retry;
-ok:;
- }
- FUNCCHK(setenv,"PATH","/usr/bin",1);
- FUNCCHK(chdir,"/");
- FUNCCHK(setgid,SETGID);
- FUNCCHK(setuid,SETUID);
- errno=0,execl(EXEC_PATHNAME,EXEC_ARGV(argv[1]));
- funcfail("execl()");
-}
+++ /dev/null
-#! /usr/bin/perl
-#
-# $Id$
-
-use strict;
-use warnings;
-
-undef $/;
-my $data=<>;
-$data=~s/^\s*#.*\n//m;
-my($format,$width,$height)=($data=~/^(P[14])\n(\d+) (\d+)\n/);
-$data=$';
-die "Invalid format" if !$format || !$width || !$height;
-die "Picture too big; width=$width < 0xFF && height=$height < 0xFF" if $width>0xFF || $height>0xFF;
-if ($format eq "P1") {
- $data=~tr/01//cd;
- }
-else {
- $data=unpack("b*",$data);
- my $width8=int(($width+7)/8)*8;
- for my $y (0..$height-1) {
- # cut end-of-line gap
- substr($data,$width*$y+$width,$width8-$width)="";
- }
- }
-die "Bad data length ".length($data) if length($data)!=$width*$height;
-
-my @pictureudh=(
- 0x05, # IEI
- 0x04, # IEDL
- 0x15,0x8A, # dest port (ring tones)
- 0x15,0x8A); # src port (unused)
-
-my $multihdr_uniq=int(rand(0x100));
-sub multihdr
-{
-my($num,$total)=@_;
-
- return (
- 0x00, # IEI
- 0x03, # IEDL
- $multihdr_uniq, # unique serial ID
- $total, # total messages
- $num+1); # message number (# from 1)
-}
-
-sub udh
-{
-my(@bytes)=@_;
-
- return pack "C*",scalar(@bytes),@bytes;
-}
-
-
-my $picturebyteslen=int(($width*$height+7)/8)+4; # +4 is for some part of the header
-my $picturedata=unpack("b*",pack("C*",
- 0x30, # version string '0'
- 0x02, # item=OTA bitmap
- ($picturebyteslen>>8)&0xFF, # picture size in bytes incl. header; HIGH
- ($picturebyteslen>>0)&0xFF, # picture size in bytes incl. header; LOW
- 0x00, # animation pictures - 0=static picture
- $width,$height, # picture size in pixels
- 0x01, # picture depth - B/W
- ))
- .$data;
-
-my @out=udh(@pictureudh).pack("b*",$picturedata);
-if (length($out[0])>140) {
- my $datalen=int((length($picturedata)+7)/8);
- my $hdrlen=length(udh(@pictureudh,multihdr(8,8)));
- my $dataspace=(140-$hdrlen);
- my $total=int(($datalen+$dataspace-1)/$dataspace);
- die "Too big: total=$total <=0xFF !" if $total>0xFF;
- @out=map({
- udh(@pictureudh,multihdr($_,$total)).pack("b*",substr($picturedata,$dataspace*8*$_,$dataspace*8));
- } (0..$total-1));
- }
-print map({ uc(unpack("H*",$_))."\n"; } @out);
+++ /dev/null
-#/*
-# PipeBuf version 1.2
-# To compile run: sh pipebuf.c
-# Help is then available: ./pipebuf -h
-
-# Copyright (C) 1998 Jan Kratochvil <short@ucw.cz>
-#
-# 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; you must use exactly version 2.
-#
-# 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 may download a copy of the GNU General Public License from URL
-# http://www.opensource.org/gpl-license.html
-# If not, write to the Free Software Foundation,
-# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-
-echo "Compiling PipeBuf..."
-a="cc"
-b="-s -Wall -O6 -fexpensive-optimizations -fomit-frame-pointer -D_GNU_SOURCE=1"
-c="-o `basename "$0" .c` $0"
-echo "$a $b $c"
-if $a $b $c;then echo -n
-else echo "$a $c"
- if $a $c;then echo -n
- else echo "Failed - please check the output.";exit
- fi
-fi
-echo "done."
-exit
-*/
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <sys/time.h>
-#include <sys/types.h>
-#include <sys/wait.h>
-#include <sys/mman.h>
-#include <signal.h>
-#include <unistd.h>
-#include <fcntl.h>
-#include <string.h>
-#include <limits.h>
-#include <sys/ipc.h>
-#include <sys/shm.h>
-#include <sys/msg.h>
-#include <getopt.h>
-#include <errno.h>
-#include <time.h>
-
-#define BUFSZ (12<<10) /* in KB */
-#define BUFWARN (80) /* in percents */
-#define WARNTIM (5) /* in seconds */
-#define MAX_XFER (PIPE_BUF)
-#undef DEBUG
-
-#ifndef SHMMAX
-#define SHMMAX 0x2000000
-#endif
-
-#ifndef __NORETURN
-#if __GNUC__ >= 2
-#define __NORETURN __attribute__((__noreturn__))
-#else
-#define __NORETURN
-#endif
-#endif
-
-#define RDID (0)
-#define WRID (1)
-
-#ifndef DEBUG
-#define dbg(cmd)
-#else
-#define dbg(cmd) cmd
-#endif
-#define PNAME_LEN (16)
-#define bufw(n) ((n)==bufsz?0:(n))
-#define failf(name) do { fprintf(stderr,"%s: ",pname); perror(name"()"); exit(EXIT_FAILURE); } while (0)
-#ifndef max
-#define max(a,b) ((a)>=(b)?(a):(b))
-#endif
-#ifndef min
-#define min(a,b) ((a)<=(b)?(a):(b))
-#endif
-
-const char version[]="This is PipeBuf, version 1.2\n";
-
-long bufsz=BUFSZ<<10,bufwarn=BUFWARN;
-int prefill,quiet,verbose;
-
-char *pname;
-int shmid=-1,dis_cleanup=0,myself;
-pid_t other=-1;
-volatile struct {
- long rp,wp;
- int eof;
- time_t up;
- struct {
- char sent;
- int msqid;
- } p[2];
- } *comm;
-struct msgbuf smsgbuf={1,{0}};
-struct msgbuf rmsgbuf;
-
-static void cleanup(void)
-{
- dbg(fprintf(stderr,"%s: cleanup()\n",pname));
- if (dis_cleanup) return;
- if (other!=-1) kill(other,SIGTERM);
- shmctl(shmid,IPC_RMID,NULL);
- if (comm) {
- dbg(fprintf(stderr,"%s: msgctl(%d,IPC_RMID), myself=%d\n",pname,comm->p[ myself].msqid, myself));
- msgctl(comm->p[ myself].msqid,IPC_RMID,NULL);
- dbg(fprintf(stderr,"%s: msgctl(%d,IPC_RMID),!myself=%d\n",pname,comm->p[!myself].msqid,!myself));
- msgctl(comm->p[!myself].msqid,IPC_RMID,NULL);
- }
- dis_cleanup=1;
- exit(EXIT_FAILURE);
-}
-
-static void wake(void)
-{
- dbg(fprintf(stderr,"%s: waking (sent=%d)...\n",pname,comm->p[myself].sent));
- if (comm->p[myself].sent) return;
- dbg(fprintf(stderr,"%s: msgsnd(msqid=%d), myself=%d\n",pname,comm->p[!myself].msqid,myself));
-/* dbg(fprintf(stderr,"%s: sleeping 5 sec...\n",pname));
- sleep(5);
- dbg(fprintf(stderr,"%s: sleeping 5 sec done\n",pname));*/
- if (msgsnd(comm->p[!myself].msqid,(struct msgbuf *)&smsgbuf,0,IPC_NOWAIT)) if (errno!=EAGAIN) failf("msgsnd");
- comm->p[myself].sent++;
- dbg(fprintf(stderr,"%s: waked (sent=%d)\n",pname,comm->p[myself].sent));
-}
-
-static void shake(void)
-{
- wake();
- dbg(fprintf(stderr,"%s: waiting (sent=%d)...\n",pname,comm->p[myself].sent));
- if (comm->eof) dbg(fprintf(stderr,"%s: EOF => breaking out of shake()!\n",pname));
- else {
- dbg(fprintf(stderr,"%s: msgrcv(msqid=%d),myself=%d\n",pname,comm->p[myself].msqid,myself));
-/* dbg(fprintf(stderr,"%s: sleeping 5 sec...\n",pname));
- sleep(5);
- dbg(fprintf(stderr,"%s: sleeping 5 sec done\n",pname));*/
- if (msgrcv(comm->p[myself].msqid,&rmsgbuf,0,0,0)) failf("msgrcv");
- }
- comm->p[!myself].sent--;
- dbg(if (comm->p[!myself].sent<0) {
- fprintf(stderr,"%s: FATAL - .sent=%d (<0)!\n",pname,comm->p[!myself].sent);
- exit(EXIT_FAILURE);
- });
- dbg(fprintf(stderr,"%s: wait returned (sent=%d)\n",pname,comm->p[myself].sent));
-}
-
-static void warnbuf(void)
-{
-long crp,cwp,bufused,cup;
-float percused;
-char *tim;
- if (!comm->up||quiet||comm->eof||time(NULL)-comm->up<WARNTIM) return;
- comm->up=cup=time(NULL);
- crp=comm->rp; cwp=comm->wp;
- bufused=crp-cwp+bufsz*!(crp>cwp);
- if ((percused=(float)bufused*100/bufsz)>=bufwarn) return;
- tim=ctime(&cup);
- *strchr(tim,'\n')='\0';
- fprintf(stderr,"%s: %s: WARNING - Low buffer fill-up: %8ld of %8ld (%2.1f%%)\n",
- pname,tim,bufused,bufsz,percused);
-}
-
-static __NORETURN void usage(void)
-{
- fprintf(stderr,"\
-%s\
-This command offers the pipe buffering:\n\
-\n\
-Usage: pipebuf [-b|--buffer <size in KB>] [-p|--prefill] [-w|--warning <percent>]\n\
- [-q|--quiet] [-v|--verbose] [-h|--help] [-V|--version]\n\
-\n\
- -b, --buffer <size in KB>\tSpecify buffer size (1-%dKB, def=%dKB)\n\
- -p, --prefill\t\t\tFill the buffer before first write\n\
- -w, --warning <percent>\tNo-buffer-data warnings threshold (0-100%%, def=%d%%)\n\
- -q, --quiet\t\t\tDon't print warnings\n\
- -v, --verbose\t\t\tInform about phases of transfer\n\
- -h, --help\t\t\tPrint a summary of the options\n\
- -V, --version\t\t\tPrint the version number\n\
-",version,(SHMMAX>>10)-1,BUFSZ,BUFWARN);
- exit(EXIT_FAILURE);
-}
-
-const struct option longopts[]={
-{"buffer" ,1,0,'b'},
-{"prefill",0,0,'p'},
-{"warning",1,0,'w'},
-{"quiet" ,0,0,'q'},
-{"verbose",0,0,'v'},
-{"help" ,0,0,'h'},
-{"version",0,0,'V'}};
-
-int main(int argc,char **argv)
-{
-long cfp;
-int r,optc;
-caddr_t buf;
-char *s;
-
- pname=*argv;
- atexit(cleanup);
- signal(SIGTERM,(void (*)(int))cleanup);
- signal(SIGQUIT,(void (*)(int))cleanup);
- signal(SIGINT ,(void (*)(int))cleanup);
- signal(SIGHUP ,(void (*)(int))cleanup);
- while ((optc=getopt_long(argc,argv,"b:pw:qvhV",longopts,NULL))!=EOF) switch (optc) {
- case 'b':
- errno=EINVAL;
- bufsz=strtol(optarg,&s,0);
- if (*s!='\0'||bufsz<1||bufsz<<10>=SHMMAX) { perror(optarg); usage(); }
- bufsz<<=10;
- break;
- case 'p':
- prefill=1;
- break;
- case 'w':
- errno=EINVAL;
- bufwarn=strtol(optarg,&s,0);
- if (*s!='\0'||bufwarn<0||bufwarn>100) { perror(optarg); usage(); }
- break;
- case 'q':
- quiet=1;
- verbose=0;
- break;
- case 'v':
- verbose=1;
- quiet=0;
- break;
- case 'V':
- fprintf(stderr,version);
- exit(EXIT_FAILURE);
- default: /* also 'h' */
- usage();
- break;
- }
- if ((shmid=shmget(IPC_PRIVATE,bufsz+sizeof(*comm),0600|IPC_CREAT|IPC_EXCL))==-1) failf("shmget");
- if ((int)(buf=shmat(shmid,0,0))==-1) failf("shmat");
- comm=(void *)buf+bufsz;
- bzero((void *)comm,sizeof(*comm));
- if ((comm->p[RDID].msqid=msgget(IPC_PRIVATE,0777|IPC_CREAT|IPC_EXCL))==-1) failf("msgget");
- if ((comm->p[WRID].msqid=msgget(IPC_PRIVATE,0777|IPC_CREAT|IPC_EXCL))==-1) failf("msgget");
- if (!prefill) comm->up=time(NULL);
- other=fork();
- if (other) {
- /* Read process */
- dbg(fprintf(stderr,"%s: started rd\n",pname));
- myself=RDID;
- strncat(pname,"-rd",max(PNAME_LEN-strlen(pname)-1,0));
- if (close(STDOUT_FILENO)) failf("close");
- if (verbose) fprintf(stderr,"%s: Using buffer %ldKB%s...\n",pname,bufsz>>10,(prefill?", filling":""));
- dbg(fprintf(stderr,"%s: pname check rd\n",pname));
- for (;;) {
- if (bufw(comm->rp+1)==comm->wp) {
- if (!comm->up) {
- comm->up=time(NULL);
- if (verbose) fprintf(stderr,"%s: Buffer filled-up, starting transfer...\n",pname);
- }
- shake();
- continue;
- }
- warnbuf();
- cfp=comm->wp;
- dbg(fprintf(stderr,"%s: rp=%ld, wp=%ld",pname,comm->rp,cfp));
- cfp=(cfp<=comm->rp?bufsz-comm->rp-!cfp:cfp-1-comm->rp);
- dbg(fprintf(stderr,", read(%d,%08lx,%ld)\n",STDIN_FILENO,(long)&buf[comm->rp],min(cfp,MAX_XFER)));
- if ((r=read(STDIN_FILENO,&buf[comm->rp],min(cfp,MAX_XFER)))==-1) failf("read");
- dbg(fprintf(stderr,"%s: rp=%ld, wp=%ld, read=%d\n",pname,bufw(comm->rp+r),comm->wp,r));
- if (r) comm->rp=bufw(comm->rp+r);
- else {
- comm->eof=1;
- if (!comm->up) {
- comm->up=time(NULL);
- if (verbose) fprintf(stderr,"%s: Reached EOF before buffer fill-up, starting transfer...\n",pname);
- }
- wake();
- break;
- }
- if (comm->up) wake();
- }
- if (verbose) fprintf(stderr,"%s: All input data read, waiting for write completion...\n",pname);
- if (waitpid(other,NULL,0)!=other) failf("waitpid");
- }
- else {
- /* Write process */
- dbg(fprintf(stderr,"%s: started wr\n",pname));
- myself=WRID;
- strncat(pname,"-wr",max(PNAME_LEN-strlen(pname)-1,0));
- other=getppid();
- if (close(STDIN_FILENO)) failf("close");
- dbg(fprintf(stderr,"%s: pname check wr\n",pname));
- for (;;) {
- if (comm->eof&&comm->rp==comm->wp) break;
- while (!comm->eof&&(!comm->up||comm->rp==comm->wp)) shake();
- if (comm->eof&&comm->rp==comm->wp) break;
- cfp=comm->rp;
- dbg(fprintf(stderr,"%s: rp=%ld, wp=%ld",pname,cfp,comm->wp));
- cfp=(cfp<=comm->wp?bufsz-comm->wp:cfp-comm->wp);
- dbg(fprintf(stderr,", write(%d,%08lx,%ld)\n",STDOUT_FILENO,(long)&buf[comm->wp],min(cfp,MAX_XFER)));
- if ((r=write(STDOUT_FILENO,&buf[comm->wp],min(cfp,MAX_XFER)))==-1) failf("write");
- dbg(fprintf(stderr,"%s: rp=%ld, wp=%ld, write=%d\n",pname,comm->rp,bufw(comm->wp+r),r));
- if (!(comm->wp=bufw(comm->wp+r))&&comm->rp) continue;
- wake();
- warnbuf();
- }
- }
- if (verbose) fprintf(stderr,"%s: Ending operation (sent=%d).\n",pname,comm->p[myself].sent);
- return(EXIT_SUCCESS);
-}
+++ /dev/null
-#include <stdlib.h>
-#include <syslog.h>
-#include <unistd.h>
-#include <string.h>
-#include <errno.h>
-
-extern const char **environ;
-
-
-#define SETUID 554 /* "pserver" user UID */
-#define SETGID 554 /* "pserver" group GID */
-#define PERMITTED_ENV_LIST "PWD"
-#define EXEC_PATHNAME "/usr/bin/cvs"
-
-
-#ifndef G_GNUC_NORETURN
-#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ > 4)
-#define G_GNUC_NORETURN __attribute__((noreturn))
-#else /* !__GNUC__ */
-#define G_GNUC_NORETURN
-#endif /* !__GNUC__ */
-#endif /* !G_GNUC_NORETURN */
-
-#define EXITLOG(msg...) do {\
- openlog("pserverchroot",LOG_PID,LOG_DAEMON); \
- syslog(LOG_CRIT,msg); \
- closelog(); \
- exit(EXIT_FAILURE); \
- } while (0)
-
-#define LENGTH(x) (sizeof((x))/sizeof(*(x)))
-
-#define FUNCCHK(funcname,args...) do { \
- if (errno=0,funcname(args)) \
- funcfail( #funcname ); \
- } while (0)
-
-static void funcfail(const char *funcname) G_GNUC_NORETURN;
-static void funcfail(const char *funcname)
-{
- EXITLOG("Unable to %s(2): %s",funcname,strerror(errno));
-}
-
-int main(int argc,char **argv)
-{
-int total=0;
-const char *allowed[]={ PERMITTED_ENV_LIST };
-const char **allp,**envp;
-char *dup=NULL,*s;
-
-retry:
- for (envp=environ;*envp;envp++) {
- if (dup) free(dup);
- dup=strdup(*envp);
- if ((s=strchr(dup,'='))) *s='\0';
- for (allp=allowed;allp<allowed+LENGTH(allowed);allp++)
- if (!strcmp(dup,*allp)) goto ok;
- if (total++>1000)
- EXITLOG("Unable to clean environment for CVS pserver: %s",*envp);
- unsetenv(dup);
- goto retry;
-ok:;
- }
- FUNCCHK(setenv,"PATH","/usr/bin",1);
- FUNCCHK(chroot,"/home/short/pserver");
- FUNCCHK(chdir,"/");
- FUNCCHK(setgid,SETGID);
- FUNCCHK(setuid,SETUID);
- if (!getuid() || !geteuid() || !getgid() || !getegid())
- EXITLOG("Privileges NOT dropped!: uid=%d,euid=%d,gid=%d,egid=%d",
- getuid(),geteuid(),getgid(),getegid());
- errno=0,execv(EXEC_PATHNAME,argv);
- funcfail("execv");
-}
+++ /dev/null
-BUILD
-RPMS
+++ /dev/null
-cvs-1.11-3:
-cvs-1.10-tmprace.patch
-cvs-1.10.7-fixinfo.patch
-cvs-1.10.7-krb5-1.1.1.patch
-cvs-1.10.8-errno.patch
-cvs-1.10.8-krb4.patch
-cvs-1.10.8-zlib.patch
-cvs-1.11-existence.patch
-cvs-1.11-security.patch
-cvs-1.11.tar.gz
-
-glibc-2.2.2-10:
-glibc-2.2.2.tar.bz2
-glibc-kernel-2.4.patch
-
+++ /dev/null
-diff -ru cvs-1.11-orig/src/options.h.in cvs-1.11/src/options.h.in
---- cvs-1.11-orig/src/options.h.in Wed Jan 27 23:58:14 1999
-+++ cvs-1.11/src/options.h.in Fri Aug 31 10:31:37 2001
-@@ -136,7 +136,7 @@
- * the lines below.
- */
- #ifndef CVS_BADROOT
--#define CVS_BADROOT
-+/*#define CVS_BADROOT*/
- #endif
-
- /* Define this to enable the SETXID support. The way to use this is
+++ /dev/null
-diff -ru cvs-1.11-prep/src/options.h.in cvs-1.11/src/options.h.in
---- cvs-1.11-prep/src/options.h.in Wed Jan 27 23:58:14 1999
-+++ cvs-1.11/src/options.h.in Wed Sep 26 16:34:25 2001
-@@ -63,7 +63,7 @@
- * octal number.
- */
- #ifndef UMASK_DFLT
--#define UMASK_DFLT 002
-+#define UMASK_DFLT 022
- #endif
-
- /*
+++ /dev/null
-%define cvsbase 1.11.1
-%define cvspatch p1
-Summary: A version control system.
-Name: cvs
-Version: %{cvsbase}%{cvspatch}
-Release: 3
-License: GPL
-Group: Development/Tools
-Source: ftp://ftp.cvshome.org/pub/cvs-%{cvsbase}/cvs-%{version}.tar.gz
-URL: http://www.cvshome.org/
-Patch0: cvs-1.11.1p1-mktemp.patch
-Patch1: cvs-1.11.1p1-krb4.patch
-Patch2: cvs-1.11.1p1-automake.patch
-Patch3: cvs-1.11.1p1-sockaddr.patch
-Patch4: cvs-1.11.1p1-authserver.patch
-Patch5: cvs-1.11.1p1-cvspass.patch
-Patch6: cvs-1.11.1p1-bs.patch
-Prereq: /sbin/install-info
-Prefix: %{_prefix}
-Buildroot: %{_tmppath}/%{name}-root
-BuildPreReq: autoconf, automake, libtool, zlib-devel
-%{!?nokerberos:Requires: krb5-libs}
-%{!?nokerberos:BuildPrereq: krb5-devel}
-
-%description
-CVS (Concurrent Version System) is a version control system that can
-record the history of your files (usually, but not always, source
-code). CVS only stores the differences between versions, instead of
-every version of every file you have ever created. CVS also keeps a log
-of who, when, and why changes occurred.
-
-CVS is very helpful for managing releases and controlling the
-concurrent editing of source files among multiple authors. Instead of
-providing version control for a collection of files in a single
-directory, CVS provides version control for a hierarchical collection
-of directories consisting of revision controlled files. These
-directories and files can then be combined together to form a software
-release.
-
-%prep
-%setup -q
-%patch0 -p1 -b .mktemp
-%patch1 -p1 -b .krb4
-%patch2 -p1 -b .automake
-%patch3 -p1 -b .sockaddr
-%patch4 -p1 -b .authserver
-%patch5 -p1 -b .cvspass
-%patch6 -p1 -b .bs
-aclocal
-automake
-autoconf
-
-%build
-%{!?nokerberos: CPPFLAGS="-I/usr/kerberos/include"; export CPPFLAGS}
-%{!?nokerberos: CFLAGS="-I/usr/kerberos/include $RPM_OPT_FLAGS"; export CFLAGS}
-%{!?nokerberos: LIBS="-L/usr/kerberos/lib -lkrb4 -ldes425 -lk5crypto -lcom_err"; export LIBS}
-%configure \
-%{!?nokerberos: --with-gssapi=/usr/kerberos --with-krb4=/usr/kerberos --enable-encryption}
-
-make
-if [ `id -u` -ne 0 ] ; then
- make check
-fi
-
-%install
-[ "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT
-%{makeinstall}
-# forcefully compress the info pages so that install-info will work properly
-# in the %%post
-gzip $RPM_BUILD_ROOT/%{_infodir}/cvs* || true
-
-%clean
-[ "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT
-
-%post
-/sbin/install-info /%{_infodir}/cvs.info.gz /%{_infodir}/dir
-/sbin/install-info /%{_infodir}/cvsclient.info.gz /%{_infodir}/dir
-
-%preun
-if [ $1 = 0 ]; then
- /sbin/install-info --delete /%{_infodir}/cvs.info.gz /%{_infodir}/dir
- /sbin/install-info --delete /%{_infodir}/cvsclient.info.gz /%{_infodir}/dir
-fi
-
-%files
-%defattr(-,root,root)
-%doc AUTHORS BUGS FAQ MINOR-BUGS NEWS PROJECTS TODO README
-%doc doc/*.ps
-%{_bindir}/*
-%{_mandir}/*/*
-%{_infodir}/*.info*
-%{_datadir}/%{name}
-
-%changelog
-* Tue Jul 31 2001 Bernhard Rosenkraenzer <bero@redhat.com> 1.11.1p1-3
-- Fix up initial cvs login (#47457)
-- Bring back the leading newline at the beginning of commit messages
- "a" is one key less than "O". ;)
-- Fix build in the current build system
-
-* Mon Jun 25 2001 Bill Nottingham <notting@redhat.com>
-- don't own /usr/share/info/dir
-
-* Fri Jun 22 2001 Nalin Dahyabhai <nalin@redhat.com>
-- fix the files list
-
-* Mon Jun 18 2001 Nalin Dahyabhai <nalin@redhat.com>
-- update to 1.11.1p1
-- drop no-longer-necessary patches
-- use bundled zlib, because it's apparently not the same as the system zlib
-- run the test suite in the build phase
-- drop explicit Requires: on perl (RPM will catch the interpreter req)
-
-* Mon Jan 29 2001 Nalin Dahyabhai <nalin@redhat.com>
-- fix cvs-1.11-security.patch, which had CR-LF line terminators (#25090)
-- check for and ignore ENOENT errors when attempting to remove symlinks (#25173)
-
-* Mon Jan 08 2001 Preston Brown <pbrown@redhat.com>
-- patch from Olaf Kirch <okir@lst.de> to do tmp files safely.
-
-* Tue Oct 10 2000 Bernhard Rosenkraenzer <bero@redhat.com>
-- 1.11
-
-* Wed Jul 12 2000 Prospector <bugzilla@redhat.com>
-- automatic rebuild
-
-* Mon Jul 10 2000 Nalin Dahyabhai <nalin@redhat.com>
-- always zero errno before calling readdir (#10374)
-
-* Tue Jun 27 2000 Nalin Dahyabhai <nalin@redhat.com>
-- rebuild in new build environment (release 6)
-
-* Mon Jun 5 2000 Nalin Dahyabhai <nalin@redhat.com>
-- rebuild in new build environment (release 5)
-- FHS tweaks
-- actually gzip the info pages
-
-* Wed May 10 2000 Nalin Dahyabhai <nalin@redhat.com>
-- reverse sense of conditional kerberos dependency
-- add kerberos IV patch from Ken Raeburn
-- switch to using the system's zlib instead of built-in
-- default to unstripped binaries
-
-* Tue Apr 4 2000 Bill Nottingham <notting@redhat.com>
-- eliminate explicit krb5-configs dependency
-
-* Mon Mar 20 2000 Bernhard Rosenkraenzer <bero@redhat.com>
-- 1.10.8
-
-* Wed Mar 1 2000 Nalin Dahyabhai <nalin@redhat.com>
-- make kerberos support conditional at build-time
-
-* Wed Mar 1 2000 Bill Nottingham <notting@redhat.com>
-- integrate kerberos support into main tree
-
-* Mon Feb 14 2000 Nalin Dahyabhai <nalin@redhat.com>
-- build with gssapi auth (--with-gssapi, --with-encryption)
-- apply patch to update libs to krb5 1.1.1
-
-* Fri Feb 04 2000 Cristian Gafton <gafton@redhat.com>
-- fix the damn info pages too while we're at it.
-- fix description
-- man pages are compressed
-- make sure %post and %preun work okay
-
-* Sun Jan 9 2000 Jim Kingdon <http://bugzilla.redhat.com/bugzilla>
-- update to 1.10.7.
-
-* Wed Jul 14 1999 Jim Kingdon <http://developer.redhat.com>
-- add the patch to make 1.10.6 usable
- (http://www.cyclic.com/cvs/dev-known.html).
-
-* Tue Jun 1 1999 Jeff Johnson <jbj@redhat.com>
-- update to 1.10.6.
-
-* Sun Mar 21 1999 Cristian Gafton <gafton@redhat.com>
-- auto rebuild in the new build environment (release 2)
-
-* Mon Feb 22 1999 Jeff Johnson <jbj@redhat.com>
-- updated text in spec file.
-
-* Mon Feb 22 1999 Jeff Johnson <jbj@redhat.com>
-- update to 1.10.5.
-
-* Tue Feb 2 1999 Jeff Johnson <jbj@redhat.com>
-- update to 1.10.4.
-
-* Tue Oct 20 1998 Jeff Johnson <jbj@redhat.com>
-- update to 1.10.3.
-
-* Mon Sep 28 1998 Jeff Johnson <jbj@redhat.com>
-- update to 1.10.2.
-
-* Wed Sep 23 1998 Jeff Johnson <jbj@redhat.com>
-- remove trailing characters from rcs2log mktemp args
-
-* Thu Sep 10 1998 Jeff Johnson <jbj@redhat.com>
-- update to 1.10.1
-
-* Mon Aug 31 1998 Jeff Johnson <jbj@redhat.com>
-- fix race conditions in cvsbug/rcs2log
-
-* Sun Aug 16 1998 Jeff Johnson <jbj@redhat.com>
-- update to 1.10.
-
-* Wed Aug 12 1998 Jeff Johnson <jbj@redhat.com>
-- update to 1.9.30.
-
-* Mon Jun 08 1998 Prospector System <bugs@redhat.com>
-- translations modified for de, fr
-
-* Mon Jun 8 1998 Jeff Johnson <jbj@redhat.com>
-- build root
-- update to 1.9.28
-
-* Mon Apr 27 1998 Prospector System <bugs@redhat.com>
-- translations modified for de, fr, tr
-
-* Wed Oct 29 1997 Otto Hammersmith <otto@redhat.com>
-- added install-info stuff
-- added changelog section
+++ /dev/null
-%define glibcrelease 10
-%define auxarches sparcv9 alphaev6
-Summary: The GNU libc libraries.
-Name: glibc
-Version: 2.2.2
-Release: %{glibcrelease}_staticnss
-Copyright: LGPL
-Group: System Environment/Libraries
-Source: %{name}-%{version}.tar.bz2
-# In the source tarball the file diff-CYGNUS-to-REDHAT.patch contains all
-# diffs applied by Red Hat to the current CVS version of glibc
-Buildroot: %{_tmppath}/glibc-%{PACKAGE_VERSION}-root
-Obsoletes: zoneinfo, libc-static, libc-devel, libc-profile, libc-headers,
-Obsoletes: linuxthreads, gencat, locale, ldconfig, locale-ja
-Provides: ldconfig
-Autoreq: false
-Requires: glibc-common = %{version}-%{release}
-%ifarch alpha
-Provides: ld.so.2
-%else
-%endif
-%ifarch sparc
-Obsoletes: libc
-%endif
-Prereq: basesystem
-Conflicts: rpm <= 4.0-0.65
-Patch: glibc-kernel-2.4.patch
-%ifarch ia64 sparc64 s390x
-Conflicts: kernel < 2.4.0
-%define enablekernel 2.4.0
-%else
-%define enablekernel 2.2.5
-%endif
-%define enablekernel2 2.4.1
-%define __find_provides %{_builddir}/%{name}-%{version}/find_provides.sh
-
-%description
-The glibc package contains standard libraries which are used by
-multiple programs on the system. In order to save disk space and
-memory, as well as to make upgrading easier, common system code is
-kept in one place and shared between programs. This particular package
-contains the most important sets of shared libraries: the standard C
-library and the standard math library. Without these two libraries, a
-Linux system will not function.
-
-%package devel
-Summary: Header and object files for development using standard C libraries.
-Group: Development/Libraries
-Conflicts: texinfo < 3.11
-Prereq: /sbin/install-info
-Obsoletes: libc-debug, libc-headers, libc-devel, linuxthreads-devel
-Obsoletes: glibc-debug
-Prereq: kernel-headers
-Requires: kernel-headers >= 2.2.1, %{name} = %{version}
-Autoreq: true
-
-%description devel
-The glibc-devel package contains the header and object files necessary
-for developing programs which use the standard C libraries (which are
-used by nearly all programs). If you are developing programs which
-will use the standard C libraries, your system needs to have these
-standard header and object files available in order to create the
-executables.
-
-Install glibc-devel if you are going to develop programs which will
-use the standard C libraries.
-
-%package profile
-Summary: The GNU libc libraries, including support for gprof profiling.
-Group: Development/Libraries
-Obsoletes: libc-profile
-Autoreq: true
-
-%description profile
-The glibc-profile package includes the GNU libc libraries and support
-for profiling using the gprof program. Profiling is analyzing a
-program's functions to see how much CPU time they use and determining
-which functions are calling other functions during execution. To use
-gprof to profile a program, your program needs to use the GNU libc
-libraries included in glibc-profile (instead of the standard GNU libc
-libraries included in the glibc package).
-
-If you are going to use the gprof program to profile a program, you'll
-need to install the glibc-profile program.
-
-%package common
-Summary: Common binaries and locale data for glibc
-Conflicts: %{name} < %{version}
-Conflicts: %{name} > %{version}
-Autoreq: false
-Group: System Environment/Base
-
-%description common
-The glibc-common package includes common binaries for the GNU libc
-libraries, as well as national language (locale) support and timezone
-databases.
-
-%package -n nscd
-Summary: A Name Service Caching Daemon (nscd).
-Group: System Environment/Daemons
-Conflicts: kernel < 2.2.0
-Prereq: /sbin/chkconfig, /usr/sbin/useradd, /usr/sbin/userdel
-Autoreq: true
-
-%description -n nscd
-Nscd caches name service lookups and can dramatically improve
-performance with NIS+, and may help with DNS as well. Note that you
-can't use nscd with 2.0 kernels because of bugs in the kernel-side
-thread support. Unfortunately, nscd happens to hit these bugs
-particularly hard.
-
-Install nscd if you need a name service lookup caching daemon, and
-you're not using a version 2.0 kernel.
-
-%prep
-%setup -q
-%ifarch ia64 sparc64 s390x %{auxarches}
-# If we are building enablekernel 2.4.1 glibc on older kernel,
-# we have to make sure no binaries compiled against that glibc
-# are ever run
-case `uname -r` in
-[01].*|2.[0-3]*|2.4.0*)
-%patch -p1
-;; esac
-%endif
-
-%ifarch armv4l sparc64 ia64 s390 s390x
-rm -rf glibc-compat
-%endif
-
-find . -type f -size 0 -o -name "*.orig" -exec rm -f {} \;
-
-cat > find_provides.sh <<EOF
-#!/bin/sh
-/usr/lib/rpm/find-provides | grep -v GLIBC_2.2.3
-EOF
-chmod +x find_provides.sh
-
-%build
-rm -rf build-%{_target_cpu}-linux
-mkdir build-%{_target_cpu}-linux ; cd build-%{_target_cpu}-linux
-GCC=gcc
-%ifarch %{ix86}
-BuildFlags="-march=%{_target_cpu} -D__USE_STRING_INLINES -fstrict-aliasing"
-%endif
-%ifarch alphaev6
-BuildFlags="-mcpu=ev6"
-%endif
-%ifarch sparc
-BuildFlags="-fcall-used-g7"
-GCC="gcc -m32"
-%endif
-%ifarch sparcv9
-BuildFlags="-mcpu=ultrasparc -fcall-used-g7"
-GCC="gcc -m32"
-%endif
-%ifarch sparc64
-BuildFlags="-mcpu=ultrasparc -mvis -fcall-used-g7"
-GCC="gcc -m64"
-%endif
-# Temporarily don't do this on ia64 and s390
-%ifnarch ia64 s390 s390x
-BuildFlags="$BuildFlags -freorder-blocks"
-%endif
-BuildFlags="$BuildFlags -DNDEBUG=1"
-EnableKernel="--enable-kernel=%{enablekernel}"
-%ifarch %{auxarches}
-EnableKernel="$EnableKernel --disable-profile"
-%endif
-echo "$BuildFlags" > ../BuildFlags
-CC="$GCC -Lnss -Lbuild-%{_target_cpu}-linux/nss" CFLAGS="$BuildFlags -g -O3" ../configure --prefix=%{_prefix} \
- --enable-add-ons=yes --without-cvs $EnableKernel \
- --enable-static-nss \
- %{_target_cpu}-redhat-linux
-if [ -x /usr/bin/getconf ] ; then
- numprocs=$(/usr/bin/getconf _NPROCESSORS_ONLN)
- if [ $numprocs -eq 0 ]; then
- numprocs=1
- fi
-else
- numprocs=1
-fi
-make -j$numprocs -r CFLAGS="$BuildFlags -g -O3" PARALLELMFLAGS=-s
-gcc -static -Os ../redhat/glibc_post_upgrade.c -o glibc_post_upgrade
-
-%install
-rm -rf $RPM_BUILD_ROOT
-mkdir -p $RPM_BUILD_ROOT
-make install_root=$RPM_BUILD_ROOT install -C build-%{_target_cpu}-linux
-cd build-%{_target_cpu}-linux && \
- make install_root=$RPM_BUILD_ROOT install-locales -C ../localedata objdir=`pwd` && \
- cd ..
-
-%ifarch i686
-rm -rf build-%{_target_cpu}-linux2.4
-mkdir build-%{_target_cpu}-linux2.4 ; cd build-%{_target_cpu}-linux2.4
-GCC=gcc
-BuildFlags=`cat ../BuildFlags`
-EnableKernel="--enable-kernel=%{enablekernel2} --disable-profile"
-CC="$GCC" CFLAGS="$BuildFlags -g -O3" ../configure --prefix=%{_prefix} \
- --enable-add-ons=yes --without-cvs $EnableKernel \
- --enable-static-nss \
- %{_target_cpu}-redhat-linux
-if [ -x /usr/bin/getconf ] ; then
- numprocs=$(/usr/bin/getconf _NPROCESSORS_ONLN)
- if [ $numprocs -eq 0 ]; then
- numprocs=1
- fi
-else
- numprocs=1
-fi
-make -j$numprocs -r CFLAGS="$BuildFlags -g -O3" PARALLELMFLAGS=-s
-mkdir -p $RPM_BUILD_ROOT/lib/%{_target_cpu}/
-cp -a libc.so $RPM_BUILD_ROOT/lib/%{_target_cpu}/`basename $RPM_BUILD_ROOT/lib/libc-*.so`
-ln -sf `basename $RPM_BUILD_ROOT/lib/libc-*.so` $RPM_BUILD_ROOT/lib/%{_target_cpu}/`basename $RPM_BUILD_ROOT/lib/libc.so.*`
-cp -a math/libm.so $RPM_BUILD_ROOT/lib/%{_target_cpu}/`basename $RPM_BUILD_ROOT/lib/libm-*.so`
-ln -sf `basename $RPM_BUILD_ROOT/lib/libm-*.so` $RPM_BUILD_ROOT/lib/%{_target_cpu}/`basename $RPM_BUILD_ROOT/lib/libm.so.*`
-cp -a linuxthreads/libpthread.so $RPM_BUILD_ROOT/lib/%{_target_cpu}/`basename $RPM_BUILD_ROOT/lib/libpthread-*.so`
-ln -sf `basename $RPM_BUILD_ROOT/lib/libpthread-*.so` $RPM_BUILD_ROOT/lib/%{_target_cpu}/`basename $RPM_BUILD_ROOT/lib/libpthread.so.*`
-strip -R .comment $RPM_BUILD_ROOT/lib/{libc,libm,libpthread}-*.so
-cd ..
-%endif
-
-# compatibility hack: this locale has vanished from glibc, but some other
-# programs are still using it. Normally we would handle it in the %pre
-# section but with glibc that is simply not an option
-mkdir -p $RPM_BUILD_ROOT%{_prefix}/lib/locale/ru_RU/LC_MESSAGES
-
-# Remove the files we don't want to distribute
-rm -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libNoVersion*
-%ifarch sparc64 ia64 s390 s390x
-rm -f $RPM_BUILD_ROOT/%{_lib}/libNoVersion*
-%endif
-
-# the man pages for the linuxthreads require special attention
-make -C linuxthreads/man
-mkdir -p $RPM_BUILD_ROOT%{_mandir}/man3
-install -m 0644 linuxthreads/man/*.3thr $RPM_BUILD_ROOT%{_mandir}/man3
-gzip -9nvf $RPM_BUILD_ROOT%{_mandir}/man3/*
-
-if [ -d $RPM_BUILD_ROOT%{_prefix}/info -a "%{_infodir}" != "%{_prefix}/info" ]; then
- mkdir -p $RPM_BUILD_ROOT%{_infodir}
- mv -f $RPM_BUILD_ROOT%{_prefix}/info/* $RPM_BUILD_ROOT%{_infodir}
- rm -rf $RPM_BUILD_ROOT%{_prefix}/info
-fi
-
-gzip -9nvf $RPM_BUILD_ROOT%{_infodir}/libc*
-
-ln -sf libbsd-compat.a $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libbsd.a
-
-install -m 644 redhat/nsswitch.conf $RPM_BUILD_ROOT/etc/nsswitch.conf
-
-# Take care of setuids
-# -- new security review sez that this shouldn't be needed anymore
-#chmod 755 $RPM_BUILD_ROOT%{_prefix}/libexec/pt_chown
-
-# This is for ncsd - in glibc 2.2
-install -m 644 nscd/nscd.conf $RPM_BUILD_ROOT/etc
-mkdir -p $RPM_BUILD_ROOT/etc/rc.d/init.d
-install -m 755 nscd/nscd.init $RPM_BUILD_ROOT/etc/rc.d/init.d/nscd
-
-# Don't include ld.so.cache
-rm -f $RPM_BUILD_ROOT/etc/ld.so.cache
-
-# Include ld.so.conf
-> $RPM_BUILD_ROOT/etc/ld.so.conf
-chmod 644 $RPM_BUILD_ROOT/etc/ld.so.conf
-
-# Install the upgrade program
-install -m 700 build-%{_target_cpu}-linux/glibc_post_upgrade $RPM_BUILD_ROOT/usr/sbin/glibc_post_upgrade
-
-# Strip binaries
-strip -R .comment $RPM_BUILD_ROOT/sbin/* || :
-strip -R .comment $RPM_BUILD_ROOT%{_prefix}/bin/* || :
-strip -R .comment $RPM_BUILD_ROOT%{_prefix}/sbin/* || :
-strip -R .comment $RPM_BUILD_ROOT%{_prefix}/libexec/pt_chown || :
-strip -R .comment $RPM_BUILD_ROOT%{_prefix}/%{_lib}/gconv/* || :
-
-# Hardlink identical locale files together
-ALL_LC="LC_ADDRESS LC_COLLATE LC_CTYPE LC_IDENTIFICATION LC_MEASUREMENT \
- LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE LC_TIME \
- LC_MESSAGES/SYS_LC_MESSAGES"
-for i in $RPM_BUILD_ROOT%{_prefix}/lib/locale/*; do
- if [ ! -d $i ]; then continue; fi
- for j in $ALL_LC; do
- for k in $RPM_BUILD_ROOT%{_prefix}/lib/locale/*; do
- if [ ! -d $k ]; then continue; fi
- if [ $i = $k ]; then break; fi
- if cmp -s $i/$j $k/$j; then ln -f $k/$j $i/$j; break; fi
- done
- done
-done
-
-# BUILD THE FILE LIST
-find $RPM_BUILD_ROOT -type f -or -type l |
- sed -e 's|.*/etc|%config &|' \
- -e 's|.*/gconv/gconv-modules|%verify(not md5 size mtime) %config(noreplace) &|' > rpm.filelist.in
-for n in %{_prefix}/share %{_prefix}/include %{_prefix}/lib/locale; do
- find ${RPM_BUILD_ROOT}${n} -type d | \
- grep -v '%{_prefix}/share$' | \
- sed "s/^/%dir /" >> rpm.filelist.in
-done
-
-# primary filelist
-SHARE_LANG='s|.*/share/locale/\([^/_]\+\).*/LC_MESSAGES/.*\.mo|%lang(\1) &|'
-LIB_LANG='s|.*/lib/locale/\([^/_]\+\)|%lang(\1) &|'
-# rpm does not handle %lang() tagged files hardlinked together accross
-# languages very well, temporarily disable
-LIB_LANG=''
-sed -e "s|$RPM_BUILD_ROOT||" -e "$LIB_LANG" -e "$SHARE_LANG" < rpm.filelist.in |
- grep -v '/etc/localtime' | \
- grep -v '/etc/nsswitch.conf' | \
- grep -v '/etc/ld.so.conf' | \
- sort > rpm.filelist
-
-grep '%{_prefix}/%{_lib}/lib.*_p\.a' < rpm.filelist > profile.filelist || :
-egrep "(%{_prefix}/include)|(%{_infodir})" < rpm.filelist |
- grep -v %{_infodir}/dir > devel.filelist
-
-mv rpm.filelist rpm.filelist.full
-grep -v '%{_prefix}/%{_lib}/lib.*_p.a' rpm.filelist.full |
- egrep -v "(%{_prefix}/include)|(%{_infodir})" > rpm.filelist
-
-grep '%{_prefix}/%{_lib}/lib.*\.a' < rpm.filelist >> devel.filelist
-grep '%{_prefix}/%{_lib}/.*\.o' < rpm.filelist >> devel.filelist
-grep '%{_prefix}/%{_lib}/lib.*\.so' < rpm.filelist >> devel.filelist
-grep '%{_mandir}' < rpm.filelist >> devel.filelist
-
-mv rpm.filelist rpm.filelist.full
-grep -v '%{_prefix}/%{_lib}/lib.*\.a' < rpm.filelist.full |
- grep -v '%{_prefix}/%{_lib}/.*\.o' |
- grep -v '%{_prefix}/%{_lib}/lib.*\.so'|
- grep -v '%{_mandir}' |
- grep -v 'nscd' > rpm.filelist
-
-grep '%{_prefix}/bin' < rpm.filelist >> common.filelist
-grep '%{_prefix}/lib/locale' < rpm.filelist >> common.filelist
-grep '%{_prefix}/libexec' < rpm.filelist >> common.filelist
-grep '%{_prefix}/sbin/[^g]' < rpm.filelist >> common.filelist
-grep '%{_prefix}/share' < rpm.filelist >> common.filelist
-
-mv rpm.filelist rpm.filelist.full
-grep -v '%{_prefix}/bin' < rpm.filelist.full |
- grep -v '%{_prefix}/lib/locale' |
- grep -v '%{_prefix}/libexec' |
- grep -v '%{_prefix}/sbin/[^g]' |
- grep -v '%{_prefix}/share' > rpm.filelist
-
-# /etc/localtime - we're proud of our timezone
-rm -f $RPM_BUILD_ROOT/etc/localtime
-cp -f $RPM_BUILD_ROOT%{_prefix}/share/zoneinfo/US/Eastern $RPM_BUILD_ROOT/etc/localtime
-#ln -sf ..%{_prefix}/share/zoneinfo/US/Eastern $RPM_BUILD_ROOT/etc/localtime
-
-# the last bit: more documentation
-rm -rf documentation
-mkdir documentation
-cp linuxthreads/ChangeLog documentation/ChangeLog.threads
-cp linuxthreads/Changes documentation/Changes.threads
-cp linuxthreads/README documentation/README.threads
-cp linuxthreads/FAQ.html documentation/FAQ-threads.html
-cp -r linuxthreads/Examples documentation/examples.threads
-cp crypt/README.ufc-crypt documentation/README.ufc-crypt
-cp timezone/README documentation/README.timezone
-cp ChangeLog* documentation
-gzip -9 documentation/ChangeLog*
-
-%post -p /usr/sbin/glibc_post_upgrade
-
-%postun -p /sbin/ldconfig
-
-%post devel
-/sbin/install-info %{_infodir}/libc.info.gz %{_infodir}/dir
-
-%pre devel
-# this used to be a link and it is causing nightmares now
-if [ -L %{_prefix}/include/scsi ] ; then
- rm -f %{_prefix}/include/scsi
-fi
-
-%preun devel
-if [ "$1" = 0 ]; then
- /sbin/install-info --delete %{_infodir}/libc.info.gz %{_infodir}/dir
-fi
-
-%pre -n nscd
-/usr/sbin/useradd -M -o -r -d / -s /bin/false \
- -c "NSCD Daemon" -u 28 nscd > /dev/null 2>&1 || :
-
-%post -n nscd
-/sbin/chkconfig --add nscd
-
-%preun -n nscd
-if [ $1 = 0 ] ; then
- service nscd stop > /dev/null 2>&1
- /sbin/chkconfig --del nscd
-fi
-
-%postun -n nscd
-if [ $1 = 0 ] ; then
- /usr/sbin/userdel nscd > /dev/null 2>&1 || :
-fi
-if [ "$1" -ge "1" ]; then
- service nscd condrestart > /dev/null 2>&1 || :
-fi
-
-%clean
-rm -rf "$RPM_BUILD_ROOT"
-rm -f *.filelist*
-
-%files -f rpm.filelist
-%defattr(-,root,root)
-%verify(not md5 size mtime) %config(noreplace) /etc/localtime
-%verify(not md5 size mtime) %config(noreplace) /etc/nsswitch.conf
-%verify(not md5 size mtime) %config(noreplace) /etc/ld.so.conf
-%doc README NEWS INSTALL FAQ BUGS NOTES PROJECTS CONFORMANCE
-%doc COPYING COPYING.LIB README.template README.libm
-%doc hesiod/README.hesiod
-
-%ifnarch %{auxarches}
-%files -f common.filelist common
-%defattr(-,root,root)
-%doc documentation/*
-
-%files -f devel.filelist devel
-%defattr(-,root,root)
-
-%files -f profile.filelist profile
-%defattr(-,root,root)
-
-%files -n nscd
-%defattr(-,root,root)
-%config(noreplace) /etc/nscd.conf
-%config /etc/rc.d/init.d/nscd
-%{_prefix}/sbin/nscd
-%endif
-
-%changelog
-* Fri Apr 6 2001 Jakub Jelinek <jakub@redhat.com>
-- support even 2.4.0 kernels on ia64, sparc64 and s390x
-- include UTF-8 locales
-- make gconv-modules %%config(noreplace)
-
-* Fri Mar 23 2001 Jakub Jelinek <jakub@redhat.com>
-- back out sunrpc changes
-
-* Wed Mar 21 2001 Jakub Jelinek <jakub@redhat.com>
-- update from CVS
- - fix ia64 build
- - fix pthread_getattr_np
-
-* Fri Mar 16 2001 Jakub Jelinek <jakub@redhat.com>
-- update from CVS
- - run atexit() registered functions at dlclose time if they are in shared
- libraries (#28625)
- - add pthread_getattr_np API to make JVM folks happy
-
-* Wed Mar 14 2001 Jakub Jelinek <jakub@redhat.com>
-- require 2.4.1 instead of 2.4.0 on platforms where it required 2.4 kernel
-- fix ldd behaviour on unresolved symbols
-- remove nonsensical ldconfig warning, update osversion for the most
- recent library with the same soname in the same directory instead (#31703)
-- apply selected patches from CVS
-- s390x spec file changes from Florian La Roche
-
-* Wed Mar 7 2001 Jakub Jelinek <jakub@redhat.com>
-- fix gencat (#30894)
-- fix ldconfig changes from yesterday, fix LD_ASSUME_KERNEL handling
-
-* Tue Mar 6 2001 Jakub Jelinek <jakub@redhat.com>
-- update from CVS
-- make pthread_attr_setstacksize consistent before and after pthread manager
- is started (#28194)
-- pass back struct sigcontext from pthread signal wrapper (on ia32 only so
- far, #28493)
-- on i686 ship both --enable-kernel 2.2.5 and 2.4.0 libc/libm/libpthread,
- make ld.so pick the right one
-
-* Sat Feb 17 2001 Preston Brown <pbrown@redhat.com>
-- glib-common doesn't require glibc, until we can figure out how to get out of dependency hell.
-
-* Sat Feb 17 2001 Jakub Jelinek <jakub@redhat.com>
-- make glibc require particular version of glibc-common
- and glibc-common prerequire glibc.
-
-* Fri Feb 16 2001 Jakub Jelinek <jakub@redhat.com>
-- glibc 2.2.2 release
- - fix regex REG_ICASE bug seen in ksymoops
-
-* Sat Feb 10 2001 Jakub Jelinek <jakub@redhat.com>
-- fix regexec leaking memory (#26864)
-
-* Fri Feb 9 2001 Jakub Jelinek <jakub@redhat.com>
-- update from CVS
- - fix ia64 build with gnupro
- - make regex 64bit clean
- - fix tgmath make check failures on alpha
-
-* Tue Feb 6 2001 Jakub Jelinek <jakub@redhat.com>
-- update again for ia64 DF_1_INITFIRST
-
-* Fri Feb 2 2001 Jakub Jelinek <jakub@redhat.com>
-- update from CVS
- - fix getaddrinfo (#25437)
- - support DF_1_INITFIRST (#25029)
-
-* Wed Jan 24 2001 Jakub Jelinek <jakub@redhat.com>
-- build all auxiliary arches with --enablekernel 2.4.0, those wanting
- to run 2.2 kernels can downgrade to the base architecture glibc.
-
-* Sat Jan 20 2001 Jakub Jelinek <jakub@redhat.com>
-- remove %%lang() flags from %%{_prefix}/lib/locale files temporarily
-
-* Sun Jan 14 2001 Jakub Jelinek <jakub@redhat.com>
-- update to 2.2.1 final
- - fix a pthread_kill_other_threads_np breakage (#23966)
- - make static binaries using dlopen work on ia64 again
-- fix a typo in glibc-common group
-
-* Wed Jan 10 2001 Bernhard Rosenkraenzer <bero@redhat.com>
-- devel requires glibc = %%{version}
-- noreplace /etc/nscd.conf
-
-* Wed Jan 10 2001 Jakub Jelinek <jakub@redhat.com>
-- some more security fixes:
- - don't look up LD_PRELOAD libs in cache for SUID apps
- (because that bypasses SUID bit checking on the library)
- - place output files for profiling SUID apps into /var/profile,
- use O_NOFOLLOW for them
- - add checks for $MEMUSAGE_OUTPUT and $SEGFAULT_OUTPUT_NAME
-- hardlink identical locale files together
-- add %%lang() tags to locale stuff
-- remove ko_KR.utf8 for now, it is provided by locale-utf8 package
-
-* Mon Jan 8 2001 Jakub Jelinek <jakub@redhat.com>
-- add glibc-common subpackage
-- fix alphaev6 memcpy (#22494)
-- fix sys/cdefs.h (#22908)
-- don't define stdin/stdout/stderr as macros for -traditional (#22913)
-- work around a bug in IBM JDK (#22932, #23012)
-- fix pmap_unset when network is down (#23176)
-- move nscd in rc.d before netfs on shutdown
-- fix $RESOLV_HOST_CONF in SUID apps (#23562)
-
-* Fri Dec 15 2000 Jakub Jelinek <jakub@redhat.com>
-- fix ftw and nftw
-
-* Wed Dec 13 2000 Jakub Jelinek <jakub@redhat.com>
-- fix fcvt (#22184)
-- ldd /lib/ld-linux.so.2 is not crashing any longer again (#22197)
-- fix gencat
-
-* Mon Dec 11 2000 Jakub Jelinek <jakub@redhat.com>
-- fix alpha htonl and alphaev6 stpcpy
-
-* Sat Dec 9 2000 Jakub Jelinek <jakub@redhat.com>
-- update to CVS to:
- - fix getnameinfo (#21934)
- - don't stomp on memory in rpath handling (#21544)
- - fix setlocale (#21507)
-- fix libNoVersion.so.1 loading code (#21579)
-- use auxarches define in spec file for auxiliary
- architectures (#21219)
-- remove /usr/share directory from filelist (#21218)
-
-* Sun Nov 19 2000 Jakub Jelinek <jakub@redhat.com>
-- update to CVS to fix getaddrinfo
-
-* Fri Nov 17 2000 Jakub Jelinek <jakub@redhat.com>
-- update to CVS to fix freopen
-- remove all alpha workarounds, not needed anymore
-
-* Wed Nov 15 2000 Jakub Jelinek <jakub@redhat.com>
-- fix dladdr bug on alpha/sparc32/sparc64
-- fix Makefiles so that they run static tests properly
-
-* Tue Nov 14 2000 Jakub Jelinek <jakub@redhat.com>
-- update to CVS to fix ldconfig
-
-* Thu Nov 9 2000 Jakub Jelinek <jakub@redhat.com>
-- update to glibc 2.2 release
-
-* Mon Nov 6 2000 Jakub Jelinek <jakub@redhat.com>
-- update to CVS to:
- - export __sysconf@@GLIBC_2.2 (#20417)
-
-* Fri Nov 3 2000 Jakub Jelinek <jakub@redhat.com>
-- merge to 2.1.97
-
-* Mon Oct 30 2000 Jakub Jelinek <jakub@redhat.com>
-- update to CVS, including:
- - fix WORD_BIT/LONG_BIT definition in limits.h (#19088)
- - fix hesiod (#19375)
- - set LC_MESSAGES in zic/zdump for proper error message output (#19495)
- - fix LFS fcntl when used with non-LFS aware kernels (#19730)
-
-* Thu Oct 19 2000 Jakub Jelinek <jakub@redhat.com>
-- fix alpha semctl (#19199)
-- update to CVS, including:
- - fix glibc headers for Compaq non-gcc compilers
- - fix locale alias handling code (#18832)
- - fix rexec on little endian machines (#18886)
-- started writing changelog again
-
-* Thu Aug 10 2000 Adrian Havill <havill@redhat.com>
-- added ja ujis alias for backwards compatibility
+++ /dev/null
-#include <stdio.h>
-
-int fromhex(int a)
-{
- return(a<='9'?a-'0':a-'A'+10);
-}
-
-int main(int argc,char **argv)
-{
-char c,seek;
-int i;
- if (argc>1&&*(argv[1])) seek=*(argv[1]);
- for (;;) {
- i=getchar();
- if (i==-1) break;
- if (i!=seek) { putchar(i); continue; }
- i=getchar();
- if (i=='\n') continue;
- if (i==-1) break;
- c=i;
- i=getchar();
- if (i==-1) break;
- putchar(fromhex(c)*0x10+fromhex(i));
- }
- return(0);
-}
+++ /dev/null
-#include <termios.h>
-#include <errno.h>
-#include <stdio.h>
-
-int main(void)
-{
-int c;
- while ((c=getchar())!=EOF) switch (c) {
- case ' ':
- putchar('+');
- break;
- case '0' ... '9':
- case 'A' ... 'Z':
- case 'a' ... 'z':
- case '!': case '*': case '\'': case '(': case ')': case ',': /* extra */
- case '$': case '-': case '_' : case '.': /* safe */
- putchar(c);
- break;
- default:
- printf("%%%02X",c);
- }
- fflush(stdout);
- return(0);
-}
+++ /dev/null
-#define _LARGEFILE64_SOURCE 1
-
-#include <stdio.h>
-#include <errno.h>
-#include <fcntl.h>
-#include <stdlib.h>
-#include <limits.h>
-#include <unistd.h>
-#include <time.h>
-#include <string.h>
-#include <stdarg.h>
-
-#define DEF_BLOCK 1024
-
-#ifndef LLONG_MAX
-# define LLONG_MAX 9223372036854775807LL
-#endif
-
-char *pname;
-
-static void msg(const char *fmt,...)
-{
-va_list ap;
-time_t tm=time(NULL);
-char *ts=ctime(&tm),*s;
-
- if ((s=strchr(ts,'\n'))) *s='\0';
- fprintf(stderr,"%s: %s - ",pname,ts);
- va_start(ap,fmt);
- vfprintf(stderr,fmt,ap);
- va_end(ap);
- fputc('\n',stderr);
-}
-
-int main(int argc,char **argv)
-{
-int block=DEF_BLOCK,r,fd;
-char *buf;
-long long offs=0,offs2=0,totsize=-1,forcedsize=0;
-
- pname=argv[0];
- if (argc>1) {
- if ((fd=open(argv[1],O_RDONLY
-#ifdef O_BINARY
- |O_BINARY
-#endif
- ))==-1) {
- msg("open(\"%s\") error: %m",argv[1]);
- return(EXIT_FAILURE);
- }
- if (argc>2) {
- block=atoi(argv[2]);
- if (block<1||block>=INT_MAX) {
- block=DEF_BLOCK;
- msg("Forced block size %d",block);
- }
- }
- if (argc>3) {
- forcedsize=atoll(argv[3]);
- if (forcedsize<1||forcedsize>=LLONG_MAX) {
- forcedsize=0;
- msg("Total size NOT forced");
- }
- }
- }
- else fd=STDIN_FILENO;
- if (!(buf=malloc(block))) {
- msg("Error allocating buffer, size=%d",block);
- return(EXIT_FAILURE);
- }
- if (!(totsize=forcedsize)) {
- if ((totsize=lseek64(fd,0,SEEK_END))>0) {
- if ((offs2=lseek64(fd,0,SEEK_SET)))
- msg("Error back-lseek64(0,SEEK_SET)=%Ld: %m",offs2);
- }
- }
- if (totsize)
- msg("Starting, size=%Ld...",totsize);
- else
- msg("Starting, size unknown...",totsize);
-
- while (errno=0,(r=read(fd,buf,block))) {
- if (r<0) {
- msg("read %Ld:%Ld(%u): %m",offs,offs+block,block);
- if (fd==STDIN_FILENO) {
- msg("Error skipping from stdin not supported!");
- return(EXIT_FAILURE);
- }
- offs+=block;
- if ((offs2=lseek64(STDIN_FILENO,offs,SEEK_SET))!=offs) { /* FIXME */
- msg("Error recovery lseek64(%Ld,SEEK_SET)=%Ld: %m",offs,offs2);
- return(EXIT_FAILURE);
- }
- continue;
- }
- offs+=r;
- printf("%Ld",offs);
- if (totsize>0) printf("/%Ld",totsize);
- putchar('\r');
- fflush(stdout);
- }
- msg("Finished, total read %Ld.",offs);
- return(EXIT_SUCCESS);
-}