Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 2 May 2001 15:10:45 +1000 (EST)
From:      Bruce Evans <bde@zeta.org.au>
To:        Dima Dorfman <dima@unixfreak.org>
Cc:        audit@FreeBSD.ORG
Subject:   Re: {get,set}progname functions
Message-ID:  <Pine.BSF.4.21.0105021449040.40807-100000@besplex.bde.org>
In-Reply-To: <20010502025322.114703E28@bazooka.unixfreak.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Tue, 1 May 2001, Dima Dorfman wrote:

> Some time ago, kris sent a message to -arch asking for comments on the
> inclusion of the getprogname and setprogname functions.  These were
> recently added to NetBSD.  Responses to kris' query were generally
> favorable.  The message can be found here:
> http://docs.FreeBSD.org/cgi/getmsg.cgi?fetch=234758+0+archive/2001/freebsd-arch/20010225.freebsd-arch
> 
> Attached is a patch to implement these in FreeBSD.  Obviously, there's
> not much to implement since getprogname is a wrapper around a
> `return', and setprogname is a stub.

I think setprogname() should not be a stub.  setproctitle() can be
used to change the process's name, so why should setprogname() be
weaker?  Perhaps setproctitle() should affect __progname (or at least
the result returned by getprogname()), and setprogname() shouldn't
exist.

> Please review and, if acceptable, commit it.

> Index: include/stdlib.h
> ===================================================================
> RCS file: /st/src/FreeBSD/src/include/stdlib.h,v
> retrieving revision 1.20
> diff -u -r1.20 stdlib.h
> --- include/stdlib.h	2001/04/23 09:32:06	1.20
> +++ include/stdlib.h	2001/05/02 02:42:07
> @@ -157,6 +157,7 @@
>  int	 daemon __P((int, int));
>  char	*devname __P((int, int));
>  int	 getloadavg __P((double [], int));
> +const char *getprogname __P((void));

KNF strictly requires a tab after the first word.  This is not very useful,
but it is much easier for formatting programs to implement than putting
a tab after the type, since it only requires lexical analysis.

I think this prototype should be formatted as:

const char *
	getprogname __P((void));

like all the other prototypes for all the other functions whose return
type (name) is longer than 7.

> Index: lib/libc/gen/Makefile.inc
> ===================================================================
> RCS file: /st/src/FreeBSD/src/lib/libc/gen/Makefile.inc,v
> retrieving revision 1.77
> diff -u -r1.77 Makefile.inc
> --- lib/libc/gen/Makefile.inc	2001/04/17 07:59:50	1.77
> +++ lib/libc/gen/Makefile.inc	2001/05/02 02:42:07
> @@ -22,7 +22,7 @@
>  	pause.c popen.c psignal.c pw_scan.c pwcache.c raise.c readdir.c rewinddir.c \
>  	posixshm.c \
>  	scandir.c seed48.c seekdir.c semconfig.c semctl.c semget.c semop.c \
> -	setdomainname.c sethostname.c setjmperr.c setmode.c setproctitle.c \
> +	setdomainname.c sethostname.c setjmperr.c setmode.c setprogname.c setproctitle.c \

Line too long.

> --- /dev/null	Tue May  1 19:16:20 2001
> +++ lib/libc/gen/getprogname.c	Tue May  1 19:41:55 2001
> @@ -0,0 +1,12 @@
> +/*
> + * $FreeBSD$
> + */

Never put $FreeBSD$ in the copyright comment in *.c except in the kernel.
It goes in an rcsid string.

> +
> +extern const char *__progname;		/* Program name, from crt0 */

Similar formatting problems for the variable type and linkage.

Wrong comment.  The location of the instantiation of __progname is machine-
dependent.  It is in crt0 for i386-aout but is in crt1 for i386-elf.

Missing punctuation in comment.

> --- /dev/null	Tue May  1 19:16:20 2001
> +++ lib/libc/gen/setprogname.c	Tue May  1 19:42:05 2001
> @@ -0,0 +1,14 @@
> +/*
> + * $FreeBSD$
> + */

As above.

> +
> +void
> +setprogname(const char *progname)
> +{
> +
> +	/*
> +	 * In FreeBSD, the program name is set in crt0.  This is just
> +	 * a stub for programs that want to be more portable.
> +	 */

See above.

> +	return;
> +}

Return before the closing brace in a function that returns void is redundant.

Bruce


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-audit" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.4.21.0105021449040.40807-100000>