sources-request@munnari.UUCP (02/28/87)
Submitted by: "Tony O'Hagan" <tony@uqcspe.oz.au> Mod.sources: Volume 8, Issue 84 Archive-name: multivol.pch [ You may detect from reading this message that its been in the queue for some time. It has. Sorry about that, there were several causes, not worth going into here. The diff as sent to me culdn't be applied by patch, for reasons I couldn't be bothered finding out. It was easier to apply the patch manually, and then make a new diff for this posting. .. kre ] System: multivol Patch #: 1 Priority: HIGH Subject: Crucial fix, without this, multivol output can be garbage From: "Tony O'Hagan" <tony@uqcspe.oz.au> Description: You may have read a note in comp.unix.wizards from a multivol user mentioning a small fix to wr.c, I asked him for the diff which follows. It's the sort of bug that would make any existing multivol output prone to error. (i.e. don't trust it) Thanks to seismo!uwvax!prairie!dan . Merry Christmas, Tony O'Hagan tony@uqcspe.oz ============================================================================== Tony O'Hagan Australia: (07) 3774125 International: +61 7 3774125 University of Queensland CSNET: tony@uqcspe.oz ACSnet: tony@uqcspe.oz Dept. of Computer Science UUCP: ...!seismo!munnari!uqcspe.oz!tony St. Lucia, Brisbane, ARPA: tony%uqcspe.oz@seismo.css.gov AUSTRALIA 4067 JANET: uqcspe.oz!tony@ukc ============================================================================== Index: wr.c *** /tmp/,RCSt1025278 Thu Dec 18 13:36:32 1986 --- wr.c Thu Dec 18 13:28:12 1986 *************** *** 151,159 blk_len = blk_siz; /* write at most blk_siz chars */ bhd_ptr = (blk_hdr *) blk_ptr; ! sprintf(len_str, "%6ld", blk_len); strncpy(bhd_ptr->bh_dtalen, len_str, BSZDIG); if (blk_len < blk_siz) { /* move nulls to end of last block of last volume */ --- 151,165 ----- blk_len = blk_siz; /* write at most blk_siz chars */ bhd_ptr = (blk_hdr *) blk_ptr; ! /* From: seismo!uwvax!prairie!dan */ ! /* The following was changed by dmf. The block length */ ! /* was originally right-justified in the field, and if */ ! /* it was follwed by a numeric character, the sscanf in */ ! /* the read block code happily kept reading, leading to */ ! /* odd block sizes. This should fix that. */ ! sprintf(len_str, "%-6ld", blk_len); strncpy(bhd_ptr->bh_dtalen, len_str, BSZDIG); if (blk_len < blk_siz) { /* move nulls to end of last block of last volume */