cons@sdccsu3.UUCP (08/03/84)
Subject: REFER mis-sorts reference lists if duplicate citations occur. Index: usr.bin/refer/refer2.c 4.2BSD usr.bin/refer/refer5.c 4.2BSD Description: The putsig routine in refer5.c is responsible for placing signals (usually superscripts, or author-date labels) in the body of a document. Putsig also makes the signals available for printing in the reference list by emitting strings such as ".ds [F signal" into the reference list. If a reference is cited more than once, it is only put on the reference list the first time it is cited. However putsig persists in emitting the ".ds [F ..." string for duplicate citations. This causes a problem if the reference list is sorted because the extraneous ".ds [F ..." material appears at the beginning of the next non-duplicate reference where it obscures the sortkey. Thus the reference list is mis-sorted. Repeat-By: Create a document which cites a reference twice, then cites a new reference. Process the document using REFER with the -s option. Notice the extra ".ds [F ..." line in the REFER output. If the two references came out sorted properly, you were lucky, reverse their roles and you will see the failure. Fix: Instead of providing the fixes in the form of diff output, the sources for refer2.c and refer5.c have been posted to net.sources. Numerous comments and a feature to condense numeric signals (1,2,3 becomes 1-3) have been added. You may find these useful. Brief description of the fix: putsig is called at two places in refer2.c, in one context a duplicate citation is being processed and in the other a new citation is being processed. Add a flag parameter to putsig to distinguish the two calls. Modify the routine to suppress the emission of ".ds [F ..." when it is called for a duplicate citation. (See sources posted to net.sources) Rick Accurso UUCP: ...!ucbvax!sdcsvax!sdccsu3!accurso ARPA: sdcsvax!sdccsu3!accurso@nosc