diff options
author | Joris Vink <joris@cvs.openbsd.org> | 2005-12-10 20:27:47 +0000 |
---|---|---|
committer | Joris Vink <joris@cvs.openbsd.org> | 2005-12-10 20:27:47 +0000 |
commit | 9eb5d4f85893529cdca5a54796e344ecb6581196 (patch) | |
tree | f6078dc6aa0b2687219c6431ba7f872b4326c298 /usr.bin/cvs/util.c | |
parent | cc2c3fa0314517ddf972b8ca44e9d25aee920bc1 (diff) |
switch to xmalloc stuff, me and xsa@ agreed on this a long
time ago, but we were being held back by jfb. too bad for him.
next step is to use fatal() through out the code for unrecoverable
errors instead of trying to be all nice and fluffy and reach main() again.
ok niallo@ and xsa@
Diffstat (limited to 'usr.bin/cvs/util.c')
-rw-r--r-- | usr.bin/cvs/util.c | 67 |
1 files changed, 19 insertions, 48 deletions
diff --git a/usr.bin/cvs/util.c b/usr.bin/cvs/util.c index 30189cc4998..370a061a4df 100644 --- a/usr.bin/cvs/util.c +++ b/usr.bin/cvs/util.c @@ -1,4 +1,4 @@ -/* $OpenBSD: util.c,v 1.58 2005/12/03 15:07:21 joris Exp $ */ +/* $OpenBSD: util.c,v 1.59 2005/12/10 20:27:45 joris Exp $ */ /* * Copyright (c) 2004 Jean-Francois Brousseau <jfb@openbsd.org> * All rights reserved. @@ -340,19 +340,14 @@ cvs_getargv(const char *line, char **argv, int argvlen) break; } - argv[argc] = strdup(arg); - if (argv[argc] == NULL) { - cvs_log(LP_ERRNO, "failed to copy argument"); - err++; - break; - } + argv[argc] = xstrdup(arg); argc++; } if (err != 0) { /* ditch the argument vector */ for (i = 0; i < (u_int)argc; i++) - free(argv[i]); + xfree(argv[i]); argc = -1; } @@ -378,12 +373,7 @@ cvs_makeargv(const char *line, int *argc) return (NULL); size = (ret + 1) * sizeof(char *); - copy = (char **)malloc(size); - if (copy == NULL) { - cvs_log(LP_ERRNO, "failed to allocate argument vector"); - cvs_freeargv(argv, ret); - return (NULL); - } + copy = (char **)xmalloc(size); memset(copy, 0, size); for (i = 0; i < ret; i++) @@ -407,7 +397,7 @@ cvs_freeargv(char **argv, int argc) for (i = 0; i < argc; i++) if (argv[i] != NULL) - free(argv[i]); + xfree(argv[i]); } @@ -644,22 +634,20 @@ cvs_create_dir(const char *path, int create_adm, char *root, char *repo) return (-1); } - if ((s = strdup(path)) == NULL) - return (-1); - + s = xstrdup(path); rpath[0] = '\0'; if (repo != NULL) { if (strlcpy(rpath, repo, sizeof(rpath)) >= sizeof(rpath)) { errno = ENAMETOOLONG; cvs_log(LP_ERRNO, "%s", rpath); - free(s); + xfree(s); return (-1); } if (strlcat(rpath, "/", sizeof(rpath)) >= sizeof(rpath)) { errno = ENAMETOOLONG; cvs_log(LP_ERRNO, "%s", rpath); - free(s); + xfree(s); return (-1); } } @@ -742,7 +730,7 @@ cvs_create_dir(const char *path, int create_adm, char *root, char *repo) done: if (entf != NULL) cvs_ent_close(entf); - free(s); + xfree(s); return (ret); } @@ -904,15 +892,15 @@ cvs_parse_tagfile(char **tagp, char **datep, int *nbp) switch (*linebuf) { case 'T': if (tagp != NULL) - *tagp = strdup(linebuf); + *tagp = xstrdup(linebuf); break; case 'D': if (datep != NULL) - *datep = strdup(linebuf); + *datep = xstrdup(linebuf); break; case 'N': if (tagp != NULL) - *tagp = strdup(linebuf); + *tagp = xstrdup(linebuf); if (nbp != NULL) *nbp = 1; break; @@ -938,35 +926,18 @@ cvs_splitlines(const char *fcont) struct cvs_lines *lines; struct cvs_line *lp; - lines = (struct cvs_lines *)malloc(sizeof(*lines)); - if (lines == NULL) - return (NULL); - + lines = (struct cvs_lines *)xmalloc(sizeof(*lines)); TAILQ_INIT(&(lines->l_lines)); lines->l_nblines = 0; - lines->l_data = strdup(fcont); - if (lines->l_data == NULL) { - free(lines); - return (NULL); - } - - lp = (struct cvs_line *)malloc(sizeof(*lp)); - if (lp == NULL) { - cvs_freelines(lines); - return (NULL); - } + lines->l_data = xstrdup(fcont); + lp = (struct cvs_line *)xmalloc(sizeof(*lp)); lp->l_line = NULL; lp->l_lineno = 0; TAILQ_INSERT_TAIL(&(lines->l_lines), lp, l_list); for (dcp = lines->l_data; *dcp != '\0';) { - lp = (struct cvs_line *)malloc(sizeof(*lp)); - if (lp == NULL) { - cvs_freelines(lines); - return (NULL); - } - + lp = (struct cvs_line *)xmalloc(sizeof(*lp)); lp->l_line = dcp; lp->l_lineno = ++(lines->l_nblines); TAILQ_INSERT_TAIL(&(lines->l_lines), lp, l_list); @@ -987,11 +958,11 @@ cvs_freelines(struct cvs_lines *lines) while ((lp = TAILQ_FIRST(&(lines->l_lines))) != NULL) { TAILQ_REMOVE(&(lines->l_lines), lp, l_list); - free(lp); + xfree(lp); } - free(lines->l_data); - free(lines); + xfree(lines->l_data); + xfree(lines); } BUF * |