% uname OSF1 % uname -r V5.1 % sh ./support/config.guess alphaev67-dec-osf5.1 % cc -V Compaq C V6.3-025 on Compaq Tru64 UNIX V5.1 (Rev. 732) Compiler Driver V6.3-026 (sys) cc Driver
cc -c -DHAVE_CONFIG_H -DSHELL -I. -I.. -I.. -I../include -I../lib -I. -I../lib/intl -I/home/jayk/src/bash-4.1/lib/intl -g printf.c || ( rm -f printf.c ; exit 1 ) cc: Warning: ./printf.def, line 175: In this declaration, parameter 4 has a different type than specified in an earlier declaration of this function. (mismatparam) extern int vsnprintf __P((char *, size_t, const char *, ...)) __attribute__((__format__ (printf, 3, 4))); -----------^ cc: Error: ./printf.def, line 175: In this declaration, the type of "vsnprintf" is not compatible with the type of a previous declaration of "vsnprintf" at line number 212 in file /usr/include/stdio.h. (notcompat) extern int vsnprintf __P((char *, size_t, const char *, ...)) __attribute__((__format__ (printf, 3, 4))); -----------^ fix: % diff builtins/printf.def.orig builtins/printf.def 175c175 < extern int vsnprintf __P((char *, size_t, const char *, ...)) __attribute__((__format__ (printf, 3, 4))); --- > extern int vsnprintf __P((char *, size_t, const char *, va_list)) > __attribute__((__format__ (printf, 3, 4))); Why didn't the #if HAVE_VSNPRINTF work? autoconf fell down. configure:28784: checking for standard-conformant vsnprintf configure:28846: cc -o conftest -g conftest.c >&5 cc: Warning: conftest.c, line 299: The redefinition of the macro "HAVE_SNPRINTF" conflicts with a current definition because the replacement lists differ. The redefinition is now in effect. (macroredef) #define HAVE_SNPRINTF 0 ----------------------^ configure:28850: $? = 0 configure:28856: ./conftest ./configure[28858]: 76582 Memory fault(coredump) configure:28860: $? = 139 configure: program exited with status 139 configure: failed program was: There were also these scary warnings: cc: Warning: arrayfunc.c, line 732: In this statement, "mbschr(...)" of type "int", is being converted to "pointer to char". (cvtdiftypes) t = mbschr (name, '['); /* ] */ --^ cc: Warning: arrayfunc.c, line 792: In this statement, "mbschr(...)" of type "int", is being converted to "pointer to char". (cvtdiftypes) t = mbschr (s, '['); --^ c: Warning: bashline.c, line 2698: In this statement, "mbschr(...)" of type "int", is being converted to "pointer to char". (cvtdiftypes) t = mbschr (local_dirname, '`'); It looks like configure does a link test, but the header is never included. Maybe better to autoconf these, #if HAVE_MBSTR_H?, maybe older osf doesn't have it? % diff subst.c.orig subst.c 39a40,43 > #ifdef __osf__ > #include <mbstr.h> > #endif > % diff arrayfunc.c.orig arrayfunc.c 21a22,24 > #ifdef __osf__ > #include <mbstr.h> > #endif % also: cc: Warning: /Users/chet/src/bash/src/parse.y, line 5486: In this statement, the referenced type of the pointer value "EOF_Reached?((const char ...)("syntax error: unexpected end of file")):((const char ...)("syntax error"))" is const, but the referenced type of the target of this assignment is not. (notconstqual) msg = EOF_Reached ? _("syntax error: unexpected end of file") : _("syntax error"); cc: Warning: mailcheck.c, line 433: In this statement, the referenced type of the pointer value "mailfiles[i]->msg?mailfiles[i]->msg:((const char ...)("You have mail in $_"))" is const, but the referenced type of the target of this assignment is not. (notconstqual) message = mailfiles[i]->msg ? mailfiles[i]->msg : _("You have mail in $_"); Just adding const to these doesn't work. I could fix but I didn't. - Jay