13
13
14
14
#define NUL '\0'
15
15
16
+ #ifndef TRUE
17
+ #define TRUE 1
18
+ #endif
19
+
20
+ #ifndef FALSE
21
+ #define FALSE 0
22
+ #endif
23
+
16
24
/* GLOBAL VARIABLES */
17
25
static PGconn * conn ;
18
26
static PGresult * res = NULL ;
@@ -22,8 +30,8 @@ static PGresult *res = NULL;
22
30
23
31
static int on_error_state = ON_ERROR_STOP ;
24
32
25
- static in_result_block = false ;
26
- static was_get_unset_result = false ;
33
+ static in_result_block = FALSE ;
34
+ static was_get_unset_result = FALSE ;
27
35
28
36
/* LOCAL VARIABLES */
29
37
static int tuple ;
@@ -67,10 +75,10 @@ disconnectdb()
67
75
PGresult *
68
76
doquery (char * query )
69
77
{
70
- if (res != NULL && in_result_block == false && was_get_unset_result == false )
78
+ if (res != NULL && in_result_block == FALSE && was_get_unset_result == FALSE )
71
79
PQclear (res );
72
80
73
- was_get_unset_result = false ;
81
+ was_get_unset_result = FALSE ;
74
82
res = PQexec (conn , query );
75
83
76
84
if (on_error_state == ON_ERROR_STOP &&
@@ -131,7 +139,7 @@ fetch(void *param,...)
131
139
**
132
140
** fetchwithnulls - returns tuple number (starts at 0),
133
141
** or the value END_OF_TUPLES
134
- ** Returns true or false into null indicator variables
142
+ ** Returns TRUE or FALSE into null indicator variables
135
143
** NULL pointers are skipped
136
144
*/
137
145
int
@@ -200,9 +208,14 @@ on_error_continue()
200
208
*/
201
209
PGresult * get_result ()
202
210
{
203
- was_get_unset_result = true;
211
+ char * cmdstatus = PQcmdStatus (res );
212
+
213
+ was_get_unset_result = TRUE;
214
+
204
215
/* we have to store the fetch location somewhere */
205
- memcpy (& res -> cmdStatus [CMDSTATUS_LEN - sizeof (tuple )],& tuple , sizeof (tuple ));
216
+ cmdstatus [0 ] = NUL ;
217
+ memcpy (& cmdstatus [1 ],& tuple , sizeof (tuple ));
218
+
206
219
return res ;
207
220
}
208
221
@@ -213,18 +226,27 @@ PGresult *get_result()
213
226
*/
214
227
void set_result (PGresult * newres )
215
228
{
229
+
230
+ char * cmdstatus = PQcmdStatus (res );
231
+
216
232
if (newres == NULL )
217
233
halt ("set_result called with null result pointer\n" );
218
234
219
- if (res != NULL && was_get_unset_result == false )
220
- if (in_result_block == false )
235
+ if (res != NULL && was_get_unset_result == FALSE )
236
+ if (in_result_block == FALSE )
221
237
PQclear (res );
222
238
else
223
- memcpy (& res -> cmdStatus [CMDSTATUS_LEN - sizeof (tuple )], & tuple , sizeof (tuple ));
224
-
225
- in_result_block = true;
226
- was_get_unset_result = false;
227
- memcpy (& tuple , & newres -> cmdStatus [CMDSTATUS_LEN - sizeof (tuple )], sizeof (tuple ));
239
+ {
240
+ cmdstatus [0 ] = NUL ;
241
+ memcpy (& cmdstatus [1 ], & tuple , sizeof (tuple ));
242
+ }
243
+
244
+ in_result_block = TRUE;
245
+ was_get_unset_result = FALSE;
246
+
247
+ cmdstatus = PQcmdStatus (newres );
248
+ memcpy (& tuple , & cmdstatus [1 ], sizeof (tuple ));
249
+
228
250
res = newres ;
229
251
}
230
252
@@ -236,15 +258,18 @@ void set_result(PGresult *newres)
236
258
*/
237
259
void unset_result (PGresult * oldres )
238
260
{
261
+ char * cmdstatus = PQcmdStatus (oldres );
262
+
239
263
if (oldres == NULL )
240
264
halt ("unset_result called with null result pointer\n" );
241
265
242
- if (in_result_block == false )
266
+ if (in_result_block == FALSE )
243
267
halt ("Unset of result without being set.\n" );
244
268
245
- was_get_unset_result = true;
246
- memcpy (& oldres -> cmdStatus [CMDSTATUS_LEN - sizeof (tuple )], & tuple , sizeof (tuple ));
247
- in_result_block = false;
269
+ was_get_unset_result = TRUE;
270
+ cmdstatus [0 ] = NUL ;
271
+ memcpy (& cmdstatus [1 ], & tuple , sizeof (tuple ));
272
+ in_result_block = FALSE;
248
273
}
249
274
250
275
/*
0 commit comments