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 |