File: strerror.c

package info (click to toggle)
syslinux 3%3A6.03%2Bdfsg-5
  • links: PTS, VCS
  • area: main
  • in suites: jessie-kfreebsd
  • size: 41,220 kB
  • sloc: ansic: 358,747; asm: 9,606; pascal: 4,809; perl: 3,894; makefile: 2,488; sh: 324; python: 266; xml: 39
file content (31 lines) | stat: -rw-r--r-- 539 bytes parent folder | download | duplicates (7)
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
28
29
30
31
/*
 * strerror.c
 */

#include <string.h>

char *strerror(int errnum)
{
	static char message[32] = "error ";	/* enough for error 2^63-1 */
	char numbuf[32];
	char *p;
	unsigned int e = (unsigned int)errnum;

	extern const int sys_nerr;
	extern const char *const sys_errlist[];

	if (e < (unsigned int)sys_nerr && sys_errlist[e])
		return (char *)sys_errlist[e];

	p = numbuf + sizeof numbuf;
	*--p = '\0';

	do {
		*--p = (e % 10) + '0';
		e /= 10;
	} while (e);

	memcpy(message + 6, p, (numbuf + sizeof numbuf) - p);

	return message;
}