--- projects/libukcprog/src/formf.c 2003/03/29 16:30:33 1.1 +++ projects/libukcprog/src/formf.c 2003/08/21 21:53:42 1.4 @@ -266,6 +266,7 @@ va_list args; if (*fmt == '\0') { buf[pos] = '\0'; + errno=saved_errno; return buf; /* end of format string */ } @@ -332,7 +333,7 @@ va_list args; case 'd': case 'i': if (modifier == 'h') - i = va_arg(args, short); + i = va_arg(args, int); else if (modifier == 'l') i = va_arg(args, long); else @@ -382,7 +383,7 @@ va_list args; case 'u': base = 10; gencase: if (modifier == 'h') - u = va_arg(args, short); + u = va_arg(args, int); else if (modifier == 'l') u = va_arg(args, long); else @@ -411,14 +412,14 @@ gencase: if (modifier == 'h') print_sign = FALSE; break; case 'm': - if (saved_errno < 0 || saved_errno > sys_nerr || - *sys_errlist[saved_errno] == '\0') { + errno = 0; + s = strerror(saved_errno); + if (errno == EINVAL) { sprintf(errno_buffer, "errno %d out of range", saved_errno); s = errno_buffer; - } else - s = sys_errlist[saved_errno]; + } print_sign = FALSE; break; #ifdef VMS