f0cf5a6289226852fff1211971b68cbb35ec2489
[people/xl0/gpxe.git] / src / core / errno.c
1 #include "errno.h"
2 #include "vsprintf.h"
3
4 /* Global "last error" number */
5 int errno;
6
7 static struct errortab errortab_start[0] __table_start(errortab);
8 static struct errortab errortab_end[0] __table_end(errortab);
9
10 /*
11  * Retrieve string representation of error number.
12  *
13  * If error not found in the error table, generate a generic "Error
14  * 0x0000" message.
15  *
16  */
17 const char * strerror ( int errno ) {
18         static char *generic_message = "Error 0x0000";
19         struct errortab *errortab;
20
21         for ( errortab = errortab_start ; errortab < errortab_end ;
22               errortab++ ) {
23                 if ( errortab->errno == errno )
24                         return errortab->text;
25         }
26
27         sprintf ( generic_message + 8, "%hx", errno );
28         return generic_message;
29 }