Re: NNTPC: Problem with expire under Solaris 2.4

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> I would be perfectly happy, however, to be told exactly what has to be done
> to get the program to work in a Solaris 2.4 environment.

If anyone is interested in the resolution, the details follow.
The authors may be interested in a couple of things that might be done
to make the program work in a Solaris 2.4 environment.  The wording in
the INSTALL file is unclear but seems to imply that this is the correct
forum in which to post fixes to the code:

1. First problem is getting a clean compile and link in Solaris 2.4.

   The problem is that code in mmalloc/mrealloc.c will always define a
   macro to replace calls to memmove to bcopy instead.  This macro 
   definition is supposed to be conditional on HAVE_MEMMOVE not being
   defined, however, nowhere is HAVE_MEMMOVE defined.  I suspect that
   on most systems, bcopy is present (in fact on Solaris 2.5 and later
   bcopy is present without using the UCB libraries, so people running
   a recent Solaris are OK.)  Unfortunately, our FreeNet system does
   not have software maintenance, so we're stuck running 2.4 for now.

   I would suggest that mrealloc.c should be changed slightly, here 
   is the diff I made (both sets of diffs assume the 1.0.6.5 release
   as of last evening):

     fan1 [~/nntpcache-1.0.6.5/mmalloc] {zz999.19}% diff mrealloc.c mrealloc.c.ORIG
     25,26d24
     < #include "mmprivate.h"
     < 
     29a28,29
     > 
     > #include "mmprivate.h"
     fan1 [~/nntpcache-1.0.6.5/mmalloc] {zz999.20}%

   i.e. move the include which eventually includes config.h ahead of the
   macro definition dependent on HAVE_MEMMOVE.  This now allows one to
   define HAVE_MEMMOVE in config.h and have the subroutine compile and link.
   Ideally, HAVE_MEMMOVE should be added to config.h by the configure
   script, however, I don't know enough about the script to figure out how
   to do that and no documentation on configure appears to accompany nntpcache.

2. Second problem is a segment violation that occurs when you attempt to
   start nntpcached with the -e flag.  An inspection of the code indicates
   that nntpcached will fail processing any command line flags because the
   call to setproctitle in nntpcache.c just before the getopt loop will
   trash the argv vector in a Solaris 2.4 (and probably other) systems.

   I would suggest that the setproctitle call should be made after the
   command line switches are safely processed and the following diff
   does that:

     fan1 [~/nntpcache-1.0.6.5] {zz999.24}% diff nntpcache.c nntpcache.c.ORIG
     622a623,624
     > 	initsetproctitle(argc, argv, envp);
     > 	setproctitle("initialising");
     658,660d659
     < 
     < 	initsetproctitle(argc, argv, envp);
     < 	setproctitle("initialising");
     fan1 [~/nntpcache-1.0.6.5] {zz999.25}% 

3. Third problem is that I copied the nntpcache directories to a new disk
   partition yesterday using tar and tar sets the access time on all the
   copied files.  Once I got the program fixed, expire still didn't because
   none of the files were old enough.  The code in expire.c will use the
   more recent of access or modification time to determine whether a file
   should expire.  For a caching server, I suppose this makes sense, so
   I've temporarily changed the configure file to expire after 12 hours
   just to clean things up and will go back to a two week expire once
   I've gotten rid of the accumulated cache (about three months worth
   by my guess.)  Oh well... live and learn.
--
O- J. Anthony Fitzgerald, jaf@UNB.ca, http://www.unb.ca/csd/staff/jaf/ -O


[Index of Archives]     [Yosemite]     [Yosemite Campsites]     [Bugtraq]     [Linux]     [Trn]

Powered by Linux