1- /* $PostgreSQL: pgsql/src/interfaces/ecpg/ecpglib/execute.c,v 1.38 2004/08/29 05:06:59 momjian Exp $ */
1+ /* $PostgreSQL: pgsql/src/interfaces/ecpg/ecpglib/execute.c,v 1.39 2005/03/18 10:00:43 meskes Exp $ */
22
33/*
44 * The aim is to get a simpler inteface to the database routines.
@@ -69,15 +69,21 @@ quote_postgres(char *arg, int lineno)
6969return res ;
7070}
7171
72+ #if defined(__GNUC__ )&& (defined (__powerpc__ )|| defined(__AMD64__ ))
73+ #define APREF ap
74+ #else
75+ #define APREF *ap
76+ #endif
77+
7278void
73- ECPGget_variable (va_list * ap ,enum ECPGttype type ,struct variable * var ,bool indicator )
79+ ECPGget_variable (va_list APREF ,enum ECPGttype type ,struct variable * var ,bool indicator )
7480{
7581var -> type = type ;
76- var -> pointer = va_arg (* ap ,char * );
82+ var -> pointer = va_arg (APREF ,char * );
7783
78- var -> varcharsize = va_arg (* ap ,long );
79- var -> arrsize = va_arg (* ap ,long );
80- var -> offset = va_arg (* ap ,long );
84+ var -> varcharsize = va_arg (APREF ,long );
85+ var -> arrsize = va_arg (APREF ,long );
86+ var -> offset = va_arg (APREF ,long );
8187
8288if (var -> arrsize == 0 || var -> varcharsize == 0 )
8389var -> value = * ((char * * ) (var -> pointer ));
@@ -97,11 +103,11 @@ ECPGget_variable(va_list *ap, enum ECPGttype type, struct variable * var, bool i
97103
98104if (indicator )
99105{
100- var -> ind_type = va_arg (* ap ,enum ECPGttype );
101- var -> ind_pointer = va_arg (* ap ,char * );
102- var -> ind_varcharsize = va_arg (* ap ,long );
103- var -> ind_arrsize = va_arg (* ap ,long );
104- var -> ind_offset = va_arg (* ap ,long );
106+ var -> ind_type = va_arg (APREF ,enum ECPGttype );
107+ var -> ind_pointer = va_arg (APREF ,char * );
108+ var -> ind_varcharsize = va_arg (APREF ,long );
109+ var -> ind_arrsize = va_arg (APREF ,long );
110+ var -> ind_offset = va_arg (APREF ,long );
105111
106112if (var -> ind_type != ECPGt_NO_INDICATOR
107113&& (var -> ind_arrsize == 0 || var -> ind_varcharsize == 0 ))
@@ -120,6 +126,7 @@ ECPGget_variable(va_list *ap, enum ECPGttype type, struct variable * var, bool i
120126var -> ind_varcharsize = 0 ;
121127}
122128}
129+ #undef APREF
123130
124131/*
125132 * create a list of variables
@@ -170,7 +177,11 @@ create_statement(int lineno, int compat, int force_indicator, struct connection
170177if (!(var = (struct variable * )ECPGalloc (sizeof (struct variable ),lineno )))
171178return false;
172179
180+ #if defined(__GNUC__ )&& (defined (__powerpc__ )|| defined(__AMD64__ ))
181+ ECPGget_variable (ap ,type ,var , true);
182+ #else
173183ECPGget_variable (& ap ,type ,var , true);
184+ #endif
174185
175186/* if variable is NULL, the statement hasn't been prepared */
176187if (var -> pointer == NULL )