nmh-workers
[Top] [All Lists]

Re: Working on the install-mh change questions

2002-11-18 21:01:30
Jon Steinhart <jon(_at_)fourwinds(_dot_)com> writes:

3.    If the $HOME environment variable is set, mypath is copied from the
      getenv return.  Why?  It's never changed.

4.    If the $HOME environment variable is not set, mypath is copied from the
      pw_dir member of the returned passwd structure.  Now, I understand that
      this is a static structure, but getpwuid is never called again so I
      don't see why the copy is needed.

4.    If the $HOME environment variable is not set, the pw_dir member of the
      passwd structure returned by getpwuid() is checked for a NULL pointer.
      This can never happen in a non-error return, which is already checked.
      So why the superfluous check?

These checks are not superflous, they are for maintainability.
Two years from now someone will add a second getenv(3) call and
waste their (probably volunteer) time trying to figure out how
they busted the home dir variable.  That is why, unless you are
writing super-tight-must-be-the-best-performing-code-ever
applications (which mh is not), it is necessary always to make a
copy of the static buffer pointed to by the return values of such
functions.

--  
Eric Gillespie <*> epg(_at_)pretzelnet(_dot_)org

Build a fire for a man, and he'll be warm for a day.  Set a man on
fire, and he'll be warm for the rest of his life. -Terry Pratchett


<Prev in Thread] Current Thread [Next in Thread>