lwall@sdcrdcf.UUCP (Larry Wall) (10/19/84)
#!/bin/sh
: make a subdirectory, cd to it, and run this through sh.
echo 'If this kit is complete, "End of kit" will echo at the end'
echo Extracting index
cat >index <<'!STUFFY!FUNK!'
bug1: Subject: %i and %R use old Article-I.D. line
bug2: Subject: rn may get confused about minimum article numbers
bug3: Subject: rn on System V--circular dependency
bug4: Subject: 2.10.2 disables checkexpired() optimization.
bug5: Subject: Xref patch for 2.10.1 inews is wrong.
bug6: Subject: articles saved to mailbox start with "From: " instead of "From ".
bug7: Subject: core dump on portable rn
bug8: Subject: <sys/ioctl> not found on V7
bug9: Subject: int vs. long
bug10: Subject: %d vs %ld
bug11: Subject: R and F may not include article.
bug12: Subject: missing free() on pdp11's
bug13: Subject: switch bugs
bug14: Subject: missing ; if DEBUGGING not defined
bug15: Subject: (Mail) happens inappropriately.
bug16: Subject: & substitution in fullname incorrect
bug17: Subject: null junk files and checkgroups that want to remove everything
!STUFFY!FUNK!
echo Extracting bug17
cat >bug17 <<'!STUFFY!FUNK!'
System: rn version 4.1
Bug #: 17
Subject: null junk files and checkgroups that want to remove everything
Index: inews.c (version 2.10.2)
Description:
Due to differences between 2.10.1 and 2.10.2, the DOXREFS patch
sent out with the rn kit for inews 2.10.2 can cause inews to do
certain strange things. All your files in the junk newsgroup will
end up empty, and the checkgroups control message will ask you to
remove all non-local newsgroups.
Repeat-By:
If you installed inews.c.2.pat, you've got the problem, and are
already repeating it.
Fix: Install inews.c.17-c on a 2.10.2 inews that already has the DOXREFS
patch. This new patch merely changes some LINKART's into DOXREFS's
(the code was already there, I just short-circuited), and moves the
call to control() to after the article file is copied. Someone
suggested changing the code in control() regarding checkgroups, but
changing inews.c is more general, and besides, I'm lazy and don't
want to patch two files when I could patch one.
!STUFFY!FUNK!
echo Extracting inews.c.17-c
cat >inews.c.17-c <<'!STUFFY!FUNK!'
*** inews.c.2.oldpat Thu Oct 18 09:39:54 1984
--- inews.c.2 Thu Oct 18 09:36:44 1984
***************
*** 576,582
logerr("No valid newsgroups found, moved to junk");
if (localize("junk"))
savehist(histline);
! #ifndef LINKART
xxit(1);
#endif
}
--- 576,582 -----
logerr("No valid newsgroups found, moved to junk");
if (localize("junk"))
savehist(histline);
! #ifndef DOXREFS
xxit(1);
#endif
}
***************
*** 580,586
xxit(1);
#endif
}
! #ifdef LINKART
else
#endif
if (time((time_t)0) > (cgtdate(header.subdate) + DFLTEXP) ){
--- 580,586 -----
xxit(1);
#endif
}
! #ifdef DOXREFS
else
#endif
if (time((time_t)0) > (cgtdate(header.subdate) + DFLTEXP) ){
***************
*** 587,593
logerr("Article too old, moved to junk");
if (localize("junk"))
savehist(histline);
! #ifndef LINKART
xxit(1);
#endif
}
--- 587,593 -----
logerr("Article too old, moved to junk");
if (localize("junk"))
savehist(histline);
! #ifndef DOXREFS
xxit(1);
#endif
}
***************
*** 591,597
xxit(1);
#endif
}
! #ifdef LINKART
else
#endif
if (is_ctl) {
--- 591,597 -----
xxit(1);
#endif
}
! #ifdef DOXREFS
else
#endif
if (is_ctl) {
***************
*** 595,600
else
#endif
if (is_ctl) {
control(&header);
localize("control");
} else {
--- 595,601 -----
else
#endif
if (is_ctl) {
+ #ifndef DOXREFS
control(&header);
#endif
localize("control");
***************
*** 596,601
#endif
if (is_ctl) {
control(&header);
localize("control");
} else {
if (s_find(&srec, FULLSYSNAME) == FALSE)
--- 597,603 -----
if (is_ctl) {
#ifndef DOXREFS
control(&header);
+ #endif
localize("control");
} else {
if (s_find(&srec, FULLSYSNAME) == FALSE)
***************
*** 656,661
fclose(tfp);
fclose(infp);
#endif LINKART || DOXREFS
broadcast();
savehist(histline);
--- 658,668 -----
fclose(tfp);
fclose(infp);
#endif LINKART || DOXREFS
+
+ #ifdef DOXREFS
+ if (is_ctl) /* moved here cuz checkgroups uses ARTICLE! */
+ control(&header);
+ #endif
broadcast();
savehist(histline);
!STUFFY!FUNK!
echo ""
echo "End of kit"
: I do not append .signature, but someone might mail this.
exituddeborg@chalmers.UUCP (G|ran Uddeborg) (10/25/84)
What about a shell script that takes a bug fix message from Larry, unpacks it, installs the patches using rcs, archives the fixes and cleans up? :-) G|ran Uddeborg ...!mcvax!enea!chalmers!uddeborg
bllklly@uwmacc.UUCP (Bill Kelly) (10/25/84)
>What about a shell script that takes a bug fix message from Larry, unpacks >it, installs the patches using rcs, archives the fixes and cleans up? :-) Maybe it's a little silly, but I already wrote a script to unpack sharred source and bug fixes from the net. It's far from perfect in recognizing the beginning of the script, but it works on 80% or more of the stuff we get, including Larry's postings. You need to change the setting of LIB to tell where you stored the unshar.awk file. There are some other minor annoyances, (the worst is that if the article contains a shell script that isn't sharred, it will run the shell script itself, so there is a potential danger) but I find it helpful. (P.S. It peels off everything before the actual script and adds it to file COMMENTS in case you're interested in what the poster had to say about it.) No claims for portability -- it uses csh because I'm more familiar with it than sh. : This is a shar archieve. Extract with sh, not csh. : The rest of this file will extract: : unshar unshar.awk echo extracting - unshar sed 's/^X//' > unshar << '/*EOF' X#!/bin/csh Xset LIB=~bllklly/util Xif (! $#argv) then X echo -n "File to un-shar? " X set fname=$< Xelse X set fname=$1 Xendif Xset numfiles=$#fname Xforeach f ($fname) X echo "echo awk did not succeed." > /tmp/UNSH$$ X awk -f $LIB/unshar.awk $f > /tmp/UNSH$$ X if ( -z /tmp/UNSH$$ ) then X echo awk did not succeed. X else X echo "OK, made the shell input, now run ${f}:" X sh /tmp/UNSH$$ X endif X if ( $status && $status != 9876 ) then X echo "Errors running /tmp/UNSH$$, will leave it for your perusal" X else X echo "Done with unshar." X rm /tmp/UNSH$$ X rm -i $f X endif X @ numfiles = $numfiles - 1 X if ($numfiles > 0) then X echo -n "Hit return to continue. " X set junk=$< X endif Xend /*EOF echo extracting - unshar.awk sed 's/^X//' > unshar.awk << '/*EOF' X# When comments or shell is true, print everything. X# Until comments or shell is true, print just interesting stuff X# from the mail header, like From and Subject. X# "cut" tells whether it looks like a CUT HERE type of file X# "shell" tells whether a recognizable shar start was found XBEGIN {shell=0; comments=0; cut=0; print "cat >> COMMENTS << EOF"} X/^[a-zA-Z].*<</ {if (!shell) print "EOF" X shell=1 X} X/^: .*sh/ {if (!shell) print "EOF" X shell=1 X} X/^echo / {if (!shell) print "EOF" X shell=1 X} X/^#[ !]/ {if (!shell) print "EOF" X shell=1 X} X/^$/ {if (!shell) { X if (!comments) { X comments=1 X print X next X } X } X} X/\<cut\>/ {cut=1} X/\<CUT\>/ {cut=1} X/Subject/ {print; next} X/From/ {print; next} X/Organization/ {print; next} X{if (shell || comments) print; else next} XEND {if (!shell) { X if (comments) { X print "EOF" X print "rm MORECOMMENTS" X } X print "echo This was not a shar type script!" X if (cut) print "echo Looked like it said CUT HERE tho" X print "exit 9876" X } X} /*EOF -- Bill Kelly {allegra, ihnp4, seismo}!uwvax!uwmacc!bllklly 1210 West Dayton St/U Wisconsin Madison/Mad WI 53706 "Life's like a jigsaw...you get the straight bits, but there's plenty missing in the middle." -- Xtc