aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/bin/psql/command.c33
-rw-r--r--src/bin/psql/common.c46
-rw-r--r--src/bin/psql/common.h10
-rw-r--r--src/bin/psql/copy.c15
-rw-r--r--src/bin/psql/describe.c17
-rw-r--r--src/bin/psql/input.c46
-rw-r--r--src/bin/psql/mainloop.c10
-rw-r--r--src/bin/psql/print.c91
-rw-r--r--src/bin/psql/prompt.c6
-rw-r--r--src/bin/psql/startup.c15
-rw-r--r--src/bin/psql/stringutils.c6
-rw-r--r--src/bin/psql/tab-complete.c34
-rw-r--r--src/bin/psql/variables.c34
13 files changed, 125 insertions, 238 deletions
diff --git a/src/bin/psql/command.c b/src/bin/psql/command.c
index e1294785d70..2f31d3e4ed8 100644
--- a/src/bin/psql/command.c
+++ b/src/bin/psql/command.c
@@ -3,7 +3,7 @@
*
* Copyright (c) 2000-2003, PostgreSQL Global Development Group
*
- * $PostgreSQL: pgsql/src/bin/psql/command.c,v 1.109 2004/01/09 21:12:20 momjian Exp $
+ * $PostgreSQL: pgsql/src/bin/psql/command.c,v 1.110 2004/01/24 19:38:49 neilc Exp $
*/
#include "postgres_fe.h"
#include "command.h"
@@ -1156,13 +1156,7 @@ scan_option(char **string, enum option_type type, char *quote, bool semicolon)
/* Copy the option */
token_len = cp - &options_string[pos];
- return_val = malloc(token_len + 1);
- if (!return_val)
- {
- psql_error("out of memory\n");
- exit(EXIT_FAILURE);
- }
-
+ return_val = xmalloc(token_len + 1);
memcpy(return_val, &options_string[pos], token_len);
return_val[token_len] = '\0';
@@ -1235,7 +1229,7 @@ scan_option(char **string, enum option_type type, char *quote, bool semicolon)
*
* Replaces \n, \t, and the like.
*
- * The return value is malloc()'ed.
+ * The return value is malloc'ed.
*/
static char *
unescape(const unsigned char *source, size_t len)
@@ -1251,12 +1245,7 @@ unescape(const unsigned char *source, size_t len)
length = Min(len, strlen(source)) + 1;
- tmp = destination = malloc(length);
- if (!tmp)
- {
- psql_error("out of memory\n");
- exit(EXIT_FAILURE);
- }
+ tmp = destination = xmalloc(length);
for (p = source; p - source < (int) len && *p; p += PQmblen(p, pset.encoding))
{
@@ -1537,9 +1526,7 @@ editFile(const char *fname)
if (!editorName)
editorName = DEFAULT_EDITOR;
- sys = malloc(strlen(editorName) + strlen(fname) + 10 + 1);
- if (!sys)
- return false;
+ sys = xmalloc(strlen(editorName) + strlen(fname) + 10 + 1);
sprintf(sys,
#ifndef WIN32
"exec "
@@ -1959,15 +1946,7 @@ do_shell(const char *command)
if (shellName == NULL)
shellName = DEFAULT_SHELL;
- sys = malloc(strlen(shellName) + 16);
- if (!sys)
- {
- psql_error("out of memory\n");
- if (pset.cur_cmd_interactive)
- return false;
- else
- exit(EXIT_FAILURE);
- }
+ sys = xmalloc(strlen(shellName) + 16);
sprintf(sys,
#ifndef WIN32
"exec "
diff --git a/src/bin/psql/common.c b/src/bin/psql/common.c
index ed3649dfe1d..d27dc106bdb 100644
--- a/src/bin/psql/common.c
+++ b/src/bin/psql/common.c
@@ -3,7 +3,7 @@
*
* Copyright (c) 2000-2003, PostgreSQL Global Development Group
*
- * $PostgreSQL: pgsql/src/bin/psql/common.c,v 1.80 2004/01/20 23:48:56 tgl Exp $
+ * $PostgreSQL: pgsql/src/bin/psql/common.c,v 1.81 2004/01/24 19:38:49 neilc Exp $
*/
#include "postgres_fe.h"
#include "common.h"
@@ -89,6 +89,43 @@ xstrdup(const char *string)
return tmp;
}
+void *
+xmalloc(size_t size)
+{
+ void *tmp;
+
+ tmp = malloc(size);
+ if (!tmp)
+ {
+ psql_error("out of memory\n");
+ exit(EXIT_FAILURE);
+ }
+ return tmp;
+}
+
+void *
+xmalloc_zero(size_t size)
+{
+ void *tmp;
+
+ tmp = xmalloc(size);
+ memset(tmp, 0, size);
+ return tmp;
+}
+
+void *
+xcalloc(size_t nmemb, size_t size)
+{
+ void *tmp;
+
+ tmp = calloc(nmemb, size);
+ if (!tmp)
+ {
+ psql_error("out of memory");
+ exit(EXIT_FAILURE);
+ }
+ return tmp;
+}
/*
@@ -854,12 +891,7 @@ expand_tilde(char **filename)
{
char *newfn;
- newfn = malloc(strlen(home) + strlen(p) + 1);
- if (!newfn)
- {
- psql_error("out of memory\n");
- exit(EXIT_FAILURE);
- }
+ newfn = xmalloc(strlen(home) + strlen(p) + 1);
strcpy(newfn, home);
strcat(newfn, p);
diff --git a/src/bin/psql/common.h b/src/bin/psql/common.h
index db8037b1ed5..05e29967ba0 100644
--- a/src/bin/psql/common.h
+++ b/src/bin/psql/common.h
@@ -3,7 +3,7 @@
*
* Copyright (c) 2000-2003, PostgreSQL Global Development Group
*
- * $PostgreSQL: pgsql/src/bin/psql/common.h,v 1.32 2004/01/09 21:12:20 momjian Exp $
+ * $PostgreSQL: pgsql/src/bin/psql/common.h,v 1.33 2004/01/24 19:38:49 neilc Exp $
*/
#ifndef COMMON_H
#define COMMON_H
@@ -20,7 +20,15 @@
#define psql_assert(p)
#endif
+/*
+ * Safer versions of some standard C library functions. If an
+ * out-of-memory condition occurs, these functions will bail out
+ * safely; therefore, their return value is guaranteed to be non-NULL.
+ */
extern char *xstrdup(const char *string);
+extern void *xmalloc(size_t size);
+extern void *xmalloc_zero(size_t size);
+extern void *xcalloc(size_t nmemb, size_t size);
extern bool setQFout(const char *fname);
diff --git a/src/bin/psql/copy.c b/src/bin/psql/copy.c
index e852dd5b7a1..534efe0ca2b 100644
--- a/src/bin/psql/copy.c
+++ b/src/bin/psql/copy.c
@@ -3,7 +3,7 @@
*
* Copyright (c) 2000-2003, PostgreSQL Global Development Group
*
- * $PostgreSQL: pgsql/src/bin/psql/copy.c,v 1.37 2004/01/20 23:48:56 tgl Exp $
+ * $PostgreSQL: pgsql/src/bin/psql/copy.c,v 1.38 2004/01/24 19:38:49 neilc Exp $
*/
#include "postgres_fe.h"
#include "copy.h"
@@ -83,12 +83,7 @@ xstrcat(char **var, const char *more)
{
char *newvar;
- newvar = (char *) malloc(strlen(*var) + strlen(more) + 1);
- if (!newvar)
- {
- psql_error("out of memory\n");
- exit(EXIT_FAILURE);
- }
+ newvar = xmalloc(strlen(*var) + strlen(more) + 1);
strcpy(newvar, *var);
strcat(newvar, more);
free(*var);
@@ -112,11 +107,7 @@ parse_slash_copy(const char *args)
return NULL;
}
- if (!(result = calloc(1, sizeof(struct copy_options))))
- {
- psql_error("out of memory\n");
- exit(EXIT_FAILURE);
- }
+ result = xcalloc(1, sizeof(struct copy_options));
token = strtokx(line, whitespace, ".,()", "\"",
0, false, pset.encoding);
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index 7e168ef8456..83aa3f1aa0a 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -3,7 +3,7 @@
*
* Copyright (c) 2000-2003, PostgreSQL Global Development Group
*
- * $PostgreSQL: pgsql/src/bin/psql/describe.c,v 1.92 2004/01/11 19:10:49 dennis Exp $
+ * $PostgreSQL: pgsql/src/bin/psql/describe.c,v 1.93 2004/01/24 19:38:49 neilc Exp $
*/
#include "postgres_fe.h"
#include "describe.h"
@@ -39,21 +39,6 @@ static void processNamePattern(PQExpBuffer buf, const char *pattern,
const char *schemavar, const char *namevar,
const char *altnamevar, const char *visibilityrule);
-
-static void *
-xmalloc(size_t size)
-{
- void *tmp;
-
- tmp = malloc(size);
- if (!tmp)
- {
- psql_error("out of memory\n");
- exit(EXIT_FAILURE);
- }
- return tmp;
-}
-
static void *
xmalloczero(size_t size)
{
diff --git a/src/bin/psql/input.c b/src/bin/psql/input.c
index 90c2c92993d..6a2afa35bd3 100644
--- a/src/bin/psql/input.c
+++ b/src/bin/psql/input.c
@@ -3,7 +3,7 @@
*
* Copyright (c) 2000-2003, PostgreSQL Global Development Group
*
- * $PostgreSQL: pgsql/src/bin/psql/input.c,v 1.32 2003/11/29 19:52:06 pgsql Exp $
+ * $PostgreSQL: pgsql/src/bin/psql/input.c,v 1.33 2004/01/24 19:38:49 neilc Exp $
*/
#include "postgres_fe.h"
#include "input.h"
@@ -83,7 +83,7 @@ gets_basic(const char prompt[])
* gets_interactive()
*
* Gets a line of interactive input, using readline of desired.
- * The result is malloced.
+ * The result is malloc'ed.
*/
char *
gets_interactive(const char *prompt)
@@ -113,7 +113,7 @@ gets_interactive(const char *prompt)
else
{
free(prev_hist);
- prev_hist = strdup(s);
+ prev_hist = xstrdup(s);
add_history(s);
}
}
@@ -183,15 +183,13 @@ initializeInput(int flags)
home = getenv("HOME");
if (home)
{
- char *psql_history = (char *) malloc(strlen(home) + 1 +
- strlen(PSQLHISTORY) + 1);
-
- if (psql_history)
- {
- sprintf(psql_history, "%s/%s", home, PSQLHISTORY);
- read_history(psql_history);
- free(psql_history);
- }
+ char *psql_history;
+
+ psql_history = xmalloc(strlen(home) + 1 +
+ strlen(PSQLHISTORY) + 1);
+ sprintf(psql_history, "%s/%s", home, PSQLHISTORY);
+ read_history(psql_history);
+ free(psql_history);
}
}
#endif
@@ -234,26 +232,24 @@ finishInput(int exitstatus, void *arg)
if (useHistory)
{
char *home;
- char *psql_history;
home = getenv("HOME");
if (home)
{
- psql_history = (char *) malloc(strlen(home) + 1 +
- strlen(PSQLHISTORY) + 1);
- if (psql_history)
- {
- int hist_size;
+ char *psql_history;
+ int hist_size;
+
+ psql_history = xmalloc(strlen(home) + 1 +
+ strlen(PSQLHISTORY) + 1);
- hist_size = GetVariableNum(pset.vars, "HISTSIZE", -1, -1, true);
+ hist_size = GetVariableNum(pset.vars, "HISTSIZE", -1, -1, true);
- if (hist_size >= 0)
- stifle_history(hist_size);
+ if (hist_size >= 0)
+ stifle_history(hist_size);
- sprintf(psql_history, "%s/%s", home, PSQLHISTORY);
- write_history(psql_history);
- free(psql_history);
- }
+ sprintf(psql_history, "%s/%s", home, PSQLHISTORY);
+ write_history(psql_history);
+ free(psql_history);
}
}
#endif
diff --git a/src/bin/psql/mainloop.c b/src/bin/psql/mainloop.c
index 9a6448396b4..d59261fa2bc 100644
--- a/src/bin/psql/mainloop.c
+++ b/src/bin/psql/mainloop.c
@@ -3,7 +3,7 @@
*
* Copyright (c) 2000-2003, PostgreSQL Global Development Group
*
- * $PostgreSQL: pgsql/src/bin/psql/mainloop.c,v 1.59 2004/01/21 22:05:44 tgl Exp $
+ * $PostgreSQL: pgsql/src/bin/psql/mainloop.c,v 1.60 2004/01/24 19:38:49 neilc Exp $
*/
#include "postgres_fe.h"
#include "mainloop.h"
@@ -332,13 +332,7 @@ MainLoop(FILE *source)
/* It is a variable, perform substitution */
out_length = strlen(value);
- new = malloc(len + out_length - in_length + 1);
- if (!new)
- {
- psql_error("out of memory\n");
- exit(EXIT_FAILURE);
- }
-
+ new = xmalloc(len + out_length - in_length + 1);
sprintf(new, "%.*s%s%s", i, line, value,
&line[i + thislen + in_length]);
diff --git a/src/bin/psql/print.c b/src/bin/psql/print.c
index 890b2efd5a8..6f8b3ede0bd 100644
--- a/src/bin/psql/print.c
+++ b/src/bin/psql/print.c
@@ -3,7 +3,7 @@
*
* Copyright (c) 2000-2003, PostgreSQL Global Development Group
*
- * $PostgreSQL: pgsql/src/bin/psql/print.c,v 1.44 2003/11/29 19:52:07 pgsql Exp $
+ * $PostgreSQL: pgsql/src/bin/psql/print.c,v 1.45 2004/01/24 19:38:49 neilc Exp $
*/
#include "postgres_fe.h"
#include "common.h"
@@ -224,19 +224,8 @@ print_aligned_text(const char *title, const char *const * headers,
if (col_count > 0)
{
- widths = calloc(col_count, sizeof(*widths));
- if (!widths)
- {
- perror("calloc");
- exit(EXIT_FAILURE);
- }
-
- head_w = calloc(col_count, sizeof(*head_w));
- if (!head_w)
- {
- perror("calloc");
- exit(EXIT_FAILURE);
- }
+ widths = xcalloc(col_count, sizeof(*widths));
+ head_w = xcalloc(col_count, sizeof(*head_w));
}
else
{
@@ -250,12 +239,7 @@ print_aligned_text(const char *title, const char *const * headers,
if (cell_count > 0)
{
- cell_w = calloc(cell_count, sizeof(*cell_w));
- if (!cell_w)
- {
- perror("calloc");
- exit(EXIT_FAILURE);
- }
+ cell_w = xcalloc(cell_count, sizeof(*cell_w));
}
else
cell_w = NULL;
@@ -427,12 +411,7 @@ print_aligned_vertical(const char *title, const char *const * headers,
col_count++;
if (col_count > 0)
{
- head_w = calloc(col_count, sizeof(*head_w));
- if (!head_w)
- {
- perror("calloc");
- exit(EXIT_FAILURE);
- }
+ head_w = xcalloc(col_count, sizeof(*head_w));
}
else
head_w = NULL;
@@ -451,12 +430,7 @@ print_aligned_vertical(const char *title, const char *const * headers,
if (cell_count > 0)
{
- cell_w = calloc(cell_count, sizeof(*cell_w));
- if (!cell_w)
- {
- perror("calloc");
- exit(EXIT_FAILURE);
- }
+ cell_w = xcalloc(cell_count, sizeof(*cell_w));
}
else
cell_w = NULL;
@@ -475,12 +449,7 @@ print_aligned_vertical(const char *title, const char *const * headers,
fprintf(fout, "%s\n", title);
/* make horizontal border */
- divider = malloc(hwidth + dwidth + 10);
- if (!divider)
- {
- perror("malloc");
- exit(EXIT_FAILURE);
- }
+ divider = xmalloc(hwidth + dwidth + 10);
divider[0] = '\0';
if (opt_border == 2)
strcat(divider, "+-");
@@ -502,15 +471,9 @@ print_aligned_vertical(const char *title, const char *const * headers,
{
if (!opt_barebones)
{
- char *record_str = malloc(32);
+ char *record_str = xmalloc(32);
size_t record_str_len;
- if (!record_str)
- {
- perror("malloc");
- exit(EXIT_FAILURE);
- }
-
if (opt_border == 0)
snprintf(record_str, 32, "* Record %d", record++);
else
@@ -521,13 +484,7 @@ print_aligned_vertical(const char *title, const char *const * headers,
fprintf(fout, "%.*s%s\n", opt_border, divider, record_str);
else
{
- char *div_copy = strdup(divider);
-
- if (!div_copy)
- {
- perror("malloc");
- exit(EXIT_FAILURE);
- }
+ char *div_copy = xstrdup(divider);
strncpy(div_copy + opt_border, record_str, record_str_len);
fprintf(fout, "%s\n", div_copy);
@@ -1141,24 +1098,14 @@ printQuery(const PGresult *result, const printQueryOpt *opt, FILE *fout)
nfields = PQnfields(result);
- headers = calloc(nfields + 1, sizeof(*headers));
- if (!headers)
- {
- perror("calloc");
- exit(EXIT_FAILURE);
- }
+ headers = xcalloc(nfields + 1, sizeof(*headers));
for (i = 0; i < nfields; i++)
headers[i] = mbvalidate(PQfname(result, i), opt->topt.encoding);
/* set cells */
- cells = calloc(nfields * PQntuples(result) + 1, sizeof(*cells));
- if (!cells)
- {
- perror("calloc");
- exit(EXIT_FAILURE);
- }
+ cells = xcalloc(nfields * PQntuples(result) + 1, sizeof(*cells));
for (i = 0; i < nfields * PQntuples(result); i++)
{
@@ -1174,14 +1121,9 @@ printQuery(const PGresult *result, const printQueryOpt *opt, FILE *fout)
footers = opt->footers;
else if (!opt->topt.expanded && opt->default_footer)
{
- footers = calloc(2, sizeof(*footers));
- if (!footers)
- {
- perror("calloc");
- exit(EXIT_FAILURE);
- }
+ footers = xcalloc(2, sizeof(*footers));
- footers[0] = malloc(100);
+ footers[0] = xmalloc(100);
if (PQntuples(result) == 1)
snprintf(footers[0], 100, gettext("(1 row)"));
else
@@ -1192,12 +1134,7 @@ printQuery(const PGresult *result, const printQueryOpt *opt, FILE *fout)
/* set alignment */
- align = calloc(nfields + 1, sizeof(*align));
- if (!align)
- {
- perror("calloc");
- exit(EXIT_FAILURE);
- }
+ align = xcalloc(nfields + 1, sizeof(*align));
for (i = 0; i < nfields; i++)
{
diff --git a/src/bin/psql/prompt.c b/src/bin/psql/prompt.c
index 60e82cc2c3c..c26168b099e 100644
--- a/src/bin/psql/prompt.c
+++ b/src/bin/psql/prompt.c
@@ -3,7 +3,7 @@
*
* Copyright (c) 2000-2003, PostgreSQL Global Development Group
*
- * $PostgreSQL: pgsql/src/bin/psql/prompt.c,v 1.32 2004/01/20 19:49:34 tgl Exp $
+ * $PostgreSQL: pgsql/src/bin/psql/prompt.c,v 1.33 2004/01/24 19:38:49 neilc Exp $
*/
#include "postgres_fe.h"
#include "prompt.h"
@@ -248,7 +248,7 @@ get_prompt(promptStatus_t status)
case '`':
{
FILE *fd = NULL;
- char *file = strdup(p + 1);
+ char *file = xstrdup(p + 1);
int cmdend;
cmdend = strcspn(file, "`");
@@ -274,7 +274,7 @@ get_prompt(promptStatus_t status)
const char *val;
int nameend;
- name = strdup(p + 1);
+ name = xstrdup(p + 1);
nameend = strcspn(name, ":");
name[nameend] = '\0';
val = GetVariable(pset.vars, name);
diff --git a/src/bin/psql/startup.c b/src/bin/psql/startup.c
index a0640b1836c..b21beeb758c 100644
--- a/src/bin/psql/startup.c
+++ b/src/bin/psql/startup.c
@@ -3,7 +3,7 @@
*
* Copyright (c) 2000-2003, PostgreSQL Global Development Group
*
- * $PostgreSQL: pgsql/src/bin/psql/startup.c,v 1.81 2003/11/29 19:52:07 pgsql Exp $
+ * $PostgreSQL: pgsql/src/bin/psql/startup.c,v 1.82 2004/01/24 19:38:49 neilc Exp $
*/
#include "postgres_fe.h"
@@ -170,7 +170,7 @@ main(int argc, char *argv[])
if (strcmp(options.username, "\001") == 0)
username = simple_prompt("User name: ", 100, true);
else
- username = strdup(options.username);
+ username = xstrdup(options.username);
}
if (pset.getPassword)
@@ -567,15 +567,10 @@ process_psqlrc(void)
if (home)
{
- psqlrc = malloc(strlen(home) + 1 + strlen(PSQLRC) + 1 +
- strlen(PG_VERSION) + 1);
- if (!psqlrc)
- {
- fprintf(stderr, gettext("%s: out of memory\n"), pset.progname);
- exit(EXIT_FAILURE);
- }
-
+ psqlrc = xmalloc(strlen(home) + 1 + strlen(PSQLRC) + 1 +
+ strlen(PG_VERSION) + 1);
sprintf(psqlrc, "%s/%s-%s", home, PSQLRC, PG_VERSION);
+
if (access(psqlrc, R_OK) == 0)
process_file(psqlrc);
else
diff --git a/src/bin/psql/stringutils.c b/src/bin/psql/stringutils.c
index c90abb2cdd6..eda7837d806 100644
--- a/src/bin/psql/stringutils.c
+++ b/src/bin/psql/stringutils.c
@@ -3,7 +3,7 @@
*
* Copyright (c) 2000-2003, PostgreSQL Global Development Group
*
- * $PostgreSQL: pgsql/src/bin/psql/stringutils.c,v 1.36 2003/12/01 22:14:40 momjian Exp $
+ * $PostgreSQL: pgsql/src/bin/psql/stringutils.c,v 1.37 2004/01/24 19:38:49 neilc Exp $
*/
#include "postgres_fe.h"
@@ -77,9 +77,7 @@ strtokx(const char *s,
* tokens. 2X the space is a gross overestimate, but it's
* unlikely that this code will be used on huge strings anyway.
*/
- storage = (char *) malloc(2 * strlen(s) + 1);
- if (!storage)
- return NULL; /* really "out of memory" */
+ storage = xmalloc(2 * strlen(s) + 1);
strcpy(storage, s);
string = storage;
}
diff --git a/src/bin/psql/tab-complete.c b/src/bin/psql/tab-complete.c
index 58ef84f9a52..40650d3e1a9 100644
--- a/src/bin/psql/tab-complete.c
+++ b/src/bin/psql/tab-complete.c
@@ -3,7 +3,7 @@
*
* Copyright (c) 2000-2003, PostgreSQL Global Development Group
*
- * $PostgreSQL: pgsql/src/bin/psql/tab-complete.c,v 1.98 2004/01/10 02:21:08 momjian Exp $
+ * $PostgreSQL: pgsql/src/bin/psql/tab-complete.c,v 1.99 2004/01/24 19:38:49 neilc Exp $
*/
/*----------------------------------------------------------------------
@@ -1485,9 +1485,7 @@ _complete_from_query(int is_schema_query, const char *text, int state)
/* Set up suitably-escaped copies of textual inputs */
if (text)
{
- e_text = (char *) malloc(strlen(text) * 2 + 1);
- if (!e_text)
- return NULL;
+ e_text = xmalloc(strlen(text) * 2 + 1);
PQescapeString(e_text, text, strlen(text));
}
else
@@ -1495,16 +1493,12 @@ _complete_from_query(int is_schema_query, const char *text, int state)
if (completion_info_charp)
{
- e_info_charp = (char *)
- malloc(strlen(completion_info_charp) * 2 + 1);
- if (!e_info_charp)
- {
- if (e_text)
- free(e_text);
- return NULL;
- }
+ size_t charp_len;
+
+ charp_len = strlen(completion_info_charp);
+ e_info_charp = xmalloc(charp_len * 2 + 1);
PQescapeString(e_info_charp, completion_info_charp,
- strlen(completion_info_charp));
+ charp_len);
}
else
e_info_charp = NULL;
@@ -1794,15 +1788,7 @@ previous_word(int point, int skip)
}
/* make a copy */
- s = (char *) malloc(end - start + 2);
- if (!s)
- {
- psql_error("out of memory\n");
- if (!pset.cur_cmd_interactive)
- exit(EXIT_FAILURE);
- else
- return NULL;
- }
+ s = xmalloc(end - start + 2);
strncpy(s, &rl_line_buffer[start], end - start + 1);
s[end - start + 1] = '\0';
@@ -1828,7 +1814,7 @@ quote_file_name(char *text, int match_type, char *quote_pointer)
(void) quote_pointer; /* not used */
length = strlen(text) +(match_type == SINGLE_MATCH ? 3 : 2);
- s = malloc(length);
+ s = xmalloc(length);
s[0] = '\'';
strcpy(s + 1, text);
if (match_type == SINGLE_MATCH)
@@ -1849,7 +1835,7 @@ dequote_file_name(char *text, char quote_char)
return xstrdup(text);
length = strlen(text);
- s = malloc(length - 2 + 1);
+ s = xmalloc(length - 2 + 1);
strncpy(s, text +1, length - 2);
s[length] = '\0';
diff --git a/src/bin/psql/variables.c b/src/bin/psql/variables.c
index 21dc8aecb68..31c5510ad83 100644
--- a/src/bin/psql/variables.c
+++ b/src/bin/psql/variables.c
@@ -3,7 +3,7 @@
*
* Copyright (c) 2000-2003, PostgreSQL Global Development Group
*
- * $PostgreSQL: pgsql/src/bin/psql/variables.c,v 1.15 2003/12/01 22:14:40 momjian Exp $
+ * $PostgreSQL: pgsql/src/bin/psql/variables.c,v 1.16 2004/01/24 19:38:49 neilc Exp $
*/
#include "postgres_fe.h"
#include "common.h"
@@ -14,19 +14,9 @@ CreateVariableSpace(void)
{
struct _variable *ptr;
- ptr = calloc(1, sizeof *ptr);
- if (!ptr)
- return NULL;
-
- ptr->name = strdup("@");
- ptr->value = strdup("");
- if (!ptr->name || !ptr->value)
- {
- free(ptr->name);
- free(ptr->value);
- free(ptr);
- return NULL;
- }
+ ptr = xcalloc(1, sizeof *ptr);
+ ptr->name = xstrdup("@");
+ ptr->value = xstrdup("");
return ptr;
}
@@ -162,19 +152,15 @@ SetVariable(VariableSpace space, const char *name, const char *value)
if (strcmp(current->name, name) == 0)
{
free(current->value);
- current->value = strdup(value);
- return current->value ? true : false;
+ current->value = xstrdup(value);
+ return true;
}
}
- previous->next = calloc(1, sizeof *(previous->next));
- if (!previous->next)
- return false;
- previous->next->name = strdup(name);
- if (!previous->next->name)
- return false;
- previous->next->value = strdup(value);
- return previous->next->value ? true : false;
+ previous->next = xcalloc(1, sizeof *(previous->next));
+ previous->next->name = xstrdup(name);
+ previous->next->value = xstrdup(value);
+ return true;
}
bool