diff options
Diffstat (limited to 'contrib/oid2name/oid2name.c')
-rw-r--r-- | contrib/oid2name/oid2name.c | 80 |
1 files changed, 48 insertions, 32 deletions
diff --git a/contrib/oid2name/oid2name.c b/contrib/oid2name/oid2name.c index e8a389e49e7..74e60f23fba 100644 --- a/contrib/oid2name/oid2name.c +++ b/contrib/oid2name/oid2name.c @@ -49,8 +49,9 @@ struct options /* 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 *); @@ -102,7 +103,7 @@ get_opts(int argc, char **argv, struct options * my_opts) { /* specify the database */ case 'd': - my_opts->dbname = mystrdup(optarg); + my_opts->dbname = pg_strdup(optarg); break; /* specify one tablename to show */ @@ -127,17 +128,17 @@ get_opts(int argc, char **argv, struct options * my_opts) /* 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 */ @@ -199,26 +200,47 @@ help(const char *progname) } 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; @@ -235,22 +257,16 @@ add_one_elt(char *eltname, eary *eary) 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++; } @@ -270,7 +286,7 @@ get_comma_elts(eary *eary) length = 0; if (eary->num == 0) - return mystrdup(""); + return pg_strdup(""); /* * PQescapeString wants 2 * length + 1 bytes of breath space. Add two @@ -279,7 +295,7 @@ get_comma_elts(eary *eary) 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++) @@ -384,7 +400,7 @@ sql_exec(PGconn *conn, const char *todo, bool quiet) 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)); @@ -407,7 +423,7 @@ sql_exec(PGconn *conn, const char *todo, bool quiet) 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); @@ -498,8 +514,8 @@ sql_exec_searchtables(PGconn *conn, struct options * opts) 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) @@ -525,7 +541,7 @@ sql_exec_searchtables(PGconn *conn, struct options * opts) 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" @@ -565,11 +581,11 @@ main(int argc, char **argv) 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; |