On Jan 13, 2008 1:46 PM, Mike Gerdts <[EMAIL PROTECTED]> wrote:
> On Jan 12, 2008 11:17 PM, Shawn Walker <[EMAIL PROTECTED]> wrote:
> > On Jan 9, 2008 10:25 PM, Mike Gerdts <[EMAIL PROTECTED]> wrote:
> > > I've made some enhancements to man(1), partly inspired by the default
> > > PATH in the October developer preview release.  Aside from updating
> > > the copyright year, I believe the code is ready for putback.  So far I
> > > have had little luck with the folks at opensolaris-code to get code
> > > reviews[1].  If your priorities are more aligned to have a more
> > > friendly man(1) in the next Indiana release, please take a look and
> > > get me your feedback.
> >
> > http://cr.opensolaris.org/~mgerdts/manpath-from-path/usr/src/cmd/man/src/man.c.html
> >
> > The comments for the various BMP flags at lines 175-177 have better
> > comments at lines 593-600.
> >
> > In particular, the comment for BMP_FALLBACK_MANDIR at line 177 is the
> > same used for BMP_APPEND_DIR at 176, which seems wrong somehow.
>
> Yep.  There was some evolution in this area and some of the ugliness
> got left behind.  It seems to me to be best to put the most useful
> comments around line 175 say something to the effect of "see BMP_*
> flag definitions above for valid flags."
>
> >
> > 538          * "man -p" with out operands
> > s/with out/without/
>
> OK.
>
> > 3191         *p = '\0';
> >
> > The above seems either redundant or unnecessary given what is already
> > being done at lines 3166-3177.
>
> This is necessary, as described below the code block.
>
> 3162         /*
> 3163          * Advance to end of buffer, strip trailing /'s then remove last
> 3164          * directory component.
> 3165          */
> 3166         for ( p = mand; *p != '\0'; p++);
> 3167         for ( ; p > mand && *p == '/' ; p-- );
> 3168         for ( ; p > mand && *p != '/' ; p-- );
> 3169         if ( p == mand && *p == '.' ) {
> 3170                 if ( realpath("..", mand) == NULL ) {
> 3171                         free(mand);
> 3172                         return(NULL);
> 3173                 }
> 3174                 for ( ; *p != '\0' ; p++);
> 3175         } else {
> 3176                 *p = '\0';
> 3177         }
> 3178
> 3179         if ( strlcat(mand, "/man", PATH_MAX) >= PATH_MAX ) {
> 3180                 free(mand);
> 3181                 return(NULL);
> 3182         }
> 3183
> 3184         if ( stat(mand, &sb) == 0 ) {
> 3185                 return(mand);
> 3186         }
> 3187
> 3188         /*
> 3189          * Strip the /man off and try /share/man
> 3190          */
> 3191         *p = '\0';
> 3192         if ( strlcat(mand, "/share/man", PATH_MAX) >= PATH_MAX ) {
>
> Lines 3166 - 3177 cause p to point to null character at the end of a
> string (mand) containing the directory name.  At line 3179 the '\0'
> moves to the right 4 positions.  If <mand>/man doesn't exist
> (3184-3186), it needs to shorten mand (strip off "/man") (3191) before
> appending "/share/man" (3192).

Ah, that makes sense now. Sorry, I was misreading what is there.

Now that I understand what it's doing better, I agree.

+1 from me

Cheers,
-- 
Shawn Walker, Software and Systems Analyst
http://binarycrusader.blogspot.com/

"To err is human -- and to blame it on a computer is even more so." -
Robert Orben
_______________________________________________
indiana-discuss mailing list
[email protected]
http://mail.opensolaris.org/mailman/listinfo/indiana-discuss

Reply via email to