blob: 33b5e08b0f04fad8d2be3fd2c94db6976298ba09 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
#include <string.h>
#include <stdio.h>
#include <errno.h>
/*
* Manuel Novoa III Feb 2001
*
* Replaced old version that did write(2,...)'s with a version using
* stream functions. If the program is calling perror, it's a safe
* bet that printf and friends are used as well. It is also possible
* that the calling program could buffer stderr, or reassign it.
* Also, the old version did not conform the standards when the
* passed char * was either NULL or pointed to an empty string.
*/
void perror(__const char *str)
{
static const char perror_str[] = ": ";
const char *sep;
sep = perror_str;
if (!(str && *str)) { /* Caller did not supply a prefix message */
sep += 2; /* or passed an empty string. */
str = sep;
}
fprintf(stderr, "%s%s%s\n", str, sep, strerror(errno));
}
|