[news.software.nntp] NNTP 1.5.8 space checking is broken.

news@medusa.informatik.uni-erlangen.de (News Administration) (03/18/90)

The 1.5.8 patch for nntp was a real hit. The dfre code looks very
nice now (really). That code verifies that the spool partition is not too full
to accept more articles. What a pity that if/then/else dependenices in C 
are not tabulation sensitive.

(in english: THE CODE TO CHECK FOR FREE SPACE IN 1.5.8 IS BROKEN)

Below is my patch to make this code work again. 

------- ihave.c -------
*** /tmp/da7631	Sat Mar 17 16:52:57 1990
--- ihave.c	Sat Mar 17 14:22:26 1990
***************
*** 74,79 ****
--- 74,81 ----
  
  	if (retcode <= 0){
  		cp = index(errbuf,':');
+ 		if (cp == (char *) NULL)
+ 			cp = "NULL";
  		while (*cp == ' ') cp++;
  		if (strcasecmp(cp,"inbound",7))
  		    printf("%d %s\r\n", ERR_XFERFAIL, errbuf);

------- misc.c -------
*** /tmp/da7634	Sat Mar 17 16:52:59 1990
--- misc.c	Sat Mar 17 16:52:39 1990
***************
*** 788,798 ****
       if (filfree(fsys) < MINFILES )
   	return( DFREE_INODES );
  # endif
!     if (blkavail(fsys) == -1)
! 	/* the bavail field doesn't apply to this file system */
  	if(blkfree(fsys) < free_space)
  	    return( DFREE_BLOCKS );
!      else if (blkavail(fsys) < free_space )
  	    return( DFREE_BLOCKS );
      return( DFREE_OK );
  }
--- 788,801 ----
       if (filfree(fsys) < MINFILES )
   	return( DFREE_INODES );
  # endif
!     if (blkavail(fsys) == -1) {
! #if !defined(sun)
! 	/* on suns this is -1 if the partition is _very_ full. */
  	if(blkfree(fsys) < free_space)
+ #endif
  	    return( DFREE_BLOCKS );
!     }
!     else if (blkavail(fsys) < free_space )
  	    return( DFREE_BLOCKS );
      return( DFREE_OK );
  }
-- 

Toerless Eckert     Internet: eckert@informatik.uni-erlangen.de
                    X.400: /C=de/A=dbp/P=uni-erlangen/OU=informatik/S=eckert/