| 266 |
|
|
| 267 |
|
if (*fmt == '\0') { |
| 268 |
|
buf[pos] = '\0'; |
| 269 |
+ |
errno=saved_errno; |
| 270 |
|
return buf; /* end of format string */ |
| 271 |
|
} |
| 272 |
|
|
| 412 |
|
print_sign = FALSE; |
| 413 |
|
break; |
| 414 |
|
case 'm': |
| 415 |
< |
if (saved_errno < 0 || saved_errno > sys_nerr || |
| 416 |
< |
*sys_errlist[saved_errno] == '\0') { |
| 415 |
> |
errno = 0; |
| 416 |
> |
s = strerror(saved_errno); |
| 417 |
> |
if (errno == EINVAL) { |
| 418 |
|
sprintf(errno_buffer, |
| 419 |
|
"errno %d out of range", |
| 420 |
|
saved_errno); |
| 421 |
|
s = errno_buffer; |
| 422 |
< |
} else |
| 421 |
< |
s = sys_errlist[saved_errno]; |
| 422 |
> |
} |
| 423 |
|
print_sign = FALSE; |
| 424 |
|
break; |
| 425 |
|
#ifdef VMS |