diff options
| author | Rich Felker <dalias@aerifal.cx> | 2014-03-05 16:08:56 -0500 | 
|---|---|---|
| committer | Rich Felker <dalias@aerifal.cx> | 2014-03-05 16:08:56 -0500 | 
| commit | abdd2e48df01511603cae570695a7a3d78190e7e (patch) | |
| tree | 89f9ecf16f2953261b3f1deab72706dc909078aa /src | |
| parent | 0b8f0c57c0ff78fc1af9c8f5831eb1c1fdd7d970 (diff) | |
| download | musl-abdd2e48df01511603cae570695a7a3d78190e7e.tar.gz | |
fix strerror on mips: one error code is out of the 8-bit table range
if we ever encounter other targets where error codes don't fit in the
8-bit range, the table should probably just be bumped to 16-bit, but
for now I don't want to increase the table size on all archs just
because of a bug in the mips abi.
Diffstat (limited to 'src')
| -rw-r--r-- | src/errno/strerror.c | 8 | 
1 files changed, 7 insertions, 1 deletions
| diff --git a/src/errno/strerror.c b/src/errno/strerror.c index b8fbc6db..b5559cbe 100644 --- a/src/errno/strerror.c +++ b/src/errno/strerror.c @@ -1,7 +1,7 @@  #include <errno.h>  #include <string.h> -#define E(a,b) a, +#define E(a,b) ((unsigned char)a),  static const unsigned char errid[] = {  #include "__strerror.h"  }; @@ -16,6 +16,12 @@ char *strerror(int e)  {  	const char *s;  	int i; +	/* mips has one error code outside of the 8-bit range due to a +	 * historical typo, so we just remap it. */ +	if (EDQUOT==1133) { +		if (e==109) e=-1; +		else if (e==EDQUOT) e=109; +	}  	for (i=0; errid[i] && errid[i] != e; i++);  	for (s=errmsg; i; s++, i--) for (; *s; s++);  	return (char *)s; | 
