[net.news.notes] notes bug fix for mod.verylongname

root@uokmet.UUCP (11/19/85)

The "mod.verylongname" files are causing a problem on the net.  Sites running
2.8/2.9 BSD are limited to 14 character file names. Unfortunately, the recently
created "mod" groups are not unique in the first 14 characters.  Hopefully,
"news" handles this problem.  However, "notes" does not.  (By the time
"mod.protocols.*" had filtered down to our site, it had already become
"mod.protocols.".)

Fortunately, the modification for "notes" is simple, since mapping already
occurs when using "nfxmit".  The modifcations are:

*** nfxmit.1.c	Mon Nov 18 10:47:57 1985
--- nfxmit.c	Mon Nov 18 10:50:30 1985
***************
*** 38,44
      int     sendstat;					/* nfsend status */
  
      getnet (tosite, &xmit, &rply, &proto);		/* see if non standard */
!     nfalias (local, nfname, tosite);			/* get remote file name */
  
      if (callback)
      {

--- 38,44 -----
      int     sendstat;					/* nfsend status */
  
      getnet (tosite, &xmit, &rply, &proto);		/* see if non standard */
!     nfalias (local, nfname, tosite, 0);		/* get remote file name */
  
      if (callback)
      {
*** nfrcv.1.c	Mon Nov 18 10:47:44 1985
--- nfrcv.c	Mon Nov 18 12:43:35 1985
***************
*** 28,33
      char    fn[WDLEN];					/* network logfile */
      char    nowtime[DATELEN];
      char    buf[CMDLEN];
      struct when_f   atime;
      int     fid;					/* for close loop */
  

--- 28,34 -----
      char    fn[WDLEN];					/* network logfile */
      char    nowtime[DATELEN];
      char    buf[CMDLEN];
+     char    nfdummy[NNLEN];
      struct when_f   atime;
      int     fid;					/* for close loop */
  
***************
*** 50,55
      gettime (&atime);
      sprdate (&atime, nowtime);
  
      if (init (&io, argv[1]) < 0)
      {
  #ifdef	AUTOCREATE					/* if making 'em */

--- 51,61 -----
      gettime (&atime);
      sprdate (&atime, nowtime);
  
+ /*
+  *  find local name
+  */
+     nfalias(argv[1],nfdummy,argv[2],1);
+     strcpy(argv[1],nfdummy);
      if (init (&io, argv[1]) < 0)
      {
  #ifdef	AUTOCREATE					/* if making 'em */
*** nfalias.1.c	Mon Apr 22 21:05:24 1985
--- nfalias.c	Mon Nov 18 10:48:16 1985
***************
*** 22,28
   *	Original Coding:	Ray Essick	April 25, 1982
   */
  
! nfalias (local, remote, remotesys)
  char   *local;
  char   *remote;
  char   *remotesys;

--- 22,33 -----
   *	Original Coding:	Ray Essick	April 25, 1982
   */
  
! /*
!  *	Let "nfalias" map it both directions!
!  *		dir == 0	local maps to remote
!  *		dir != 0	remote maps to local
!  */
! nfalias (local, remote, remotesys,dir)
  char   *local;
  char   *remote;
  char   *remotesys;
***************
*** 26,31
  char   *local;
  char   *remote;
  char   *remotesys;
  {
  
      FILE * aliases;

--- 31,37 -----
  char   *local;
  char   *remote;
  char   *remotesys;
+ int dir;
  {
  
      FILE * aliases;
***************
*** 64,70
  	    continue;					/* skip the line */
  	}
  	*q++ = '\0';					/* break into two parts */
! 	if (strcmp (linebuf, local) == 0)		/* match ? */
  	{
  	    strcpy (remote, q);				/* copy the name over */
  	    fclose (aliases);

--- 70,76 -----
  	    continue;					/* skip the line */
  	}
  	*q++ = '\0';					/* break into two parts */
! 	if (dir)
  	{
  		if (strcmp (q, local) == 0)
  		{
***************
*** 66,74
  	*q++ = '\0';					/* break into two parts */
  	if (strcmp (linebuf, local) == 0)		/* match ? */
  	{
! 	    strcpy (remote, q);				/* copy the name over */
! 	    fclose (aliases);
! 	    return 1;					/* success */
  	}
      }
  /*	yes, we know that this statement is unreachable! */

--- 72,92 -----
  	*q++ = '\0';					/* break into two parts */
  	if (dir)
  	{
! 		if (strcmp (q, local) == 0)
! 		{
! 			strcpy (remote, linebuf);
! 			fclose(aliases);
! 			return 1;
! 		}
! 	}
! 	else
! 	{
! 		if (strcmp (linebuf, local) == 0)		/* match ? */
! 		{
! 	    	    strcpy (remote, q);				/* copy the name over */
! 		    fclose (aliases);
! 		    return 1;					/* success */
! 		}
  	}
      }
  /*	yes, we know that this statement is unreachable! */

Items of importance:
	(1) Modifications apply to release 1.7, though modifications are
	    probably similar in earlier versions.
	(2) Users will have to add "nfalias.o" in the "Makefile" for "nfrcv".
	(3) The changes in "nfxmit.c" do not change how the program is 
	    executed, so it need not be recompiled.
	(4) The mapping is done the same ways as "nfxmit", using "net.aliases".
	    (Something like:
		mod.prot.kermi:mod.protocols.kermit
	    should be done.)

Unfortunately, if everybody doesn't make this modifications, "contaminated"
"mod.verylongname." files will still show up at many sites.  Hopefully, more
care will be taken in selecting names in the future.

	Kevin W. Thomas
	Univ. of Oklahoma
	School of Meteorology
	Norman, OK

UUCP:	...!ihnp4!okstate!uokvax!uokmet!kwthomas