@@ -49,8 +49,9 @@ struct options
49
49
/* function prototypes */
50
50
static void help (const char * progname );
51
51
void get_opts (int , char * * , struct options * );
52
- void * myalloc (size_t size );
53
- char * mystrdup (const char * str );
52
+ void * pg_malloc (size_t size );
53
+ void * pg_realloc (void * ptr , size_t size );
54
+ char * pg_strdup (const char * str );
54
55
void add_one_elt (char * eltname , eary * eary );
55
56
char * get_comma_elts (eary * eary );
56
57
PGconn * sql_conn (struct options * );
@@ -102,7 +103,7 @@ get_opts(int argc, char **argv, struct options * my_opts)
102
103
{
103
104
/* specify the database */
104
105
case 'd' :
105
- my_opts -> dbname = mystrdup (optarg );
106
+ my_opts -> dbname = pg_strdup (optarg );
106
107
break ;
107
108
108
109
/* specify one tablename to show */
@@ -127,17 +128,17 @@ get_opts(int argc, char **argv, struct options * my_opts)
127
128
128
129
/* host to connect to */
129
130
case 'H' :
130
- my_opts -> hostname = mystrdup (optarg );
131
+ my_opts -> hostname = pg_strdup (optarg );
131
132
break ;
132
133
133
134
/* port to connect to on remote host */
134
135
case 'p' :
135
- my_opts -> port = mystrdup (optarg );
136
+ my_opts -> port = pg_strdup (optarg );
136
137
break ;
137
138
138
139
/* username */
139
140
case 'U' :
140
- my_opts -> username = mystrdup (optarg );
141
+ my_opts -> username = pg_strdup (optarg );
141
142
break ;
142
143
143
144
/* display system tables */
@@ -199,26 +200,47 @@ help(const char *progname)
199
200
}
200
201
201
202
void *
202
- myalloc (size_t size )
203
+ pg_malloc (size_t size )
203
204
{
204
- void * ptr = malloc ( size ) ;
205
+ void * ptr ;
205
206
207
+ /* Avoid unportable behavior of malloc(0) */
208
+ if (size == 0 )
209
+ size = 1 ;
210
+ ptr = malloc (size );
206
211
if (!ptr )
207
212
{
208
- fprintf (stderr , "out of memory" );
213
+ fprintf (stderr , "out of memory\n " );
209
214
exit (1 );
210
215
}
211
216
return ptr ;
212
217
}
213
218
219
+ void *
220
+ pg_realloc (void * ptr , size_t size )
221
+ {
222
+ void * result ;
223
+
224
+ /* Avoid unportable behavior of realloc(NULL, 0) */
225
+ if (ptr == NULL && size == 0 )
226
+ size = 1 ;
227
+ result = realloc (ptr , size );
228
+ if (!result )
229
+ {
230
+ fprintf (stderr , "out of memory\n" );
231
+ exit (1 );
232
+ }
233
+ return result ;
234
+ }
235
+
214
236
char *
215
- mystrdup (const char * str )
237
+ pg_strdup (const char * str )
216
238
{
217
239
char * result = strdup (str );
218
240
219
241
if (!result )
220
242
{
221
- fprintf (stderr , "out of memory" );
243
+ fprintf (stderr , "out of memory\n " );
222
244
exit (1 );
223
245
}
224
246
return result ;
@@ -235,22 +257,16 @@ add_one_elt(char *eltname, eary *eary)
235
257
if (eary -> alloc == 0 )
236
258
{
237
259
eary -> alloc = 8 ;
238
- eary -> array = (char * * ) myalloc (8 * sizeof (char * ));
260
+ eary -> array = (char * * ) pg_malloc (8 * sizeof (char * ));
239
261
}
240
262
else if (eary -> num >= eary -> alloc )
241
263
{
242
264
eary -> alloc *= 2 ;
243
- eary -> array = (char * * )
244
- realloc (eary -> array , eary -> alloc * sizeof (char * ));
245
-
246
- if (!eary -> array )
247
- {
248
- fprintf (stderr , "out of memory" );
249
- exit (1 );
250
- }
265
+ eary -> array = (char * * ) pg_realloc (eary -> array ,
266
+ eary -> alloc * sizeof (char * ));
251
267
}
252
268
253
- eary -> array [eary -> num ] = mystrdup (eltname );
269
+ eary -> array [eary -> num ] = pg_strdup (eltname );
254
270
eary -> num ++ ;
255
271
}
256
272
@@ -270,7 +286,7 @@ get_comma_elts(eary *eary)
270
286
length = 0 ;
271
287
272
288
if (eary -> num == 0 )
273
- return mystrdup ("" );
289
+ return pg_strdup ("" );
274
290
275
291
/*
276
292
* PQescapeString wants 2 * length + 1 bytes of breath space. Add two
@@ -279,7 +295,7 @@ get_comma_elts(eary *eary)
279
295
for (i = 0 ; i < eary -> num ; i ++ )
280
296
length += strlen (eary -> array [i ]);
281
297
282
- ret = (char * ) myalloc (length * 2 + 4 * eary -> num );
298
+ ret = (char * ) pg_malloc (length * 2 + 4 * eary -> num );
283
299
ptr = ret ;
284
300
285
301
for (i = 0 ; i < eary -> num ; i ++ )
@@ -384,7 +400,7 @@ sql_exec(PGconn *conn, const char *todo, bool quiet)
384
400
nfields = PQnfields (res );
385
401
386
402
/* for each field, get the needed width */
387
- length = (int * ) myalloc (sizeof (int ) * nfields );
403
+ length = (int * ) pg_malloc (sizeof (int ) * nfields );
388
404
for (j = 0 ; j < nfields ; j ++ )
389
405
length [j ] = strlen (PQfname (res , j ));
390
406
@@ -407,7 +423,7 @@ sql_exec(PGconn *conn, const char *todo, bool quiet)
407
423
l += length [j ] + 2 ;
408
424
}
409
425
fprintf (stdout , "\n" );
410
- pad = (char * ) myalloc (l + 1 );
426
+ pad = (char * ) pg_malloc (l + 1 );
411
427
MemSet (pad , '-' , l );
412
428
pad [l ] = '\0' ;
413
429
fprintf (stdout , "%s\n" , pad );
@@ -498,8 +514,8 @@ sql_exec_searchtables(PGconn *conn, struct options * opts)
498
514
comma_filenodes = get_comma_elts (opts -> filenodes );
499
515
500
516
/* 80 extra chars for SQL expression */
501
- qualifiers = (char * ) myalloc (strlen (comma_oids ) + strlen (comma_tables ) +
502
- strlen (comma_filenodes ) + 80 );
517
+ qualifiers = (char * ) pg_malloc (strlen (comma_oids ) + strlen (comma_tables ) +
518
+ strlen (comma_filenodes ) + 80 );
503
519
ptr = qualifiers ;
504
520
505
521
if (opts -> oids -> num > 0 )
@@ -525,7 +541,7 @@ sql_exec_searchtables(PGconn *conn, struct options * opts)
525
541
free (comma_filenodes );
526
542
527
543
/* now build the query */
528
- todo = (char * ) myalloc (650 + strlen (qualifiers ));
544
+ todo = (char * ) pg_malloc (650 + strlen (qualifiers ));
529
545
snprintf (todo , 650 + strlen (qualifiers ),
530
546
"SELECT pg_catalog.pg_relation_filenode(c.oid) as \"Filenode\", relname as \"Table Name\" %s\n"
531
547
"FROM pg_catalog.pg_class c \n"
@@ -565,11 +581,11 @@ main(int argc, char **argv)
565
581
struct options * my_opts ;
566
582
PGconn * pgconn ;
567
583
568
- my_opts = (struct options * ) myalloc (sizeof (struct options ));
584
+ my_opts = (struct options * ) pg_malloc (sizeof (struct options ));
569
585
570
- my_opts -> oids = (eary * ) myalloc (sizeof (eary ));
571
- my_opts -> tables = (eary * ) myalloc (sizeof (eary ));
572
- my_opts -> filenodes = (eary * ) myalloc (sizeof (eary ));
586
+ my_opts -> oids = (eary * ) pg_malloc (sizeof (eary ));
587
+ my_opts -> tables = (eary * ) pg_malloc (sizeof (eary ));
588
+ my_opts -> filenodes = (eary * ) pg_malloc (sizeof (eary ));
573
589
574
590
my_opts -> oids -> num = my_opts -> oids -> alloc = 0 ;
575
591
my_opts -> tables -> num = my_opts -> tables -> alloc = 0 ;
0 commit comments