dmmartindale (06/16/82)
Readnews has a couple of problems. When you reply to an article via 'r', it parses the From line to squash down multiple berknet addreses. Unfortunately, it does this BEFORE trimming off the fullname, which screws up if someone has several periods in their fullname. The fix involves having the path masher stop at the first blank rather than the end of string. Also, when you cancel an article with 'c', it skips printing the current article entirely. This is fine if you just cancelled the current article, but very annoying if the article you cancelled was the previous one (via "c-"). Both fixes described here do work, but I'm not absolutely certain that the fix for the cancellation bug is correct since I don't fully understand all the bits pointer twiddling that goes on in readr. Perhaps someone more knowledgeable can check it. Dave Martindale, decvax!watmath!dmmartindale First, diff -e: ed readr.c 486,490d 481c if (*ptr && *ptr!=' ') { . 469c if (*ptr && *ptr!=' ') . 467c for (; *++ptr && *ptr!=' ' && !index(NETCHRS, *ptr); i++) . 432d 428a fp = NULL; . 424c if (!cancel(ofp, hptr, i) && hptr == &h) { . w q Then, a diff -c: *** /usr/distr/news/2.7/src/readr.c Fri Jun 11 22:03:22 1982 --- readr.c Tue Jun 15 19:38:27 1982 *************** *** 421,427 break; } else if (i) fprintf(ofp, "Not contributor: cancelling locally only.\n"); ! if (!cancel(ofp, hptr, i)) { clear(bit); saveart; nextbit(); --- 421,427 ----- break; } else if (i) fprintf(ofp, "Not contributor: cancelling locally only.\n"); ! if (!cancel(ofp, hptr, i) && hptr == &h) { clear(bit); saveart; nextbit(); *************** *** 426,431 saveart; nextbit(); obit = -1; if (!cflag) putc('\n', ofp); } --- 426,432 ----- saveart; nextbit(); obit = -1; + fp = NULL; if (!cflag) putc('\n', ofp); } *************** *** 429,435 if (!cflag) putc('\n', ofp); } - fp = NULL; break; /* escape to shell */ --- 430,435 ----- if (!cflag) putc('\n', ofp); } break; /* escape to shell */ *************** *** 464,470 * think we should just wait for the sane world * of internet absolute addreses. */ ! for (; *++ptr && !index(NETCHRS, *ptr); i++) ; if (*ptr) ptr++; --- 464,470 ----- * think we should just wait for the sane world * of internet absolute addreses. */ ! for (; *++ptr && *ptr!=' ' && !index(NETCHRS, *ptr); i++) ; if (*ptr && *ptr!=' ') ptr++; *************** *** 466,472 */ for (; *++ptr && !index(NETCHRS, *ptr); i++) ; ! if (*ptr) ptr++; if (ptr[-1] != ':' && ptr[-1] != '.') { if (*curberk) { --- 466,472 ----- */ for (; *++ptr && *ptr!=' ' && !index(NETCHRS, *ptr); i++) ; ! if (*ptr && *ptr!=' ') ptr++; if (ptr[-1] != ':' && ptr[-1] != '.') { if (*curberk) { *************** *** 478,484 strncpy(curberk, pathptr, ++i); curberk[i] = '\0'; } ! if (*ptr) { pathptr = ptr; i = 1; goto again; --- 478,484 ----- strncpy(curberk, pathptr, ++i); curberk[i] = '\0'; } ! if (*ptr && *ptr!=' ') { pathptr = ptr; i = 1; goto again; *************** *** 483,493 i = 1; goto again; } - /* Strip off all but first word, to avoid - * the full name (Joe Blow). */ - ptr = index(rcbuf, ' '); - if (ptr) - *ptr = 0; } fprintf(ofp, "To: %s\n", rcbuf); fflush(ofp); --- 483,488 ----- i = 1; goto again; } } fprintf(ofp, "To: %s\n", rcbuf); fflush(ofp);