/* function prototypes */
static void help(const char *progname);
void get_opts(int, char **, struct options *);
-void *myalloc(size_t size);
-char *mystrdup(const char *str);
+void *pg_malloc(size_t size);
+void *pg_realloc(void *ptr, size_t size);
+char *pg_strdup(const char *str);
void add_one_elt(char *eltname, eary *eary);
char *get_comma_elts(eary *eary);
PGconn *sql_conn(struct options *);
{
/* specify the database */
case 'd':
- my_opts->dbname = mystrdup(optarg);
+ my_opts->dbname = pg_strdup(optarg);
break;
/* specify one tablename to show */
/* host to connect to */
case 'H':
- my_opts->hostname = mystrdup(optarg);
+ my_opts->hostname = pg_strdup(optarg);
break;
/* port to connect to on remote host */
case 'p':
- my_opts->port = mystrdup(optarg);
+ my_opts->port = pg_strdup(optarg);
break;
/* username */
case 'U':
- my_opts->username = mystrdup(optarg);
+ my_opts->username = pg_strdup(optarg);
break;
/* display system tables */
}
void *
-myalloc(size_t size)
+pg_malloc(size_t size)
{
- void *ptr = malloc(size);
+ void *ptr;
+ /* Avoid unportable behavior of malloc(0) */
+ if (size == 0)
+ size = 1;
+ ptr = malloc(size);
if (!ptr)
{
- fprintf(stderr, "out of memory");
+ fprintf(stderr, "out of memory\n");
exit(1);
}
return ptr;
}
+void *
+pg_realloc(void *ptr, size_t size)
+{
+ void *result;
+
+ /* Avoid unportable behavior of realloc(NULL, 0) */
+ if (ptr == NULL && size == 0)
+ size = 1;
+ result = realloc(ptr, size);
+ if (!result)
+ {
+ fprintf(stderr, "out of memory\n");
+ exit(1);
+ }
+ return result;
+}
+
char *
-mystrdup(const char *str)
+pg_strdup(const char *str)
{
char *result = strdup(str);
if (!result)
{
- fprintf(stderr, "out of memory");
+ fprintf(stderr, "out of memory\n");
exit(1);
}
return result;
if (eary->alloc == 0)
{
eary ->alloc = 8;
- eary ->array = (char **) myalloc(8 * sizeof(char *));
+ eary ->array = (char **) pg_malloc(8 * sizeof(char *));
}
else if (eary->num >= eary->alloc)
{
eary ->alloc *= 2;
- eary ->array = (char **)
- realloc(eary->array, eary->alloc * sizeof(char *));
-
- if (!eary->array)
- {
- fprintf(stderr, "out of memory");
- exit(1);
- }
+ eary ->array = (char **) pg_realloc(eary->array,
+ eary->alloc * sizeof(char *));
}
- eary ->array[eary->num] = mystrdup(eltname);
+ eary ->array[eary->num] = pg_strdup(eltname);
eary ->num++;
}
length = 0;
if (eary->num == 0)
- return mystrdup("");
+ return pg_strdup("");
/*
* PQescapeString wants 2 * length + 1 bytes of breath space. Add two
for (i = 0; i < eary->num; i++)
length += strlen(eary->array[i]);
- ret = (char *) myalloc(length * 2 + 4 * eary->num);
+ ret = (char *) pg_malloc(length * 2 + 4 * eary->num);
ptr = ret;
for (i = 0; i < eary->num; i++)
nfields = PQnfields(res);
/* for each field, get the needed width */
- length = (int *) myalloc(sizeof(int) * nfields);
+ length = (int *) pg_malloc(sizeof(int) * nfields);
for (j = 0; j < nfields; j++)
length[j] = strlen(PQfname(res, j));
l += length[j] + 2;
}
fprintf(stdout, "\n");
- pad = (char *) myalloc(l + 1);
+ pad = (char *) pg_malloc(l + 1);
MemSet(pad, '-', l);
pad[l] = '\0';
fprintf(stdout, "%s\n", pad);
comma_filenodes = get_comma_elts(opts->filenodes);
/* 80 extra chars for SQL expression */
- qualifiers = (char *) myalloc(strlen(comma_oids) + strlen(comma_tables) +
- strlen(comma_filenodes) + 80);
+ qualifiers = (char *) pg_malloc(strlen(comma_oids) + strlen(comma_tables) +
+ strlen(comma_filenodes) + 80);
ptr = qualifiers;
if (opts->oids->num > 0)
free(comma_filenodes);
/* now build the query */
- todo = (char *) myalloc(650 + strlen(qualifiers));
+ todo = (char *) pg_malloc(650 + strlen(qualifiers));
snprintf(todo, 650 + strlen(qualifiers),
"SELECT pg_catalog.pg_relation_filenode(c.oid) as \"Filenode\", relname as \"Table Name\" %s\n"
"FROM pg_catalog.pg_class c \n"
struct options *my_opts;
PGconn *pgconn;
- my_opts = (struct options *) myalloc(sizeof(struct options));
+ my_opts = (struct options *) pg_malloc(sizeof(struct options));
- my_opts->oids = (eary *) myalloc(sizeof(eary));
- my_opts->tables = (eary *) myalloc(sizeof(eary));
- my_opts->filenodes = (eary *) myalloc(sizeof(eary));
+ my_opts->oids = (eary *) pg_malloc(sizeof(eary));
+ my_opts->tables = (eary *) pg_malloc(sizeof(eary));
+ my_opts->filenodes = (eary *) pg_malloc(sizeof(eary));
my_opts->oids->num = my_opts->oids->alloc = 0;
my_opts->tables->num = my_opts->tables->alloc = 0;