csu@alembic.acs.com (Dave Mack) (06/11/90)
Apparently some versions of uudecode are too stupid to ignore
anything in a file preceding a "begin" line, so when a single
file is fed to uumerge, it will fail. This patch corrects the
problem.
Feed this article to patch in the appropriate directory or make
the changes by hand.
patch -d <directory-where-uumerge-lives> < patch1
-------------------------------- cut here --------------------------------
*** uumerge1 Mon Jun 11 02:07:55 1990
--- uumerge Mon Jun 11 02:18:07 1990
***************
*** 35,54 ****
# If the last chunk only contains the last two or three lines of
# the uuencoded file (the ones that don't start with "M"), uumerge
# will die.
!
if ($#ARGV < 0 ) {
print "Usage: uumerge filename [filename...]\n";
exit 1;
}
# if we only have one file, pump it straight into uudecode and die
if ( $#ARGV == 0 ) {
! system("cat $ARGV[0] | uudecode");
exit 0;
}
- $| = 1;
- # open a pipe into uudecode
- open(DECO,"|uudecode") || die "Can't pipe into uudecode\n";
# process the first file - make sure we have a "begin" line
--- 35,83 ----
# If the last chunk only contains the last two or three lines of
# the uuencoded file (the ones that don't start with "M"), uumerge
# will die.
! #
! # CHANGES
! #
! # PATCH 1:
! # It appears that some versions of uudecode are too stupid to skip
! # past the lines preceding the "begin" line, so feeding a one-part
! # uuencoded file to uumerge will bomb.
! #
if ($#ARGV < 0 ) {
print "Usage: uumerge filename [filename...]\n";
exit 1;
}
+ $| = 1;
+ # open a pipe into uudecode
+ open(DECO,"|uudecode") || die "Can't pipe into uudecode\n";
+
# if we only have one file, pump it straight into uudecode and die
if ( $#ARGV == 0 ) {
! open(FIRST,"<$ARGV[0]") || die "Can't open $ARGV[0] for input\n";
!
! while ( <FIRST> ) {
! # skip past everything before the "begin" line
! next unless /^begin [0-9]/;
! last;
! }
! die "$ARGV[0] doesn't contain \"begin\"\n" if eof(FIRST);
!
! print DECO $_; # the begin line
!
! while ( <FIRST> ) {
! print DECO $_ unless /^end/;
! if ( /^end/ ) {
! print DECO $_;
! last;
! }
! die "$ARGV[0] doesn't contain \"end\"\n" if eof(FIRST);
! }
!
! # done with file
! close(FIRST);
exit 0;
}
# process the first file - make sure we have a "begin" line