---
name: "error_on_per_line"
section: "3"
platform: "linux"
package: "manpages-dev"
version: "3.27-1"
release: "Debian 6.0 (Squeeze)"
platforms: ["linux"]
url: "https://carta.tech/man/error/3"
---

# error\_on\_per\_line(3)

glibc error reporting functions

Part of [error(3)](/man/error/3.md).

## NAME

error, error\_at\_line, error\_message\_count, error\_on\_per\_line, error\_print\_progname - glibc error reporting functions

## SYNOPSIS

```
#include <error.h>
void error(int status, int errnum, const char *format, ...);
void error_at_line(int status, int errnum, const char *filename,
                   unsigned int linenum, const char *format, ...);
extern unsigned int error_message_count;
extern int error_one_per_line;
extern void (* error_print_progname) (void);
```

## DESCRIPTION

**error**() **is a general error-reporting function.** **It flushes** *stdout*, **and then outputs to** *stderr* **the program name, a colon and a space, the message specified by the** [**printf**(3)](/man/printf/3.md)-style **format string** *format***, and, if** *errnum* **is** **nonzero, a second colon and a space followed by the string given by** *strerror(errnum)*. **Any arguments required for** *format* **should follow** *format* **in the argument list.** **The output is terminated by a newline character.**

**The program name printed by** **error**() **is the value of the global variable** [**program\_invocation\_name**(3)](/man/program_invocation_name/3.md). *program\_invocation\_name* **initially has the same value as** *main*()'s *argv\[0\]*. **The value of this variable can be modified to change the output of** **error**().

**If** *status* **has a nonzero value, then** **error**() **calls** [**exit**(3)](/man/exit/3.md) **to terminate the program using the given value as the exit status.**

**The** **error\_at\_line**() **function is exactly the same as** **error**(), **except for the addition of the arguments** *filename* **and** *linenum*. **The output produced is as for** **error**(), **except that after the program name are written: a colon, the value of** *filename*, **a colon, and the value of** *linenum*. **The preprocessor values \_\_LINE\_\_ and** **\_\_FILE\_\_ may be useful when calling** **error\_at\_line**(), **but other values can also be used.** **For example, these arguments could refer to a location in an input file.**

**If the global variable** *error\_one\_per\_line* **is set nonzero,** **a sequence of** **error\_at\_line**() **calls with the** **same value of** *filename* **and** *linenum* **will result in only** **one message (the first) being output.**

**The global variable** *error\_message\_count* **counts the number of** **messages that have been output by** **error**() **and** **error\_at\_line**().

**If the global variable** *error\_print\_progname* **is assigned the address of a function** **(i.e., is not NULL), then that function is called** **instead of prefixing the message with the program name and colon.** **The function should print a suitable string to** *stderr*.

## CONFORMING TO

**These functions and variables are GNU extensions, and should not be** **used in programs intended to be portable.**

## SEE ALSO

[**err**(3)](/man/err/3.md), [**errno**(3)](/man/errno/3.md), [**exit**(3)](/man/exit/3.md), [**perror**(3)](/man/perror/3.md), [**program\_invocation\_name**(3)](/man/program_invocation_name/3.md), [**strerror**(3)](/man/strerror/3.md)

## COLOPHON

**This page is part of release 3.27 of the Linux** *man-pages* **project.** **A description of the project,** **and information about reporting bugs,** **can be found at** **http://www.kernel.org/doc/man-pages/.**
