diff options
Diffstat (limited to 'contrib')
-rw-r--r-- | contrib/Makefile.am | 21 | ||||
-rw-r--r-- | contrib/Makefile.in | 359 | ||||
-rw-r--r-- | contrib/bas-README | 25 | ||||
-rw-r--r-- | contrib/pas-R.Marks | 25 | ||||
-rw-r--r-- | contrib/pas-README | 45 | ||||
-rw-r--r-- | contrib/shar.sh | 176 | ||||
-rw-r--r-- | contrib/shar2.sh | 74 | ||||
-rw-r--r-- | contrib/uudecode.bas | 78 | ||||
-rw-r--r-- | contrib/uudecode.pas | 224 | ||||
-rw-r--r-- | contrib/uudecode.pl | 24 | ||||
-rw-r--r-- | contrib/uuencode.pas | 202 | ||||
-rw-r--r-- | contrib/uuencode.pl | 10 |
12 files changed, 1263 insertions, 0 deletions
diff --git a/contrib/Makefile.am b/contrib/Makefile.am new file mode 100644 index 0000000..04ad5b9 --- /dev/null +++ b/contrib/Makefile.am @@ -0,0 +1,21 @@ +## Makefile for the contrib subdirectory of the GNU Shar utilities. +## Copyright (C) 1995, 1996, 2007 Free Software Foundation, Inc. +## +## This program is free software; you can redistribute it and/or modify +## it under the terms of the GNU General Public License as published by +## the Free Software Foundation; either version 3, or (at your option) +## any later version. +## +## This program is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU General Public License for more details. +## +## You should have received a copy of the GNU General Public License +## along with this program; if not, write to the Free Software +## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +## Process this file with automake to produce Makefile.in. + +EXTRA_DIST = shar.sh shar2.sh bas-README uudecode.bas pas-README \ +pas-R.Marks uudecode.pas uuencode.pas uudecode.pl uuencode.pl diff --git a/contrib/Makefile.in b/contrib/Makefile.in new file mode 100644 index 0000000..cdef580 --- /dev/null +++ b/contrib/Makefile.in @@ -0,0 +1,359 @@ +# Makefile.in generated by automake 1.10 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = contrib +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/codeset.m4 \ + $(top_srcdir)/m4/error.m4 $(top_srcdir)/m4/gettext.m4 \ + $(top_srcdir)/m4/glibc2.m4 $(top_srcdir)/m4/glibc21.m4 \ + $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intdiv0.m4 \ + $(top_srcdir)/m4/intmax.m4 $(top_srcdir)/m4/inttypes-pri.m4 \ + $(top_srcdir)/m4/inttypes.m4 $(top_srcdir)/m4/inttypes_h.m4 \ + $(top_srcdir)/m4/lcmessage.m4 $(top_srcdir)/m4/lib-ld.m4 \ + $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ + $(top_srcdir)/m4/longdouble.m4 $(top_srcdir)/m4/longlong.m4 \ + $(top_srcdir)/m4/malloc.m4 $(top_srcdir)/m4/nls.m4 \ + $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/printf-posix.m4 \ + $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/realloc.m4 \ + $(top_srcdir)/m4/sharutils.m4 $(top_srcdir)/m4/signed.m4 \ + $(top_srcdir)/m4/size_max.m4 $(top_srcdir)/m4/stdint_h.m4 \ + $(top_srcdir)/m4/uintmax_t.m4 $(top_srcdir)/m4/ulonglong.m4 \ + $(top_srcdir)/m4/wchar_t.m4 $(top_srcdir)/m4/wint_t.m4 \ + $(top_srcdir)/m4/xsize.m4 $(top_srcdir)/m4/xstrtoimax.m4 \ + $(top_srcdir)/version.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ADD_SCRIPT = @ADD_SCRIPT@ +ALLOCA = @ALLOCA@ +AMTAR = @AMTAR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +COMPRESS = @COMPRESS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DIFF = @DIFF@ +DIRENT_HEADER = @DIRENT_HEADER@ +DIST_ALPHA = @DIST_ALPHA@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +GENCAT = @GENCAT@ +GLIBC2 = @GLIBC2@ +GLIBC21 = @GLIBC21@ +GMSGFMT = @GMSGFMT@ +GREP = @GREP@ +HAVE_ASPRINTF = @HAVE_ASPRINTF@ +HAVE_POSIX_PRINTF = @HAVE_POSIX_PRINTF@ +HAVE_SNPRINTF = @HAVE_SNPRINTF@ +HAVE_WPRINTF = @HAVE_WPRINTF@ +INSTALL = @INSTALL@ +INSTALL_COMPRESS_LINK = @INSTALL_COMPRESS_LINK@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLBISON = @INTLBISON@ +INTLLIBS = @INTLLIBS@ +INTLOBJS = @INTLOBJS@ +INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +LDFLAGS = @LDFLAGS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBOBJS = @LTLIBOBJS@ +MAILER = @MAILER@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +MSGFMT = @MSGFMT@ +MSGMERGE = @MSGMERGE@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL = @PERL@ +POSUB = @POSUB@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SH = @SH@ +SHELL = @SHELL@ +STRIP = @STRIP@ +TAR = @TAR@ +USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +XGETTEXT = @XGETTEXT@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +EXTRA_DIST = shar.sh shar2.sh bas-README uudecode.bas pas-README \ +pas-R.Marks uudecode.pas uuencode.pas uudecode.pl uuencode.pl + +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnits contrib/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnits contrib/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-exec-am: + +install-html: install-html-am + +install-info: install-info-am + +install-man: + +install-pdf: install-pdf-am + +install-ps: install-ps-am + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic distclean \ + distclean-generic distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic pdf pdf-am ps ps-am uninstall uninstall-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/contrib/bas-README b/contrib/bas-README new file mode 100644 index 0000000..e1c787d --- /dev/null +++ b/contrib/bas-README @@ -0,0 +1,25 @@ +Relay-Version: version B 2.10.3 4.3bsd-beta 6/6/85; site hoptoad.uucp +From: rde@ukc.ac.uk (R.D.Eager) +Newsgroups: net.sources +Subject: Revised UUDECODE in MS-BASIC +Date: 14 Mar 86 11:53:53 GMT +Date-Received: 15 Mar 86 13:45:45 GMT +Reply-To: rde@ukc.ac.uk (R.D.Eager) + +A while ago I posted a UUDECODE program, written in Microsoft Basic, +to net.sources. Judging from the number of replies I had, people +are finding this useful if they don't have access to the public +domain UUDECODE, or to a C compiler. + +I found one or two problems recently; the main one was that it would +not create an output file of more than 64K due to an undocumented +feature of MS-BASIC. Here is a corrected version; as always, I +suggest you compile it if you want the run time to be finite. + + Bob Eager + + rde@ukc.UUCP + rde@ukc + ...!mcvax!ukc!rde + + Phone: +44 227 66822 ext 7589 diff --git a/contrib/pas-R.Marks b/contrib/pas-R.Marks new file mode 100644 index 0000000..915ad89 --- /dev/null +++ b/contrib/pas-R.Marks @@ -0,0 +1,25 @@ +From: rmarks@KSP.Unisys.COM (Richard Marks) +Newsgroups: comp.binaries.ibm.pc.archives +Subject: UUENCODE/DECODE 4.20 +Date: 14 Aug 91 14:26:44 GMT + +I have just send in my latest UUENCODE/DECODE package to c.b.i.p +for posting. This is level 4.20. + +This package has been out for four years. It is fast and it automatically +handles multi-section decoding - with automatic CRC testing. Just +save submissions as foo1.uue, foo2.uue, etc.; download to the PC; and +enter UUDECODE FOO. + +Also this package handles lots of variations in checksums and character +permutations. This includes XXencode/decode. + +The 4.20 version replaces the 4.13 version. It is a minor update with +some improved error messages, beeping to alert for errors, and detection +of some additional character permutations. Also the prior default for the +encode was to put a checksum on each line; now with the use of full file +CRC's, the default has been changed to turn this off. + +Regards, +Richard Marks +rmarks@MDC.unisys.COM diff --git a/contrib/pas-README b/contrib/pas-README new file mode 100644 index 0000000..0a31d26 --- /dev/null +++ b/contrib/pas-README @@ -0,0 +1,45 @@ +Here are versions of uuencode and uudecode that will work on an IBM +PC. There is a version for Turbo Pascal and one for Microsoft C. +Porting them into other machines, languages or dialects should not +pose a large problem. + +Sorry about the lack of documentation, but the programs are easy to +use, so you should not have a problem. I don't know why a UNIX +site would not have these in the first place, but at least your +manual should tell you how to use them. If you are not using UNIX +at all, you have my sympathy. + +The Pascal programs' author is unknown. The C programs were +provided by Don Kneller. + +Tom Reingold +Rockefeller University +New York City +UUCP: {seismo | harvard | ihnp4}!cmcl2!rna!rocky2!reintom +BITNET: REINTOM@ROCKVAX +ARPANET: reintom@rockefeller.arpa + +====================================================================== + +Relay-Version: version B 2.10.3 4.3bsd-beta 6/6/85; site hoptoad.uucp +From: darmon@polaris.UUCP (Pierre Darmon) +Newsgroups: net.sources +Subject: Modified Turbo Pascal uudecode/encode. More user-friendly. +Date: 30 Oct 86 01:12:40 GMT +Date-Received: +Reply-To: darmon@polaris.UUCP (Pierre Darmon) +Organization: IBM Research, Yorktown Heights, N.Y. + +The following are the Turbo Pascal source files for uudecode and uuencode, +modified from the net posting to display the remaining bytes to be processed, +instead of filling up the screen with periods. It also displays the percentage +left. See my previous posting to net.micro,net.micro.pc and net.sources for +details. + +Enjoy! + +-- + +Pierre Darmon, IBM Thomas J. Watson Research Center. +.....seismo!philabs!polaris!darmon. +darmon.yktvmz.ibm@csnet-relay diff --git a/contrib/shar.sh b/contrib/shar.sh new file mode 100644 index 0000000..3a9783a --- /dev/null +++ b/contrib/shar.sh @@ -0,0 +1,176 @@ +#!/bin/sh +# UNISRC_ID: @(#)shar.sh 27.1 84/12/17 +: Make a shell archive package + +# Usage: $0 [-b] [-c] [-t] [-v] files... > package +# See the manual entry for details. + + +# Initialize: + +diagnostic='eval echo >&2' # diagnostics to stderr by default. +trap '$diagnostic "$0: quitting early"; exit 1' 1 2 3 15 +base_option=FALSE # use pathnames, not basenames. +check_option=FALSE # don't generate integrity check. +USAGE='Usage: $0 \[-b] \[-c] \[-t] \[-v] files... \> package' + + +# Extract and digest options, if any: +# +# Un-comment the "-)" line below to treat single dashes as a no-op. +# Commented means single dashes elicit a usage diagnostic. + +while [ -n "$1" ] # while there are more arguments, +do # digest them; stop when you find a non-option. + case "$1" in + -b) base_option=TRUE; shift;; + -c) check_option=TRUE; shift;; + -v) verbose=TRUE; shift;; + -t) verbose=TRUE; diagnostic='eval echo >/dev/tty'; shift;; +### -) shift;; # if uncommented, eat single dashes. + -*) $diagnostic $USAGE; exit 1;; # die at illegal options. + *) break;; # non-option found. + esac +done + + +# Check remaining arguments, which should be just a list of files: + +if [ $# = 0 ] +then # no arguments left! + $diagnostic $USAGE + exit 1 +fi + + +# Check the cupboard to see if the ingredients are all there: + +contents='' # no files so far. +contdirs='' # no directories so far. + +for arg # for all files specified, +do # establish the archive name. + if [ -f "$arg" ] + then # file exists and is not a directory. + case $base_option in + TRUE) unpack_name=`basename "$arg"` ;; + FALSE) unpack_name="$arg" ;; + esac + + contents="$contents $unpack_name" + + elif [ -d "$arg" ] + then # file exists and is a directory. + case $base_option in + TRUE) $diagnostic '$0: cannot archive directory "$arg" with -b option.' + exit 1 ;; + FALSE) contdirs="$contdirs $arg/ " ;; + esac + + else # not a plain file and not a directory. + $diagnostic '$0: cannot archive "$arg"' + exit 1 + fi +done + + +# Emit the prologue: +# (The leading newline is for those who type csh instead of sh.) + +cat <<!!! + +# This is a shell archive. Remove anything before this line, +# then unpack it by saving it in a file and typing "sh file". +# +# Wrapped by `who am i | sed 's/[ ].*//'` on `date` +!!! + + +# Emit the list of ingredients: + +# Simple version (breaks if you shar lots of files at once): +# echo "# Contents: $contdirs$contents" +# +# Complex and cosmetic version to pack contents list onto lines that fit on +# one terminal line ("expr string : .*" prints the length of the string): + +MAX=80 +line='# Contents: ' +for item in $contdirs $contents +do + if [ `expr "$line" : '.*' + 1 + "$item" : '.*'` -lt $MAX ] + then # length of old line + new item is short enough, + line="$line $item" # so just append it. + + else # new element makes line too long, + echo "$line" # so put it on a new line. + line="# $item" # start a new line. + MAX=74 # compensate for tab width. + fi +done + +echo "$line" +echo " " + + +# Emit the files and their separators: + +for arg +do + # Decide which name to archive under. + case $base_option in + TRUE) unpack_name=`basename "$arg"` + test $verbose && $diagnostic "a - $unpack_name [from $arg]" ;; + FALSE) unpack_name="$arg" + test $verbose && $diagnostic "a - $arg" ;; + esac + + # Emit either a mkdir or a cat/sed to extract the file. + if [ -d "$arg" ] + then + echo "echo mkdir - $arg" + echo "mkdir $arg" + else + echo "echo x - $unpack_name" + separator="@//E*O*F $unpack_name//" + echo "sed 's/^@//' > \"$unpack_name\" <<'$separator'" + sed -e 's/^[.~@]/@&/' -e 's/^From/@&/' "$arg" + echo $separator + fi + + # Emit chmod to set permissions on the extracted file; + # this keels over if the filename contains "?". + ls -ld $arg | sed \ + -e 's/^.\(...\)\(...\)\(...\).*/u=\1,g=\2,o=\3/' \ + -e 's/-//g' \ + -e 's?.*?chmod & '"$unpack_name?" + echo " " +done + + +# If the -c option was given, emit the checking epilogue: +# (The sed script converts files to basenames so it works regardless of -b.) + +if [ $check_option = TRUE ] +then + echo 'echo Inspecting for damage in transit...' + echo 'temp=/tmp/shar$$; dtemp=/tmp/.shar$$' + echo 'trap "rm -f $temp $dtemp; exit" 0 1 2 3 15' + echo 'cat > $temp <<\!!!' + case $base_option in + TRUE) wc $@ | sed 's=[^ ]*/==' ;; + FALSE) wc $contents | sed 's=[^ ]*/==' ;; + esac + echo '!!!' + echo "wc $contents | sed 's=[^ ]*/==' | "'diff -b $temp - >$dtemp' + echo 'if [ -s $dtemp ]' + echo 'then echo "Ouch [diff of wc output]:" ; cat $dtemp' + echo 'else echo "No problems found."' + echo 'fi' +fi + + +# Finish up: + +echo 'exit 0' # sharchives unpack even if junk follows. +exit 0 diff --git a/contrib/shar2.sh b/contrib/shar2.sh new file mode 100644 index 0000000..e7a6b6a --- /dev/null +++ b/contrib/shar2.sh @@ -0,0 +1,74 @@ +#!/bin/sh - +# +# Copyright (c) 1990 The Regents of the University of California. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# 3. All advertising materials mentioning features or use of this software +# must display the following acknowledgement: +# This product includes software developed by the University of +# California, Berkeley and its contributors. +# 4. Neither the name of the University nor the names of its contributors +# may be used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +# SUCH DAMAGE. +# +# @(#)shar.sh 5.2 (Berkeley) 5/23/90 +# + +if [ $# -eq 0 ]; then + echo 'usage: shar file ...' + exit 1 +fi + +cat << EOF +# This is a shell archive. Save it in a file, remove anything before +# this line, and then unpack it by entering "sh file". Note, it may +# create directories; files and directories will be owned by you and +# have default permissions. +# +# This archive contains: +# +EOF + +for i +do + echo "# $i" +done + +echo "#" + +for i +do + if [ -d $i ]; then + echo "echo c - $i" + echo "mkdir $i > /dev/null 2>&1" + else + echo "echo x - $i" + echo "sed 's/^X//' >$i << 'END-of-$i'" + sed 's/^/X/' $i + echo "END-of-$i" + fi +done +echo exit +echo "" + +exit 0 diff --git a/contrib/uudecode.bas b/contrib/uudecode.bas new file mode 100644 index 0000000..ff7fc30 --- /dev/null +++ b/contrib/uudecode.bas @@ -0,0 +1,78 @@ +1000 KEY OFF +1001 DEFINT A-Z +1010 REM Trap error opening input file +1020 ON ERROR GOTO 1600 +1030 CLS +1040 LOCATE 5,11 +1050 PRINT STRING$(40," ") +1060 LOCATE 5,11 +1070 INPUT "Enter name of input file: ", INFILE$ +1080 OPEN INFILE$ FOR INPUT AS #1 +1090 LOCATE 8,10 +1100 PRINT STRING$(40," ") +1110 REM Trap error opening output file +1120 ON ERROR GOTO 1640 +1130 LOCATE 8,10 +1140 INPUT "Enter name of output file: ", OUTFILE$ +1150 OPEN "R", #2,OUTFILE$, 1 +1160 FIELD #2, 1 AS N$ +1170 REM Trap error at end of file +1180 ON ERROR GOTO 1680 +1190 REM Search for header line +1200 LINE INPUT #1,A$ +1210 IF LEFT$(A$,5) <>"begin" THEN 1200 +1220 LOCATE 11,10 +1230 PRINT "Header = ";A$ +1240 SP = ASC(" ") +1250 DIM BUF(100) +1260 RECNO# = 1 +1270 REM Main loop +1280 LINE INPUT #1, A$ +1290 P = 0 +1300 COUNT = ASC(LEFT$(A$,1)) - SP +1310 IF COUNT = 64 THEN COUNT = 0 +1320 IF COUNT = 0 THEN 1560 +1330 ADJ = COUNT MOD 4 +1340 FOR I = 2 TO LEN(A$) STEP 4 +1350 X1 = ASC(MID$(A$,I,I)) - SP +1360 IF X1 = 64 THEN X1 = 0 +1370 X2 = ASC(MID$(A$,I+1,I+1)) - SP +1380 IF X2 = 64 THEN X2 = 0 +1390 X3 = ASC(MID$(A$,I+2,I+2)) - SP +1400 IF X3 = 64 THEN X3 = 0 +1410 X4 = ASC(MID$(A$,I+3,I+3)) - SP +1420 IF X4 = 64 THEN X4 = 0 +1430 P = P + 1 +1440 BUF(P) = (X2\16) + (X1*4) +1450 P = P + 1 +1460 BUF(P) = (X3\4) + ((X2 MOD 16) * 16) +1470 P = P + 1 +1480 BUF(P) = X4 + ((X3 MOD 4) * 64) +1490 NEXT I +1500 FOR I = 1 TO P +1510 LSET N$ = CHR$(BUF(I)) +1520 PUT #2, RECNO# +1530 RECNO# = RECNO# + 1 +1540 NEXT I +1550 GOTO 1280 +1560 END +1570 REM +1580 REM Error trapping routines +1590 REM +1600 LOCATE 22,20 +1610 PRINT "Can't open input file" +1620 GOSUB 1740 +1630 RESUME 1020 +1640 LOCATE 22,20 +1650 PRINT "Can't open output file" +1660 GOSUB 1740 +1670 RESUME 1090 +1680 LOCATE 22,20 +1690 PRINT "Header line not found" +1700 GOSUB 1740 +1710 LOCATE 24,1 +1720 END +1740 FOR I = 1 TO 5000: NEXT I +1750 LOCATE 22,20 +1760 PRINT STRING$(30," ") +1770 RETURN diff --git a/contrib/uudecode.pas b/contrib/uudecode.pas new file mode 100644 index 0000000..2c80fef --- /dev/null +++ b/contrib/uudecode.pas @@ -0,0 +1,224 @@ +program uudecode; + + CONST defaultSuffix = '.uue'; + offset = 32; + + TYPE string80 = string[80]; + + VAR infile: text; + fi : file of byte; + outfile: file of byte; + lineNum: integer; + line: string80; + size,remaining :real; + + procedure Abort(message: string80); + + begin {abort} + writeln; + if lineNum > 0 then write('Line ', lineNum, ': '); + writeln(message); + halt + end; {Abort} + + procedure NextLine(var s: string80); + + begin {NextLine} + LineNum := succ(LineNum); + {write('.');} + readln(infile, s); + remaining:=remaining-length(s)-2; {-2 is for CR/LF} + write('bytes remaining: ',remaining:7:0,' (', + remaining/size*100.0:3:0,'%)',chr(13)); + end; {NextLine} + + procedure Init; + + procedure GetInFile; + + VAR infilename: string80; + + begin {GetInFile} + if ParamCount = 0 then abort ('Usage: uudecode <filename>'); + infilename := ParamStr(1); + if pos('.', infilename) = 0 + then infilename := concat(infilename, defaultSuffix); + assign(infile, infilename); + {$i-} + reset(infile); + {$i+} + if IOresult > 0 then abort (concat('Can''t open ', infilename)); + writeln ('Decoding ', infilename); + assign(fi,infilename); reset(fi); + size:=FileSize(fi); close(fi); + if size < 0 then size:=size+65536.0; + remaining:=size; + end; {GetInFile} + + procedure GetOutFile; + + var header, mode, outfilename: string80; + ch: char; + + procedure ParseHeader; + + VAR index: integer; + + Procedure NextWord(var word:string80; var index: integer); + + begin {nextword} + word := ''; + while header[index] = ' ' do + begin + index := succ(index); + if index > length(header) then abort ('Incomplete header') + end; + while header[index] <> ' ' do + begin + word := concat(word, header[index]); + index := succ(index) + end + end; {NextWord} + + begin {ParseHeader} + header := concat(header, ' '); + index := 7; + NextWord(mode, index); + NextWord(outfilename, index) + end; {ParseHeader} + + begin {GetOutFile} + if eof(infile) then abort('Nothing to decode.'); + NextLine (header); + while not ((copy(header, 1, 6) = 'begin ') or eof(infile)) do + NextLine(header); + writeln; + if eof(infile) then abort('Nothing to decode.'); + ParseHeader; + assign(outfile, outfilename); + writeln ('Destination is ', outfilename); + {$i-} + reset(outfile); + {$i+} + if IOresult = 0 then + begin + write ('Overwrite current ', outfilename, '? [Y/N] '); + repeat + read (kbd, ch); + ch := UpCase(ch) + until ch in ['Y', 'N']; + writeln(ch); + if ch = 'N' then abort ('Overwrite cancelled.') + end; + rewrite (outfile); + end; {GetOutFile} + + begin {init} + lineNum := 0; + GetInFile; + GetOutFile; + end; { init} + + Function CheckLine: boolean; + + begin {CheckLine} + if line = '' then abort ('Blank line in file'); + CheckLine := not (line[1] in [' ', '`']) + end; {CheckLine} + + + procedure DecodeLine; + + VAR lineIndex, byteNum, count, i: integer; + chars: array [0..3] of byte; + hunk: array [0..2] of byte; + +{ procedure debug; + + var i: integer; + + procedure writebin(x: byte); + + var i: integer; + + begin + for i := 1 to 8 do + begin + write ((x and $80) shr 7); + x := x shl 1 + end; + write (' ') + end; + + begin + writeln; + for i := 0 to 3 do writebin(chars[i]); + writeln; + for i := 0 to 2 do writebin(hunk[i]); + writeln + end; } + + function nextch: char; + + begin {nextch} + lineIndex := succ(lineIndex); + if lineIndex > length(line) then abort('Line too short.'); + if not (line[lineindex] in [' '..'`']) + then abort('Illegal character in line.'); +{ write(line[lineindex]:2);} + if line[lineindex] = '`' then nextch := ' ' + else nextch := line[lineIndex] + end; {nextch} + + procedure DecodeByte; + + procedure GetNextHunk; + + VAR i: integer; + + begin {GetNextHunk} + for i := 0 to 3 do chars[i] := ord(nextch) - offset; + hunk[0] := (chars[0] shl 2) + (chars[1] shr 4); + hunk[1] := (chars[1] shl 4) + (chars[2] shr 2); + hunk[2] := (chars[2] shl 6) + chars[3]; + byteNum := 0 {; + debug } + end; {GetNextHunk} + + begin {DecodeByte} + if byteNum = 3 then GetNextHunk; + write (outfile, hunk[byteNum]); + {writeln(bytenum, ' ', hunk[byteNum]);} + byteNum := succ(byteNum) + end; {DecodeByte} + + begin {DecodeLine} + lineIndex := 0; + byteNum := 3; + count := (ord(nextch) - offset); + for i := 1 to count do DecodeByte + end; {DecodeLine} + + procedure terminate; + + var trailer: string80; + + begin {terminate} + if eof(infile) then abort ('Abnormal end.'); + NextLine (trailer); + if length (trailer) < 3 then abort ('Abnormal end.'); + if copy (trailer, 1, 3) <> 'end' then abort ('Abnormal end.'); + close (infile); + close (outfile) + end; + + begin {uudecode} + init; + NextLine(line); + while CheckLine do + begin + DecodeLine; + NextLine(line) + end; + terminate + end. diff --git a/contrib/uudecode.pl b/contrib/uudecode.pl new file mode 100644 index 0000000..42f090f --- /dev/null +++ b/contrib/uudecode.pl @@ -0,0 +1,24 @@ +# uuencode in Perl. +# Copyright (C) 1995 Free Software Foundation, Inc. +# François Pinard <pinard@iro.umontreal.ca>, 1995. + +# `perl uudecode.pl FILES' will decode all uuencoded files found in +# all input FILES, stripping headers and other non uuencoded data. + +while (<>) +{ + if (/^begin [0-7][0-7][0-7] ([^\n ]+)$/) + { + open (OUTPUT, ">$1") || die "Cannot create $1\n"; + binmode OUTPUT; + while (<>) + { + last if /^end$/; + $block = unpack ("u", $_); + print OUTPUT $block; + } + close OUTPUT; + } +} + +exit 0; diff --git a/contrib/uuencode.pas b/contrib/uuencode.pas new file mode 100644 index 0000000..c30a289 --- /dev/null +++ b/contrib/uuencode.pas @@ -0,0 +1,202 @@ +Program uuencode; + + CONST header = 'begin'; + trailer = 'end'; + defaultMode = '644'; + defaultExtension = '.uue'; + offset = 32; + charsPerLine = 60; + bytesPerHunk = 3; + sixBitMask = $3F; + + TYPE string80 = string[80]; + + VAR infile: file of byte; + outfile: text; + infilename, outfilename, mode: string80; + lineLength, numbytes, bytesInLine: integer; + line: array [0..59] of char; + hunk: array [0..2] of byte; + chars: array [0..3] of byte; + size,remaining :real; + +{ procedure debug; + + var i: integer; + + procedure writebin(x: byte); + + var i: integer; + + begin + for i := 1 to 8 do + begin + write ((x and $80) shr 7); + x := x shl 1 + end; + write (' ') + end; + + begin + for i := 0 to 2 do writebin(hunk[i]); + writeln; + for i := 0 to 3 do writebin(chars[i]); + writeln; + for i := 0 to 3 do writebin(chars[i] and sixBitMask); + writeln + end; } + + procedure Abort (message: string80); + + begin {abort} + writeln(message); + close(infile); + close(outfile); + halt + end; {abort} + + procedure Init; + + procedure GetFiles; + + VAR i: integer; + temp: string80; + ch: char; + + begin {GetFiles} + if ParamCount < 1 then abort ('No input file specified.'); + infilename := ParamStr(1); + {$I-} + assign (infile, infilename); + reset (infile); + {$i+} + if IOResult > 0 then abort (concat ('Can''t open file ', infilename)); + size:=FileSize(infile); + if size < 0 then size:=size+65536.0; + remaining:=size; + write('Uuencoding file ', infilename); + + i := pos('.', infilename); + if i = 0 + then outfilename := infilename + else outfilename := copy (infilename, 1, pred(i)); + mode := defaultMode; + if ParamCount > 1 then + for i := 2 to ParamCount do + begin + temp := Paramstr(i); + if temp[1] in ['0'..'9'] + then mode := temp + else outfilename := temp + end; + if pos ('.', outfilename) = 0 + then outfilename := concat(outfilename, defaultExtension); + assign (outfile, outfilename); + writeln (' to file ', outfilename, '.'); + + {$i-} + reset(outfile); + {$i+} + if IOresult = 0 then + begin + Write ('Overwrite current ', outfilename, '? [Y/N] '); + repeat + read (kbd, ch); + ch := Upcase(ch) + until ch in ['Y', 'N']; + writeln (ch); + if ch = 'N' then abort(concat (outfilename, ' not overwritten.')) + end; + close(outfile); + + {$i-} + rewrite(outfile); + {$i+} + if ioresult > 0 then abort(concat('Can''t open ', outfilename)); + end; {getfiles} + + begin {Init} + GetFiles; + bytesInLine := 0; + lineLength := 0; + numbytes := 0; + writeln (outfile, header, ' ', mode, ' ', infilename); + end; {init} + + procedure FlushLine; + + VAR i: integer; + + procedure writeout(ch: char); + + begin {writeout} + if ch = ' ' then write(outfile, '`') + else write(outfile, ch) + end; {writeout} + + begin {FlushLine} + {write ('.');} + write('bytes remaining: ',remaining:7:0,' (', + remaining/size*100.0:3:0,'%)',chr(13)); + writeout(chr(bytesInLine + offset)); + for i := 0 to pred(lineLength) do + writeout(line[i]); + writeln (outfile); + lineLength := 0; + bytesInLine := 0 + end; {FlushLine} + + procedure FlushHunk; + + VAR i: integer; + + begin {FlushHunk} + if lineLength = charsPerLine then FlushLine; + chars[0] := hunk[0] shr 2; + chars[1] := (hunk[0] shl 4) + (hunk[1] shr 4); + chars[2] := (hunk[1] shl 2) + (hunk[2] shr 6); + chars[3] := hunk[2] and sixBitMask; + {debug;} + for i := 0 to 3 do + begin + line[lineLength] := chr((chars[i] and sixBitMask) + offset); + {write(line[linelength]:2);} + lineLength := succ(lineLength) + end; + {writeln;} + bytesInLine := bytesInLine + numbytes; + numbytes := 0 + end; {FlushHunk} + + procedure encode1; + + begin {encode1}; + if numbytes = bytesperhunk then flushhunk; + read (infile, hunk[numbytes]); + remaining:=remaining-1; + numbytes := succ(numbytes) + end; {encode1} + + procedure terminate; + + begin {terminate} + if numbytes > 0 then flushhunk; + if lineLength > 0 + then + begin + flushLine; + flushLine; + end + else flushline; + writeln (outfile, trailer); + close (outfile); + close (infile); + end; {terminate} + + + begin {uuencode} + init; + while not eof (infile) do encode1; + terminate; + writeln; + end. {uuencode} diff --git a/contrib/uuencode.pl b/contrib/uuencode.pl new file mode 100644 index 0000000..e15f71d --- /dev/null +++ b/contrib/uuencode.pl @@ -0,0 +1,10 @@ +# uuencode in Perl - non tested. +# Copyright (C) 1995 Free Software Foundation, Inc. +# François Pinard <pinard@iro.umontreal.ca>, 1995. + +print "begin 644 $ARGV[0]\n"; +print pack ("u", $bloc) while read (STDIN, $bloc, 45); +print "`\n"; +print "end\n"; + +exit 0; |