*BSD News Article 19464


Return to BSD News archive

Path: sserve!newshost.anu.edu.au!munnari.oz.au!constellation!osuunx.ucc.okstate.edu!moe.ksu.ksu.edu!vixen.cso.uiuc.edu!uwm.edu!cs.utexas.edu!uunet!pipex!sunic!news.funet.fi!funic!news.eunet.fi!marvin.hpy.fi!mte
From: mte@hpy.fi (Marko Teiste)
Newsgroups: comp.os.386bsd.bugs
Subject: msgs(1) fix
Date: 13 Aug 1993 11:25:33 GMT
Organization: Helsinki Telephone Company
Lines: 91
Message-ID: <24ftnr$4d7@marvin.hpy.fi>
NNTP-Posting-Host: marvin.hpy.fi
Summary: patch for msgs.c
Keywords: msgs patch
X-Newsreader: TIN [version 1.2 PL0]

msgs didn't know which articles were new due to incorrect 
update of ~/.msgsrc and therefore all messages were considered 
to be unread.

Following diff takes care of this problem.

(Ignore if similar patch has already been posted)


---  CUT HERE --- CUT HERE --- CUT HERE --- CUT HERE --- CUT HERE ---

*** msgs.c.orig	Fri Aug 13 14:10:01 1993
--- msgs.c	Wed Jul 28 16:46:46 1993
***************
*** 374,380 ****
  	}
  	if (clean)
  		exit(0);
- 
  	/*
  	 * prepare to display messages
  	 */
--- 374,379 ----
***************
*** 382,395 ****
  	use_pager = use_pager && totty;
  
  	sprintf(fname, "%s/%s", getenv("HOME"), MSGSRC);
! 	msgsrc = fopen(fname, "r");
  	if (msgsrc) {
  		newrc = NO;
! 		fscanf(msgsrc, "%d\n", &nextmsg);
! 		fclose(msgsrc);
! 		if (nextmsg > lastmsg+1) {
  			printf("Warning: bounds have been reset (%d, %d)\n",
! 				firstmsg, lastmsg);
  			truncate(fname, (off_t)0);
  			newrc = YES;
  		}
--- 381,393 ----
  	use_pager = use_pager && totty;
  
  	sprintf(fname, "%s/%s", getenv("HOME"), MSGSRC);
! 	msgsrc = fopen(fname, "r+");
  	if (msgsrc) {
  		newrc = NO;
! 		if (1 != fscanf(msgsrc, "%d\n", &nextmsg) ||
! 		    nextmsg > lastmsg+1) {
  			printf("Warning: bounds have been reset (%d, %d)\n",
! 			firstmsg, lastmsg);
  			truncate(fname, (off_t)0);
  			newrc = YES;
  		}
***************
*** 396,408 ****
  		else if (!rcfirst)
  			rcfirst = nextmsg - rcback;
  	}
! 	else
  		newrc = YES;
! 	msgsrc = fopen(fname, "a");
  	if (msgsrc == NULL) {
  		perror(fname);
  		exit(errno);
  	}
  	if (rcfirst) {
  		if (rcfirst > lastmsg+1) {
  			printf("Warning: the last message is number %d.\n",
--- 394,409 ----
  		else if (!rcfirst)
  			rcfirst = nextmsg - rcback;
  	}
! 	else {
! 		msgsrc = fopen(fname, "w+");
  		newrc = YES;
! 	}
! 
  	if (msgsrc == NULL) {
  		perror(fname);
  		exit(errno);
  	}
+ 
  	if (rcfirst) {
  		if (rcfirst > lastmsg+1) {
  			printf("Warning: the last message is number %d.\n",

---  CUT HERE --- CUT HERE --- CUT HERE --- CUT HERE --- CUT HERE ---

--
Marko.Teiste@hpy.fi, mte@cirion.fi  |  I think we are in rats' alley
PGP key available                   |  Where the dead men lost their bones