NetBSD-Bugs archive

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

Re: bin/38327: uu{en,de}code - any reason to use non-portable [sg]etprogname?



> The following reply was made to PR bin/38327; it has been noted by GNATS.

> From: Alan Barrett <apb%cequrux.com@localhost>
> To: gnats-bugs%NetBSD.org@localhost
> Cc: 
> Subject: Re: bin/38327: uu{en,de}code - any reason to use non-portable
>       [sg]etprogname?
> Date: Sat, 29 Mar 2008 13:57:44 +0200

>  On Sat, 29 Mar 2008, cheusov%tut.by@localhost wrote:
 >> There are some problems in compiling NetBSD versions of uuencode and
 >> uudecode utilities under other OSes (I need it under Linux) because
 >> these utilities are not portable enough.  Non-portable setprogname(3)
 >> and getprogname(3) functions are used.  I think there is no reason for
 >> this.
>  
>  Use of set/getprogname is recommended by NetBSD's style guide
>  (src/share/misc/style), in order to increase portability.  They replace
>  unportable uses of the __progname symbol, which is set by NetBSD's
>  default program startup code before caling main().

There is no reason to use __progname or argv[0] or anything similar in
uu{en,de}code. Constant strings "uuencode" and "uudecode" are enough
because they are used only for printing a usage message.

   uudecode.c:
   ...
        (void)fprintf(stderr, "usage: %s [-m | -p] [file ...]\n",
                     getprogname());
   uuencode.c:
        (void)fprintf(stderr, "usage: %s [-m] [infile] remotefile\n",
                     getprogname());


BTW: setprogname(3) also seems useless in both programs.

setprogname(3):
     ...
     A program's name can only be set once, and in NetBSD that is actually
     done by program start-up code that is run before main() is called.

-- 
Best regards, Aleksey Cheusov.


Home | Main Index | Thread Index | Old Index