mirror of
https://github.com/PowerShell/openssh-portable.git
synced 2025-07-26 23:34:55 +02:00
Move VA_COPY macro into compat header.
Some AIX compilers unconditionally undefine va_copy but don't set it back to an internal function, causing link errors. In some compat code we already use VA_COPY instead so move the two existing instances into the shared header and use for sshbuf-getput-basic.c too. Should fix building with at lease some versions of AIX's compiler. bz#2589, ok djm@
This commit is contained in:
parent
832b7443b7
commit
5abfb15ced
@ -25,18 +25,6 @@
|
|||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
||||||
#ifndef VA_COPY
|
|
||||||
# ifdef HAVE_VA_COPY
|
|
||||||
# define VA_COPY(dest, src) va_copy(dest, src)
|
|
||||||
# else
|
|
||||||
# ifdef HAVE___VA_COPY
|
|
||||||
# define VA_COPY(dest, src) __va_copy(dest, src)
|
|
||||||
# else
|
|
||||||
# define VA_COPY(dest, src) (dest) = (src)
|
|
||||||
# endif
|
|
||||||
# endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define INIT_SZ 128
|
#define INIT_SZ 128
|
||||||
|
|
||||||
int
|
int
|
||||||
|
@ -99,18 +99,6 @@
|
|||||||
# undef HAVE_VSNPRINTF
|
# undef HAVE_VSNPRINTF
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef VA_COPY
|
|
||||||
# ifdef HAVE_VA_COPY
|
|
||||||
# define VA_COPY(dest, src) va_copy(dest, src)
|
|
||||||
# else
|
|
||||||
# ifdef HAVE___VA_COPY
|
|
||||||
# define VA_COPY(dest, src) __va_copy(dest, src)
|
|
||||||
# else
|
|
||||||
# define VA_COPY(dest, src) (dest) = (src)
|
|
||||||
# endif
|
|
||||||
# endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if !defined(HAVE_SNPRINTF) || !defined(HAVE_VSNPRINTF)
|
#if !defined(HAVE_SNPRINTF) || !defined(HAVE_VSNPRINTF)
|
||||||
|
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
|
@ -253,6 +253,23 @@ int mbtowc(wchar_t *, const char*, size_t);
|
|||||||
# include <stdarg.h>
|
# include <stdarg.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Some platforms unconditionally undefine va_copy() so we define VA_COPY()
|
||||||
|
* instead. This is known to be the case on at least some configurations of
|
||||||
|
* AIX with the xlc compiler.
|
||||||
|
*/
|
||||||
|
#ifndef VA_COPY
|
||||||
|
# ifdef HAVE_VA_COPY
|
||||||
|
# define VA_COPY(dest, src) va_copy(dest, src)
|
||||||
|
# else
|
||||||
|
# ifdef HAVE___VA_COPY
|
||||||
|
# define VA_COPY(dest, src) __va_copy(dest, src)
|
||||||
|
# else
|
||||||
|
# define VA_COPY(dest, src) (dest) = (src)
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef HAVE_VASPRINTF
|
#ifndef HAVE_VASPRINTF
|
||||||
int vasprintf(char **, const char *, va_list);
|
int vasprintf(char **, const char *, va_list);
|
||||||
#endif
|
#endif
|
||||||
|
@ -270,7 +270,7 @@ sshbuf_putfv(struct sshbuf *buf, const char *fmt, va_list ap)
|
|||||||
int r, len;
|
int r, len;
|
||||||
u_char *p;
|
u_char *p;
|
||||||
|
|
||||||
va_copy(ap2, ap);
|
VA_COPY(ap2, ap);
|
||||||
if ((len = vsnprintf(NULL, 0, fmt, ap2)) < 0) {
|
if ((len = vsnprintf(NULL, 0, fmt, ap2)) < 0) {
|
||||||
r = SSH_ERR_INVALID_ARGUMENT;
|
r = SSH_ERR_INVALID_ARGUMENT;
|
||||||
goto out;
|
goto out;
|
||||||
@ -280,7 +280,7 @@ sshbuf_putfv(struct sshbuf *buf, const char *fmt, va_list ap)
|
|||||||
goto out; /* Nothing to do */
|
goto out; /* Nothing to do */
|
||||||
}
|
}
|
||||||
va_end(ap2);
|
va_end(ap2);
|
||||||
va_copy(ap2, ap);
|
VA_COPY(ap2, ap);
|
||||||
if ((r = sshbuf_reserve(buf, (size_t)len + 1, &p)) < 0)
|
if ((r = sshbuf_reserve(buf, (size_t)len + 1, &p)) < 0)
|
||||||
goto out;
|
goto out;
|
||||||
if ((r = vsnprintf((char *)p, len + 1, fmt, ap2)) != len) {
|
if ((r = vsnprintf((char *)p, len + 1, fmt, ap2)) != len) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user