266 |
|
|
267 |
|
if (*fmt == '\0') { |
268 |
|
buf[pos] = '\0'; |
269 |
+ |
errno=saved_errno; |
270 |
|
return buf; /* end of format string */ |
271 |
|
} |
272 |
|
|
333 |
|
case 'd': |
334 |
|
case 'i': |
335 |
|
if (modifier == 'h') |
336 |
< |
i = va_arg(args, short); |
336 |
> |
i = va_arg(args, int); |
337 |
|
else if (modifier == 'l') |
338 |
|
i = va_arg(args, long); |
339 |
|
else |
383 |
|
case 'u': |
384 |
|
base = 10; |
385 |
|
gencase: if (modifier == 'h') |
386 |
< |
u = va_arg(args, short); |
386 |
> |
u = va_arg(args, int); |
387 |
|
else if (modifier == 'l') |
388 |
|
u = va_arg(args, long); |
389 |
|
else |
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 |