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)
6969 return 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{
7581 var -> 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
8288 if (var -> arrsize == 0 || var -> varcharsize == 0 )
8389 var -> value = * ((char * * ) (var -> pointer ));
@@ -97,11 +103,11 @@ ECPGget_variable(va_list *ap, enum ECPGttype type, struct variable * var, bool i
97103
98104 if (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
106112 if (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
120126 var -> 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
170177 if (!(var = (struct variable * ) ECPGalloc (sizeof (struct variable ), lineno )))
171178 return false;
172179
180+ #if defined(__GNUC__ ) && (defined (__powerpc__ ) || defined(__AMD64__ ))
181+ ECPGget_variable (ap , type , var , true);
182+ #else
173183 ECPGget_variable (& ap , type , var , true);
184+ #endif
174185
175186 /* if variable is NULL, the statement hasn't been prepared */
176187 if (var -> pointer == NULL )
0 commit comments