March 29, 2008 GETPROGNAME 3

### NAME

getprogname, setprogname - get/set the name of the current program

### LIBRARY

Standard C Library (libc, -lc)

### SYNOPSIS

```const` `char``*` getprogname(```void`)
```void` setprogname(```const char *name`)

### DESCRIPTION

These utility functions get and set the current program's name as used by various error-reporting functions.

getprogname(``) returns the name of the current program. This function is typically useful when generating error messages or other diagnostic output. If the program name has not been set, getprogname(``) will return ```NULL`.

setprogname(``) sets the name of the current program to be the last pathname component of the ```name` argument. It should be invoked at the start of the program, using the ```argv[0]` passed into the program's main(``) function. A pointer into the string pointed to by the ```name` argument is kept as the program name. Therefore, the string pointed to by ```name` should not be modified during the rest of the program's operation.

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. Therefore, in NetBSD, calling setprogname(``) from main(``) has no effect. However, it does serve to increase the portability of the program: on other operating systems, getprogname(``) and setprogname(``) may be implemented by a portability library, and a call to setprogname(``) allows that library to know the program name without modifications to that system's program start-up code.

### SEE ALSO

err(3), setproctitle(3)

### HISTORY

The getprogname and setprogname function calls appeared in NetBSD1.6.

### RESTRICTIONS

The string returned by getprogname(``) is supplied by the invoking process and should not be trusted by setuid or setgid programs.