---
name: "uderrmsg"
section: "3"
platform: "linux"
package: "libxgks-dev"
version: "2.6.1+dfsg.2-17"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/uderrmsg"
---

# uderrmsg(3)

Unidata error-messaging package

## NAME

uderrmsg, uderrmode, uderrname, uderror, udadvise, udtime\_stamp - Unidata error-messaging package

## SYNOPSIS

```
#include "uderrmsg.h"

int	uderrmode(const int mode);
char*	uderrname(const char *name);
void	uderror(const char *fmt, ...);
void	udadvise(const char *fmt, ...);
char*	udtime_stamp(void);

#define	UD_FATAL
#define	UD_VERBOSE
```

## DESCRIPTION

These routines implement the Unidata error-messaging mechanism and should be used by all Unidata-conforming software.

**uderrmode()** sets the mode of the error-messaging package and returns the previous mode. The mode is the bitwise or of zero or more of the following bit-set macro-constants. Setting a mode-bit enables the action and vice versa.

- **UD\_FATAL**

  **uderror()** and **udadvise()** will abort the program after printing any error message.

- **UD\_VERBOSE**

  **uderror()** and **udadvise()** will print all messages.

The default is **UD\_FATAL \| UD\_VERBOSE**.

**uderrname()** sets the program name to be used in all messages and returns the previous name. It should be called once at the beginning of each program using, for example, **argv\[0\]** for the argument. (the **udres**(3) function **udinit()** does this for you).

**uderror()** prints a system error message on stderr if, and only if, the UD\_VERBOSE mode-bit is set. This routine is used in place of **[perror(3)](/perror/3.md)** and should be called  when a system function returns an error status. The error message will consist of the program name, the error message supplied as arguments to **uderror()**, the system error message, and the system error number. The argument syntax is the same as for [**printf**(3)](/printf/3.md). If the error-messaging package has the UD\_FATAL mode-bit set, then this routine will abort after printing the message.

"**errno**" is cleared before returning.

If "**stderr**" is not a "**tty**", then the error message will be prefixed by a time-stamp.

**udadvise()** prints on stderr an error message consisting of *fmt* and any other arguments if, and only if, the UD\_VERBOSE mode-bit is set. The syntax is the same as for [**printf**(3)](/printf/3.md). If the error-messaging package has the UD\_FATAL mode-bit set, then this routine will abort after printing the message.

If "**stderr**" is not a "**tty**", then the error message will be prefixed by a time-stamp.

**udtime\_stamp()** returns a pointer to a static buffer containing a 0-terminated string of the current time in the Unidata-standard format.

## EXAMPLE

If "**uderrname**" has been called with argument "**foobar**", then the following code

```
#include "guise.h"
#include "uderrmsg.h"
...
output()
{
	static char me[] = "output"; /* This routine's name */
...
uderrmode(UD_VERBOSE);
if (!allowed) {
	udadvise("%s: Writing to output file not allowed", me);
} else if (write(fd, buf, nbyte) == -1) {
	uderror(me);
	udadvise("%s: Couldn't write %d bytes to output file", me, nbyte);
} else {
...
```

will print the following error message if "**allowed**" is false:

foobar: output: Writing to output file not allowed

and might print the following error message if the **[write(2)](/write/2.md)** fails:

```
foobar: output: no space left on device (errno=28)
foobar: output: Couldn't write 100000 bytes to output file
```

## SEE ALSO

**udres**(3), **udape**(3).
