summaryrefslogtreecommitdiff
path: root/usr.bin
diff options
context:
space:
mode:
Diffstat (limited to 'usr.bin')
-rw-r--r--usr.bin/cvs/Makefile6
-rw-r--r--usr.bin/cvs/add.c7
-rw-r--r--usr.bin/cvs/buf.c32
-rw-r--r--usr.bin/cvs/cmd.c9
-rw-r--r--usr.bin/cvs/commit.c8
-rw-r--r--usr.bin/cvs/cvs.c48
-rw-r--r--usr.bin/cvs/cvs.h6
-rw-r--r--usr.bin/cvs/diff.c108
-rw-r--r--usr.bin/cvs/diff3.c27
-rw-r--r--usr.bin/cvs/entries.c49
-rw-r--r--usr.bin/cvs/fatal.c41
-rw-r--r--usr.bin/cvs/file.c129
-rw-r--r--usr.bin/cvs/hist.c24
-rw-r--r--usr.bin/cvs/import.c8
-rw-r--r--usr.bin/cvs/log.c4
-rw-r--r--usr.bin/cvs/logmsg.c4
-rw-r--r--usr.bin/cvs/proto.c26
-rw-r--r--usr.bin/cvs/rcs.c354
-rw-r--r--usr.bin/cvs/rcsnum.c41
-rw-r--r--usr.bin/cvs/req.c36
-rw-r--r--usr.bin/cvs/resp.c22
-rw-r--r--usr.bin/cvs/root.c29
-rw-r--r--usr.bin/cvs/util.c67
-rw-r--r--usr.bin/cvs/watch.c13
-rw-r--r--usr.bin/cvs/xmalloc.c67
-rw-r--r--usr.bin/cvs/xmalloc.h27
-rw-r--r--usr.bin/cvs/zlib.c8
-rw-r--r--usr.bin/rcs/Makefile6
-rw-r--r--usr.bin/rcs/ci.c43
-rw-r--r--usr.bin/rcs/co.c16
-rw-r--r--usr.bin/rcs/rcsclean.c6
-rw-r--r--usr.bin/rcs/rcsmerge.c4
-rw-r--r--usr.bin/rcs/rcsprog.c19
-rw-r--r--usr.bin/rcs/rcsprog.h4
34 files changed, 472 insertions, 826 deletions
diff --git a/usr.bin/cvs/Makefile b/usr.bin/cvs/Makefile
index a64c7f3349a..ec09208b5c6 100644
--- a/usr.bin/cvs/Makefile
+++ b/usr.bin/cvs/Makefile
@@ -1,14 +1,14 @@
-# $OpenBSD: Makefile,v 1.16 2005/11/12 21:34:48 niallo Exp $
+# $OpenBSD: Makefile,v 1.17 2005/12/10 20:27:45 joris Exp $
PROG= cvs
MAN= cvs.1 cvsignore.5 cvsrc.5 cvswrappers.5 cvsintro.7
CPPFLAGS+=-I${.CURDIR}
SRCS= cvs.c add.c admin.c annotate.c buf.c checkout.c cmd.c commit.c date.y \
- diff.c diff3.c edit.c entries.c file.c getlog.c history.c hist.c \
+ diff.c diff3.c edit.c entries.c fatal.c file.c getlog.c history.c hist.c \
import.c init.c log.c logmsg.c proto.c rcs.c rcsnum.c release.c \
remove.c req.c resp.c root.c server.c status.c tag.c \
- update.c util.c version.c watch.c
+ update.c util.c version.c watch.c xmalloc.c
CFLAGS= -g -ggdb
CFLAGS+= -Wall
diff --git a/usr.bin/cvs/add.c b/usr.bin/cvs/add.c
index 7c96a2bb840..0b8d3b57730 100644
--- a/usr.bin/cvs/add.c
+++ b/usr.bin/cvs/add.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: add.c,v 1.34 2005/10/07 21:47:32 reyk Exp $ */
+/* $OpenBSD: add.c,v 1.35 2005/12/10 20:27:45 joris Exp $ */
/*
* Copyright (c) 2004 Jean-Francois Brousseau <jfb@openbsd.org>
* Copyright (c) 2005 Xavier Santolaria <xsa@openbsd.org>
@@ -90,10 +90,7 @@ cvs_add_init(struct cvs_cmd *cmd, int argc, char **argv, int *arg)
}
break;
case 'm':
- if ((cvs_msg = strdup(optarg)) == NULL) {
- cvs_log(LP_ERRNO, "failed to copy message");
- return (CVS_EX_DATA);
- }
+ cvs_msg = xstrdup(optarg);
break;
default:
return (CVS_EX_USAGE);
diff --git a/usr.bin/cvs/buf.c b/usr.bin/cvs/buf.c
index 5cb31d562a0..7645a093ac9 100644
--- a/usr.bin/cvs/buf.c
+++ b/usr.bin/cvs/buf.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: buf.c,v 1.18 2005/08/14 19:49:18 xsa Exp $ */
+/* $OpenBSD: buf.c,v 1.19 2005/12/10 20:27:45 joris Exp $ */
/*
* Copyright (c) 2003 Jean-Francois Brousseau <jfb@openbsd.org>
* All rights reserved.
@@ -38,7 +38,7 @@
#include "buf.h"
#include "log.h"
-
+#include "xmalloc.h"
#define BUF_INCR 128
@@ -76,18 +76,8 @@ cvs_buf_alloc(size_t len, u_int flags)
{
BUF *b;
- b = (BUF *)malloc(sizeof(*b));
- if (b == NULL) {
- cvs_log(LP_ERRNO, "failed to allocate buffer");
- return (NULL);
- }
-
- b->cb_buf = malloc(len);
- if (b->cb_buf == NULL) {
- cvs_log(LP_ERRNO, "failed to allocate buffer");
- free(b);
- return (NULL);
- }
+ b = (BUF *)xmalloc(sizeof(*b));
+ b->cb_buf = xmalloc(len);
memset(b->cb_buf, 0, len);
b->cb_flags = flags;
@@ -162,8 +152,8 @@ cvs_buf_load(const char *path, u_int flags)
void
cvs_buf_free(BUF *b)
{
- free(b->cb_buf);
- free(b);
+ xfree(b->cb_buf);
+ xfree(b);
}
@@ -180,7 +170,7 @@ cvs_buf_release(BUF *b)
u_char *tmp;
tmp = b->cb_buf;
- free(b);
+ xfree(b);
return (tmp);
}
@@ -339,7 +329,7 @@ cvs_buf_fappend(BUF *b, const char *fmt, ...)
}
ret = cvs_buf_append(b, str, (size_t)ret);
- free(str);
+ xfree(str);
return (ret);
}
@@ -473,11 +463,7 @@ cvs_buf_grow(BUF *b, size_t len)
size_t diff;
diff = b->cb_cur - b->cb_buf;
- tmp = realloc(b->cb_buf, b->cb_size + len);
- if (tmp == NULL) {
- cvs_log(LP_ERRNO, "failed to grow buffer");
- return (-1);
- }
+ tmp = xrealloc(b->cb_buf, b->cb_size + len);
b->cb_buf = (u_char *)tmp;
b->cb_size += len;
diff --git a/usr.bin/cvs/cmd.c b/usr.bin/cvs/cmd.c
index bcb7a6fdec9..15f30b8b8ee 100644
--- a/usr.bin/cvs/cmd.c
+++ b/usr.bin/cvs/cmd.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: cmd.c,v 1.38 2005/12/03 01:02:08 joris Exp $ */
+/* $OpenBSD: cmd.c,v 1.39 2005/12/10 20:27:45 joris Exp $ */
/*
* Copyright (c) 2005 Joris Vink <joris@openbsd.org>
* All rights reserved.
@@ -230,11 +230,8 @@ cvs_startcmd(struct cvs_cmd *cmd, int argc, char **argv)
* This allows us to correctly fill in the repository
* string for CVSFILE's fetched inside the repository itself.
*/
- if (cvs_cmdop == CVS_OP_SERVER) {
- cvs_rootstr = strdup(root->cr_str);
- if (cvs_rootstr == NULL)
- return (CVS_EX_DATA);
- }
+ if (cvs_cmdop == CVS_OP_SERVER)
+ cvs_rootstr = xstrdup(root->cr_str);
cvs_log(LP_TRACE, "cvs_startcmd() CVSROOT=%s", root->cr_str);
diff --git a/usr.bin/cvs/commit.c b/usr.bin/cvs/commit.c
index f09ebb0e092..245725337ee 100644
--- a/usr.bin/cvs/commit.c
+++ b/usr.bin/cvs/commit.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: commit.c,v 1.46 2005/07/27 16:42:19 xsa Exp $ */
+/* $OpenBSD: commit.c,v 1.47 2005/12/10 20:27:45 joris Exp $ */
/*
* Copyright (c) 2004 Jean-Francois Brousseau <jfb@openbsd.org>
* All rights reserved.
@@ -88,11 +88,7 @@ cvs_commit_init(struct cvs_cmd *cmd, int argc, char **argv, int *arg)
cmd->file_flags &= ~CF_RECURSE;
break;
case 'm':
- cvs_msg = strdup(optarg);
- if (cvs_msg == NULL) {
- cvs_log(LP_ERRNO, "failed to copy message");
- return (CVS_EX_USAGE);
- }
+ cvs_msg = xstrdup(optarg);
break;
case 'R':
cmd->file_flags |= CF_RECURSE;
diff --git a/usr.bin/cvs/cvs.c b/usr.bin/cvs/cvs.c
index 3fcdfc254fc..7f612698f61 100644
--- a/usr.bin/cvs/cvs.c
+++ b/usr.bin/cvs/cvs.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: cvs.c,v 1.87 2005/12/03 15:07:20 joris Exp $ */
+/* $OpenBSD: cvs.c,v 1.88 2005/12/10 20:27:45 joris Exp $ */
/*
* Copyright (c) 2004 Jean-Francois Brousseau <jfb@openbsd.org>
* All rights reserved.
@@ -180,7 +180,7 @@ main(int argc, char **argv)
cvs_getopt(i, targv);
cvs_freeargv(targv, i);
- free(targv);
+ xfree(targv);
}
}
@@ -256,7 +256,7 @@ main(int argc, char **argv)
if (cvs_files != NULL)
cvs_file_free(cvs_files);
if (cvs_msg != NULL)
- free(cvs_msg);
+ xfree(cvs_msg);
return (ret);
}
@@ -419,10 +419,7 @@ cvs_read_rcfile(void)
* argument processing.
*/
*lp = ' ';
- cvs_defargs = strdup(p);
- if (cvs_defargs == NULL)
- cvs_log(LP_ERRNO,
- "failed to copy global arguments");
+ cvs_defargs = xstrdup(p);
} else {
lp++;
cmdp = cvs_findcmd(p);
@@ -433,11 +430,7 @@ cvs_read_rcfile(void)
continue;
}
- cmdp->cmd_defargs = strdup(lp);
- if (cmdp->cmd_defargs == NULL)
- cvs_log(LP_ERRNO,
- "failed to copy default arguments for %s",
- cmdp->cmd_name);
+ cmdp->cmd_defargs = xstrdup(lp);
}
}
if (ferror(fp)) {
@@ -480,33 +473,16 @@ cvs_var_set(const char *var, const char *val)
if (strcmp(vp->cv_name, var) == 0)
break;
- valcp = strdup(val);
- if (valcp == NULL) {
- cvs_log(LP_ERRNO, "failed to allocate variable");
- return (-1);
- }
-
+ valcp = xstrdup(val);
if (vp == NULL) {
- vp = (struct cvs_var *)malloc(sizeof(*vp));
- if (vp == NULL) {
- cvs_log(LP_ERRNO, "failed to allocate variable");
- free(valcp);
- return (-1);
- }
+ vp = (struct cvs_var *)xmalloc(sizeof(*vp));
memset(vp, 0, sizeof(*vp));
- vp->cv_name = strdup(var);
- if (vp->cv_name == NULL) {
- cvs_log(LP_ERRNO, "failed to allocate variable");
- free(valcp);
- free(vp);
- return (-1);
- }
-
+ vp->cv_name = xstrdup(var);
TAILQ_INSERT_TAIL(&cvs_variables, vp, cv_link);
} else /* free the previous value */
- free(vp->cv_val);
+ xfree(vp->cv_val);
vp->cv_val = valcp;
@@ -528,9 +504,9 @@ cvs_var_unset(const char *var)
TAILQ_FOREACH(vp, &cvs_variables, cv_link)
if (strcmp(vp->cv_name, var) == 0) {
TAILQ_REMOVE(&cvs_variables, vp, cv_link);
- free(vp->cv_name);
- free(vp->cv_val);
- free(vp);
+ xfree(vp->cv_name);
+ xfree(vp->cv_val);
+ xfree(vp);
return (0);
}
diff --git a/usr.bin/cvs/cvs.h b/usr.bin/cvs/cvs.h
index 24914141c1d..9385e214a8b 100644
--- a/usr.bin/cvs/cvs.h
+++ b/usr.bin/cvs/cvs.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: cvs.h,v 1.90 2005/12/03 15:07:21 joris Exp $ */
+/* $OpenBSD: cvs.h,v 1.91 2005/12/10 20:27:45 joris Exp $ */
/*
* Copyright (c) 2004 Jean-Francois Brousseau <jfb@openbsd.org>
* All rights reserved.
@@ -34,6 +34,7 @@
#include "rcs.h"
#include "file.h"
+#include "xmalloc.h"
#define CVS_VERSION_MAJOR 0
#define CVS_VERSION_MINOR 3
@@ -427,6 +428,7 @@ struct cvs_lines {
struct cvs_tqh l_lines;
};
+void fatal(const char *, ...);
int cvs_readrepo(const char *, char *, size_t);
int cvs_modetostr(mode_t, char *, size_t);
int cvs_strtomode(const char *, mode_t *);
@@ -458,4 +460,4 @@ void cvs_freelines(struct cvs_lines *);
int rcs_patch_lines(struct cvs_lines *, struct cvs_lines *);
int cvs_checkout_rev(RCSFILE *, RCSNUM *, CVSFILE *, char *, int, int, ...);
-#endif /* CVS_H */
+#endif
diff --git a/usr.bin/cvs/diff.c b/usr.bin/cvs/diff.c
index 74cc60b601f..019ae38148b 100644
--- a/usr.bin/cvs/diff.c
+++ b/usr.bin/cvs/diff.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: diff.c,v 1.70 2005/12/05 19:53:00 niallo Exp $ */
+/* $OpenBSD: diff.c,v 1.71 2005/12/10 20:27:45 joris Exp $ */
/*
* Copyright (C) Caldera International Inc. 2001-2002.
* All rights reserved.
@@ -357,9 +357,7 @@ cvs_diff_init(struct cvs_cmd *cmd, int argc, char **argv, int *arg)
{
int ch;
- dap = (struct diff_arg *)malloc(sizeof(*dap));
- if (dap == NULL)
- return (CVS_EX_DATA);
+ dap = (struct diff_arg *)xmalloc(sizeof(*dap));
dap->date1 = dap->date2 = dap->rev1 = dap->rev2 = NULL;
strlcpy(diffargs, argv[0], sizeof(diffargs));
@@ -434,7 +432,7 @@ int
cvs_diff_cleanup(void)
{
if (dap != NULL) {
- free(dap);
+ xfree(dap);
dap = NULL;
}
return (0);
@@ -767,65 +765,35 @@ cvs_diffreg(const char *file1, const char *file2, BUF *out)
member = (int *)file[1];
equiv(sfile[0], slen[0], sfile[1], slen[1], member);
- if ((tmp = realloc(member, (slen[1] + 2) * sizeof(int))) == NULL) {
- free(member);
- member = NULL;
- cvs_log(LP_ERRNO, "failed to resize member");
- goto closem;
- }
+ tmp = xrealloc(member, (slen[1] + 2) * sizeof(int));
member = (int *)tmp;
class = (int *)file[0];
unsort(sfile[0], slen[0], class);
- if ((tmp = realloc(class, (slen[0] + 2) * sizeof(int))) == NULL) {
- free(class);
- class = NULL;
- cvs_log(LP_ERRNO, "failed to resize class");
- goto closem;
- }
+ tmp = xrealloc(class, (slen[0] + 2) * sizeof(int));
class = (int *)tmp;
- if ((klist = malloc((slen[0] + 2) * sizeof(int))) == NULL) {
- cvs_log(LP_ERRNO, "failed to allocate klist");
- goto closem;
- }
+ klist = xmalloc((slen[0] + 2) * sizeof(int));
clen = 0;
clistlen = 100;
- if ((clist = malloc(clistlen * sizeof(cand))) == NULL) {
- cvs_log(LP_ERRNO, "failed to allocate clist");
- goto closem;
- }
+ clist = xmalloc(clistlen * sizeof(cand));
if ((i = stone(class, slen[0], member, klist)) < 0)
goto closem;
- free(member);
- free(class);
+ xfree(member);
+ xfree(class);
- if ((tmp = realloc(J, (diff_len[0] + 2) * sizeof(int))) == NULL) {
- free(J);
- J = NULL;
- cvs_log(LP_ERRNO, "failed to resize J");
- goto closem;
- }
+ tmp = xrealloc(J, (diff_len[0] + 2) * sizeof(int));
J = (int *)tmp;
unravel(klist[i]);
- free(clist);
- free(klist);
+ xfree(clist);
+ xfree(klist);
- if ((tmp = realloc(ixold, (diff_len[0] + 2) * sizeof(long))) == NULL) {
- free(ixold);
- ixold = NULL;
- cvs_log(LP_ERRNO, "failed to resize ixold");
- goto closem;
- }
+ tmp = xrealloc(ixold, (diff_len[0] + 2) * sizeof(long));
ixold = (long *)tmp;
- if ((tmp = realloc(ixnew, (diff_len[1] + 2) * sizeof(long))) == NULL) {
- free(ixnew);
- ixnew = NULL;
- cvs_log(LP_ERRNO, "failed to resize ixnew");
- goto closem;
- }
+
+ tmp = xrealloc(ixnew, (diff_len[1] + 2) * sizeof(long));
ixnew = (long *)tmp;
check(f1, f2);
output(file1, f1, file2, f2);
@@ -885,20 +853,11 @@ prepare(int i, FILE *fd, off_t filesize)
if (sz < 100)
sz = 100;
- p = (struct line *)malloc((sz + 3) * sizeof(struct line));
- if (p == NULL) {
- cvs_log(LP_ERRNO, "failed to prepare line array");
- return (-1);
- }
+ p = (struct line *)xmalloc((sz + 3) * sizeof(struct line));
for (j = 0; (h = readhash(fd));) {
if (j == (int)sz) {
sz = sz * 3 / 2;
- tmp = realloc(p, (sz + 3) * sizeof(struct line));
- if (tmp == NULL) {
- cvs_log(LP_ERRNO, "failed to grow line array");
- free(p);
- return (-1);
- }
+ tmp = xrealloc(p, (sz + 3) * sizeof(struct line));
p = (struct line *)tmp;
}
p[++j].value = h;
@@ -1038,11 +997,7 @@ newcand(int x, int y, int pred)
if (clen == clistlen) {
newclistlen = clistlen * 11 / 10;
- tmp = realloc(clist, newclistlen * sizeof(cand));
- if (tmp == NULL) {
- cvs_log(LP_ERRNO, "failed to resize clist");
- return (-1);
- }
+ tmp = xrealloc(clist, newclistlen * sizeof(cand));
clist = tmp;
clistlen = newclistlen;
}
@@ -1232,15 +1187,12 @@ unsort(struct line *f, int l, int *b)
{
int *a, i;
- if ((a = (int *)malloc((l + 1) * sizeof(int))) == NULL) {
- cvs_log(LP_ERRNO, "failed to allocate sort array");
- return;
- }
+ a = (int *)xmalloc((l + 1) * sizeof(int));
for (i = 1; i <= l; i++)
a[f[i].serial] = f[i].value;
for (i = 1; i <= l; i++)
b[i] = a[i];
- free(a);
+ xfree(a);
}
static int
@@ -1318,11 +1270,7 @@ preadline(int fd, size_t rlen, off_t off)
char *line;
ssize_t nr;
- line = malloc(rlen + 1);
- if (line == NULL) {
- cvs_log(LP_ERRNO, "failed to allocate line");
- return (NULL);
- }
+ line = xmalloc(rlen + 1);
if ((nr = pread(fd, line, rlen, off)) < 0) {
cvs_log(LP_ERRNO, "preadline failed");
return (NULL);
@@ -1337,7 +1285,7 @@ ignoreline(char *line)
int ret;
ret = regexec(&ignore_re, line, (size_t)0, NULL, 0);
- free(line);
+ xfree(line);
return (ret == 0); /* if it matched, it should be ignored. */
}
@@ -1391,14 +1339,8 @@ proceed:
struct context_vec *tmp;
ptrdiff_t offset = context_vec_ptr - context_vec_start;
max_context <<= 1;
- if ((tmp = realloc(context_vec_start, max_context *
- sizeof(struct context_vec))) == NULL) {
- free(context_vec_start);
- context_vec_start = NULL;
- cvs_log(LP_ERRNO,
- "failed to resize context_vec_start");
- return;
- }
+ tmp = xrealloc(context_vec_start, max_context *
+ sizeof(struct context_vec));
context_vec_start = tmp;
context_vec_end = context_vec_start + max_context;
context_vec_ptr = context_vec_start + offset;
@@ -1836,6 +1778,6 @@ diff_output(const char *fmt, ...)
cvs_buf_append(diffbuf, str, strlen(str));
else
cvs_printf("%s", str);
- free(str);
+ xfree(str);
va_end(vap);
}
diff --git a/usr.bin/cvs/diff3.c b/usr.bin/cvs/diff3.c
index 498b4dcc780..45c39e4a02f 100644
--- a/usr.bin/cvs/diff3.c
+++ b/usr.bin/cvs/diff3.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: diff3.c,v 1.7 2005/12/03 01:02:08 joris Exp $ */
+/* $OpenBSD: diff3.c,v 1.8 2005/12/10 20:27:45 joris Exp $ */
/*
* Copyright (C) Caldera International Inc. 2001-2002.
@@ -71,7 +71,7 @@ static const char copyright[] =
#endif /* not lint */
#ifndef lint
-static const char rcsid[] = "$OpenBSD: diff3.c,v 1.7 2005/12/03 01:02:08 joris Exp $";
+static const char rcsid[] = "$OpenBSD: diff3.c,v 1.8 2005/12/10 20:27:45 joris Exp $";
#endif /* not lint */
#include <sys/queue.h>
@@ -270,8 +270,8 @@ cvs_diff3(RCSFILE *rf, char *workfile, RCSNUM *rev1, RCSNUM *rev2)
diff3_conflicts, (diff3_conflicts > 1) ? "s" : "");
}
- free(data);
- free(patch);
+ xfree(data);
+ xfree(patch);
out:
if (b1 != NULL)
@@ -508,8 +508,7 @@ getline(FILE *b, size_t *n)
do {
bufsize += 1024;
} while (len + 1 > bufsize);
- if ((buf = realloc(buf, bufsize)) == NULL)
- err(EXIT_FAILURE, NULL);
+ buf = xrealloc(buf, bufsize);
}
memcpy(buf, cp, len - 1);
buf[len - 1] = '\n';
@@ -808,24 +807,16 @@ increase(void)
newsz = szchanges == 0 ? 64 : 2 * szchanges;
incr = newsz - szchanges;
- p = realloc(d13, newsz * sizeof(struct diff));
- if (p == NULL)
- err(1, NULL);
+ p = xrealloc(d13, newsz * sizeof(struct diff));
memset(p + szchanges, 0, incr * sizeof(struct diff));
d13 = p;
- p = realloc(d23, newsz * sizeof(struct diff));
- if (p == NULL)
- err(1, NULL);
+ p = xrealloc(d23, newsz * sizeof(struct diff));
memset(p + szchanges, 0, incr * sizeof(struct diff));
d23 = p;
- p = realloc(de, newsz * sizeof(struct diff));
- if (p == NULL)
- err(1, NULL);
+ p = xrealloc(de, newsz * sizeof(struct diff));
memset(p + szchanges, 0, incr * sizeof(struct diff));
de = p;
- q = realloc(overlap, newsz * sizeof(char));
- if (q == NULL)
- err(1, NULL);
+ q = xrealloc(overlap, newsz * sizeof(char));
memset(q + szchanges, 0, incr * sizeof(char));
overlap = q;
szchanges = newsz;
diff --git a/usr.bin/cvs/entries.c b/usr.bin/cvs/entries.c
index 1ece81f0864..541872b87c3 100644
--- a/usr.bin/cvs/entries.c
+++ b/usr.bin/cvs/entries.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: entries.c,v 1.52 2005/12/03 15:02:55 joris Exp $ */
+/* $OpenBSD: entries.c,v 1.53 2005/12/10 20:27:45 joris Exp $ */
/*
* Copyright (c) 2004 Jean-Francois Brousseau <jfb@openbsd.org>
* All rights reserved.
@@ -112,29 +112,11 @@ cvs_ent_open(const char *dir, int flags)
return (NULL);
}
- ep = (CVSENTRIES *)malloc(sizeof(CVSENTRIES));
- if (ep == NULL) {
- cvs_log(LP_ERRNO, "failed to allocate Entries data");
- (void)fclose(fp);
- return (NULL);
- }
+ ep = (CVSENTRIES *)xmalloc(sizeof(CVSENTRIES));
memset(ep, 0, sizeof(*ep));
- ep->cef_path = strdup(entpath);
- if (ep->cef_path == NULL) {
- cvs_log(LP_ERRNO, "failed to copy Entries path");
- free(ep);
- (void)fclose(fp);
- return (NULL);
- }
-
- ep->cef_bpath = strdup(bpath);
- if (ep->cef_bpath == NULL) {
- cvs_ent_close(ep);
- (void)fclose(fp);
- return (NULL);
- }
-
+ ep->cef_path = xstrdup(entpath);
+ ep->cef_bpath = xstrdup(bpath);
ep->cef_cur = NULL;
TAILQ_INIT(&(ep->cef_ent));
@@ -224,10 +206,10 @@ cvs_ent_close(CVSENTRIES *ep)
}
if (ep->cef_path != NULL)
- free(ep->cef_path);
+ xfree(ep->cef_path);
if (ep->cef_bpath != NULL)
- free(ep->cef_bpath);
+ xfree(ep->cef_bpath);
while (!TAILQ_EMPTY(&(ep->cef_ent))) {
ent = TAILQ_FIRST(&(ep->cef_ent));
@@ -235,7 +217,7 @@ cvs_ent_close(CVSENTRIES *ep)
cvs_ent_free(ent);
}
- free(ep);
+ xfree(ep);
}
@@ -389,12 +371,7 @@ cvs_ent_parse(const char *entry)
char *fields[CVS_ENTRIES_NFIELDS], *buf, *sp, *dp;
struct cvs_ent *ent;
- buf = strdup(entry);
- if (buf == NULL) {
- cvs_log(LP_ERRNO, "failed to allocate entry copy");
- return (NULL);
- }
-
+ buf = xstrdup(entry);
sp = buf;
i = 0;
do {
@@ -410,11 +387,7 @@ cvs_ent_parse(const char *entry)
return (NULL);
}
- ent = (struct cvs_ent *)malloc(sizeof(*ent));
- if (ent == NULL) {
- cvs_log(LP_ERRNO, "failed to allocate CVS entry");
- return (NULL);
- }
+ ent = (struct cvs_ent *)xmalloc(sizeof(*ent));
memset(ent, 0, sizeof(*ent));
ent->ce_buf = buf;
@@ -472,8 +445,8 @@ cvs_ent_free(struct cvs_ent *ent)
if (ent->ce_rev != NULL)
rcsnum_free(ent->ce_rev);
if (ent->ce_buf != NULL)
- free(ent->ce_buf);
- free(ent);
+ xfree(ent->ce_buf);
+ xfree(ent);
}
/*
diff --git a/usr.bin/cvs/fatal.c b/usr.bin/cvs/fatal.c
new file mode 100644
index 00000000000..40e997a57a7
--- /dev/null
+++ b/usr.bin/cvs/fatal.c
@@ -0,0 +1,41 @@
+/*
+ * Copyright (c) 2002 Markus Friedl. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include <stdarg.h>
+#include <stdlib.h>
+
+#include "cvs.h"
+#include "log.h"
+
+/* Fatal messages. This function never returns. */
+
+void
+fatal(const char *fmt,...)
+{
+ va_list args;
+ va_start(args, fmt);
+ cvs_log(LP_ERR, fmt, args);
+ va_end(args);
+ exit(255);
+}
diff --git a/usr.bin/cvs/file.c b/usr.bin/cvs/file.c
index d699645190e..231dde64606 100644
--- a/usr.bin/cvs/file.c
+++ b/usr.bin/cvs/file.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: file.c,v 1.131 2005/12/04 17:39:02 joris Exp $ */
+/* $OpenBSD: file.c,v 1.132 2005/12/10 20:27:45 joris Exp $ */
/*
* Copyright (c) 2004 Jean-Francois Brousseau <jfb@openbsd.org>
* All rights reserved.
@@ -181,12 +181,7 @@ cvs_file_ignore(const char *pat)
char *cp;
struct cvs_ignpat *ip;
- ip = (struct cvs_ignpat *)malloc(sizeof(*ip));
- if (ip == NULL) {
- cvs_log(LP_ERR, "failed to allocate space for ignore pattern");
- return (-1);
- }
-
+ ip = (struct cvs_ignpat *)xmalloc(sizeof(*ip));
strlcpy(ip->ip_pat, pat, sizeof(ip->ip_pat));
/* check if we will need globbing for that pattern */
@@ -278,12 +273,7 @@ cvs_file_create(CVSFILE *parent, const char *path, u_int type, mode_t mode)
return (NULL);
}
- cfp->cf_repo = strdup(repo);
- if (cfp->cf_repo == NULL) {
- cvs_file_free(cfp);
- return (NULL);
- }
-
+ cfp->cf_repo = xstrdup(repo);
if (((mkdir(path, mode) == -1) && (errno != EEXIST)) ||
(cvs_mkadmin(path, cfp->cf_root->cr_str, cfp->cf_repo,
NULL, NULL, 0) < 0)) {
@@ -405,25 +395,15 @@ cvs_file_getspec(char **fspec, int fsn, int flags, int (*cb)(CVSFILE *, void *),
*/
if (cf->cf_repo != NULL) {
if (cvs_repo_base != NULL)
- free(cvs_repo_base);
- cvs_repo_base = strdup(cf->cf_repo);
- if (cvs_repo_base == NULL) {
- cvs_log(LP_ERRNO, "strdup failed");
- cvs_file_free(cf);
- return (-1);
- }
+ xfree(cvs_repo_base);
+ cvs_repo_base = xstrdup(cf->cf_repo);
}
/*
* This will go away when we have support for multiple Roots.
*/
if (cvs_rootstr == NULL && cf->cf_root != NULL) {
- cvs_rootstr = strdup(cf->cf_root->cr_str);
- if (cvs_rootstr == NULL) {
- cvs_log(LP_ERRNO, "strdup failed");
- cvs_file_free(cf);
- return (-1);
- }
+ cvs_rootstr = xstrdup(cf->cf_root->cr_str);
}
cvs_error = CVS_EX_OK;
@@ -789,14 +769,8 @@ cvs_load_dirinfo(CVSFILE *cf, int flags)
}
if ((stat(pbuf, &st) == 0) && S_ISDIR(st.st_mode)) {
- if (cvs_readrepo(fpath, pbuf, sizeof(pbuf)) == 0) {
- cf->cf_repo = strdup(pbuf);
- if (cf->cf_repo == NULL) {
- cvs_log(LP_ERRNO,
- "failed to dup repository string");
- return (-1);
- }
- }
+ if (cvs_readrepo(fpath, pbuf, sizeof(pbuf)) == 0)
+ cf->cf_repo = xstrdup(pbuf);
} else {
/*
* Fill in the repo path ourselfs.
@@ -807,11 +781,7 @@ cvs_load_dirinfo(CVSFILE *cf, int flags)
if (l == -1 || l >= (int)sizeof(pbuf))
return (-1);
- cf->cf_repo = strdup(pbuf);
- if (cf->cf_repo == NULL) {
- cvs_log(LP_ERRNO, "failed to dup repo string");
- return (-1);
- }
+ cf->cf_repo = xstrdup(pbuf);
} else
cf->cf_repo = NULL;
}
@@ -855,9 +825,8 @@ cvs_file_getdir(CVSFILE *cf, int flags, int (*cb)(CVSFILE *, void *),
(cf->cf_dir != NULL) ? cf->cf_dir : "");
if (ret == -1 || ret >= (int)sizeof(fpath))
return (-1);
- free(cf->cf_dir);
- if ((cf->cf_dir = strdup(fpath)) == NULL)
- return (-1);
+ xfree(cf->cf_dir);
+ cf->cf_dir = xstrdup(fpath);
}
nfiles = ndirs = 0;
@@ -1052,16 +1021,16 @@ cvs_file_free(CVSFILE *cf)
CVSFILE *child;
if (cf->cf_name != NULL)
- free(cf->cf_name);
+ xfree(cf->cf_name);
if (cf->cf_dir != NULL)
- free(cf->cf_dir);
+ xfree(cf->cf_dir);
if (cf->cf_type == DT_DIR) {
if (cf->cf_root != NULL)
cvsroot_remove(cf->cf_root);
if (cf->cf_repo != NULL)
- free(cf->cf_repo);
+ xfree(cf->cf_repo);
while (!SIMPLEQ_EMPTY(&(cf->cf_files))) {
child = SIMPLEQ_FIRST(&(cf->cf_files));
SIMPLEQ_REMOVE_HEAD(&(cf->cf_files), cf_list);
@@ -1069,12 +1038,12 @@ cvs_file_free(CVSFILE *cf)
}
} else {
if (cf->cf_tag != NULL)
- free(cf->cf_tag);
+ xfree(cf->cf_tag);
if (cf->cf_opts != NULL)
- free(cf->cf_opts);
+ xfree(cf->cf_opts);
}
- free(cf);
+ xfree(cf);
}
@@ -1106,7 +1075,7 @@ cvs_file_sort(struct cvs_flist *flp, u_int nfiles)
/* rebuild the list and abort sorting */
while (--i >= 0)
SIMPLEQ_INSERT_HEAD(flp, cfvec[i], cf_list);
- free(cfvec);
+ xfree(cfvec);
return (-1);
}
cfvec[i++] = cf;
@@ -1127,7 +1096,7 @@ cvs_file_sort(struct cvs_flist *flp, u_int nfiles)
for (i = (int)nb - 1; i >= 0; i--)
SIMPLEQ_INSERT_HEAD(flp, cfvec[i], cf_list);
- free(cfvec);
+ xfree(cfvec);
return (0);
}
@@ -1153,11 +1122,7 @@ cvs_file_alloc(const char *path, u_int type)
CVSFILE *cfp;
char *p;
- cfp = (CVSFILE *)malloc(sizeof(*cfp));
- if (cfp == NULL) {
- cvs_log(LP_ERRNO, "failed to allocate CVS file data");
- return (NULL);
- }
+ cfp = (CVSFILE *)xmalloc(sizeof(*cfp));
memset(cfp, 0, sizeof(*cfp));
cfp->cf_type = type;
@@ -1167,24 +1132,12 @@ cvs_file_alloc(const char *path, u_int type)
SIMPLEQ_INIT(&(cfp->cf_files));
}
- cfp->cf_name = strdup(basename(path));
- if (cfp->cf_name == NULL) {
- cvs_log(LP_ERR, "failed to copy file name");
- cvs_file_free(cfp);
- return (NULL);
- }
-
+ cfp->cf_name = xstrdup(basename(path));
if ((p = strrchr(path, '/')) != NULL) {
*p = '\0';
- if (strcmp(path, ".")) {
- cfp->cf_dir = strdup(path);
- if (cfp->cf_dir == NULL) {
- cvs_log(LP_ERR,
- "failed to copy directory");
- cvs_file_free(cfp);
- return (NULL);
- }
- } else
+ if (strcmp(path, "."))
+ cfp->cf_dir = xstrdup(path);
+ else
cfp->cf_dir = NULL;
*p = '/';
} else
@@ -1301,21 +1254,11 @@ cvs_file_lget(const char *path, int flags, CVSFILE *parent, CVSENTRIES *pent,
cfp->cf_lrev = ent->ce_rev;
if (ent->ce_type == CVS_ENT_FILE) {
- if (ent->ce_tag[0] != '\0') {
- cfp->cf_tag = strdup(ent->ce_tag);
- if (cfp->cf_tag == NULL) {
- cvs_file_free(cfp);
- return (NULL);
- }
- }
+ if (ent->ce_tag[0] != '\0')
+ cfp->cf_tag = xstrdup(ent->ce_tag);
- if (ent->ce_opts[0] != '\0') {
- cfp->cf_opts = strdup(ent->ce_opts);
- if (cfp->cf_opts == NULL) {
- cvs_file_free(cfp);
- return (NULL);
- }
- }
+ if (ent->ce_opts[0] != '\0')
+ cfp->cf_opts = xstrdup(ent->ce_opts);
}
}
@@ -1332,26 +1275,18 @@ cvs_file_lget(const char *path, int flags, CVSFILE *parent, CVSENTRIES *pent,
cfp->cf_mode = 0644;
cfp->cf_cvstat = CVS_FST_LOST;
- if ((c = strdup(cfp->cf_dir)) == NULL) {
- cvs_file_free(cfp);
- return (NULL);
- }
-
- free(cfp->cf_dir);
+ c = xstrdup(cfp->cf_dir);
+ xfree(cfp->cf_dir);
if (strcmp(c, root->cr_dir)) {
c += strlen(root->cr_dir) + 1;
- if ((cfp->cf_dir = strdup(c)) == NULL) {
- cvs_file_free(cfp);
- return (NULL);
- }
-
+ cfp->cf_dir = xstrdup(c);
c -= strlen(root->cr_dir) + 1;
} else {
cfp->cf_dir = NULL;
}
- free(c);
+ xfree(c);
}
if ((cfp->cf_repo != NULL) && (cfp->cf_type == DT_DIR) &&
diff --git a/usr.bin/cvs/hist.c b/usr.bin/cvs/hist.c
index 8e9e1909221..475e4471f3a 100644
--- a/usr.bin/cvs/hist.c
+++ b/usr.bin/cvs/hist.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: hist.c,v 1.11 2005/09/05 19:45:42 xsa Exp $ */
+/* $OpenBSD: hist.c,v 1.12 2005/12/10 20:27:45 joris Exp $ */
/*
* Copyright (c) 2004 Jean-Francois Brousseau <jfb@openbsd.org>
* All rights reserved.
@@ -54,20 +54,10 @@ cvs_hist_open(const char *path)
{
CVSHIST *histp;
- histp = (CVSHIST *)malloc(sizeof(*histp));
- if (histp == NULL) {
- cvs_log(LP_ERRNO, "failed to allocate CVS history");
- return (NULL);
- }
+ histp = (CVSHIST *)xmalloc(sizeof(*histp));
memset(histp, 0, sizeof(*histp));
- histp->chf_buf = (char *)malloc((size_t)CVS_HIST_BUFSIZE);
- if (histp->chf_buf == NULL) {
- cvs_log(LP_ERRNO,
- "failed to allocate CVS history parse buffer");
- free(histp);
- return (NULL);
- }
+ histp->chf_buf = (char *)xmalloc((size_t)CVS_HIST_BUFSIZE);
histp->chf_blen = CVS_HIST_BUFSIZE;
histp->chf_off = 0;
@@ -82,8 +72,8 @@ cvs_hist_open(const char *path)
cvs_log(LP_ERRNO,
"failed to open CVS history file `%s'", path);
cvs_nolog = 1;
- free(histp->chf_buf);
- free(histp);
+ xfree(histp->chf_buf);
+ xfree(histp);
return (NULL);
}
@@ -103,8 +93,8 @@ cvs_hist_close(CVSHIST *histp)
{
if (histp->chf_fd >= 0)
(void)close(histp->chf_fd);
- free(histp->chf_buf);
- free(histp);
+ xfree(histp->chf_buf);
+ xfree(histp);
}
diff --git a/usr.bin/cvs/import.c b/usr.bin/cvs/import.c
index 6e3c6a80c4e..87b73444b09 100644
--- a/usr.bin/cvs/import.c
+++ b/usr.bin/cvs/import.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: import.c,v 1.30 2005/12/03 01:02:09 joris Exp $ */
+/* $OpenBSD: import.c,v 1.31 2005/12/10 20:27:45 joris Exp $ */
/*
* Copyright (c) 2004 Joris Vink <joris@openbsd.org>
* All rights reserved.
@@ -100,11 +100,7 @@ cvs_import_init(struct cvs_cmd *cmd, int argc, char **argv, int *arg)
case 'k':
break;
case 'm':
- cvs_msg = strdup(optarg);
- if (cvs_msg == NULL) {
- cvs_log(LP_ERRNO, "failed to copy message");
- return (CVS_EX_DATA);
- }
+ cvs_msg = xstrdup(optarg);
break;
default:
return (CVS_EX_USAGE);
diff --git a/usr.bin/cvs/log.c b/usr.bin/cvs/log.c
index 2b1dcac08c5..86298ff9585 100644
--- a/usr.bin/cvs/log.c
+++ b/usr.bin/cvs/log.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: log.c,v 1.27 2005/10/09 23:59:17 joris Exp $ */
+/* $OpenBSD: log.c,v 1.28 2005/12/10 20:27:45 joris Exp $ */
/*
* Copyright (c) 2004 Jean-Francois Brousseau <jfb@openbsd.org>
* All rights reserved.
@@ -339,7 +339,7 @@ cvs_printf(const char *fmt, ...)
send_m = 1;
dp = sp + 1;
}
- free(nstr);
+ xfree(nstr);
}
} else
#endif
diff --git a/usr.bin/cvs/logmsg.c b/usr.bin/cvs/logmsg.c
index 7a919b91787..1180ede690a 100644
--- a/usr.bin/cvs/logmsg.c
+++ b/usr.bin/cvs/logmsg.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: logmsg.c,v 1.21 2005/08/14 19:49:18 xsa Exp $ */
+/* $OpenBSD: logmsg.c,v 1.22 2005/12/10 20:27:45 joris Exp $ */
/*
* Copyright (c) 2004 Jean-Francois Brousseau <jfb@openbsd.org>
* All rights reserved.
@@ -287,7 +287,7 @@ cvs_logmsg_get(const char *dir, struct cvs_flist *added,
break;
} else if ((buf[0] == '\n') || (buf[0] == 'c')) {
/* empty message */
- msg = strdup("");
+ msg = xstrdup("");
break;
} else if (buf[0] == 'e')
continue;
diff --git a/usr.bin/cvs/proto.c b/usr.bin/cvs/proto.c
index 42f339b5704..329fc557884 100644
--- a/usr.bin/cvs/proto.c
+++ b/usr.bin/cvs/proto.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: proto.c,v 1.79 2005/10/17 16:16:00 moritz Exp $ */
+/* $OpenBSD: proto.c,v 1.80 2005/12/10 20:27:45 joris Exp $ */
/*
* Copyright (c) 2004 Jean-Francois Brousseau <jfb@openbsd.org>
* All rights reserved.
@@ -313,10 +313,10 @@ cvs_connect(struct cvsroot *root)
if (cvs_sendreq(root, CVS_REQ_VALIDRESP, vresp) < 0) {
cvs_log(LP_ERR, "failed to get valid responses");
- free(vresp);
+ xfree(vresp);
return (-1);
}
- free(vresp);
+ xfree(vresp);
if (cvs_sendreq(root, CVS_REQ_VALIDREQ, NULL) < 0) {
cvs_log(LP_ERR, "failed to get valid requests from server");
@@ -459,12 +459,7 @@ cvs_req_getvalid(void)
}
len = cvs_buf_len(buf);
- vrstr = (char *)malloc(len);
- if (vrstr == NULL) {
- cvs_buf_free(buf);
- return (NULL);
- }
-
+ vrstr = (char *)xmalloc(len);
cvs_buf_copy(buf, (size_t)0, vrstr, len);
cvs_buf_free(buf);
@@ -542,12 +537,7 @@ cvs_resp_getvalid(void)
}
len = cvs_buf_len(buf);
- vrstr = (char *)malloc(len);
- if (vrstr == NULL) {
- cvs_buf_free(buf);
- return (NULL);
- }
-
+ vrstr = (char *)xmalloc(len);
cvs_buf_copy(buf, (size_t)0, vrstr, len);
cvs_buf_free(buf);
@@ -1100,15 +1090,13 @@ cvs_initlog(void)
if (env == NULL)
return (0);
- if ((envdup = strdup(env)) == NULL)
- return (-1);
-
+ envdup = xstrdup(env);
if ((s = strchr(envdup, '%')) != NULL)
*s = '\0';
strlcpy(buf, env, sizeof(buf));
strlcpy(rpath, envdup, sizeof(rpath));
- free(envdup);
+ xfree(envdup);
s = buf;
while ((s = strchr(s, '%')) != NULL) {
diff --git a/usr.bin/cvs/rcs.c b/usr.bin/cvs/rcs.c
index d890e732f21..3b5501d3d06 100644
--- a/usr.bin/cvs/rcs.c
+++ b/usr.bin/cvs/rcs.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: rcs.c,v 1.109 2005/12/08 18:56:10 joris Exp $ */
+/* $OpenBSD: rcs.c,v 1.110 2005/12/10 20:27:45 joris Exp $ */
/*
* Copyright (c) 2004 Jean-Francois Brousseau <jfb@openbsd.org>
* All rights reserved.
@@ -331,20 +331,10 @@ rcs_open(const char *path, int flags, ...)
return (NULL);
}
- if ((rfp = (RCSFILE *)malloc(sizeof(*rfp))) == NULL) {
- cvs_log(LP_ERRNO, "failed to allocate RCS file structure");
- rcs_errno = RCS_ERR_ERRNO;
- return (NULL);
- }
+ rfp = (RCSFILE *)xmalloc(sizeof(*rfp));
memset(rfp, 0, sizeof(*rfp));
- if ((rfp->rf_path = strdup(path)) == NULL) {
- rcs_errno = RCS_ERR_ERRNO;
- cvs_log(LP_ERRNO, "failed to duplicate RCS file path");
- free(rfp);
- return (NULL);
- }
-
+ rfp->rf_path = xstrdup(path);
rfp->rf_ref = 1;
rfp->rf_flags = flags | RCS_SLOCK;
rfp->rf_mode = fmode;
@@ -367,11 +357,7 @@ rcs_open(const char *path, int flags, ...)
return (NULL);
}
- rdp->rd_locker = strdup(lkr->rl_name);
- if (rdp->rd_locker == NULL) {
- rcs_close(rfp);
- return (NULL);
- }
+ rdp->rd_locker = xstrdup(lkr->rl_name);
}
return (rfp);
@@ -407,24 +393,24 @@ rcs_close(RCSFILE *rfp)
while (!TAILQ_EMPTY(&(rfp->rf_access))) {
rap = TAILQ_FIRST(&(rfp->rf_access));
TAILQ_REMOVE(&(rfp->rf_access), rap, ra_list);
- free(rap->ra_name);
- free(rap);
+ xfree(rap->ra_name);
+ xfree(rap);
}
while (!TAILQ_EMPTY(&(rfp->rf_symbols))) {
rsp = TAILQ_FIRST(&(rfp->rf_symbols));
TAILQ_REMOVE(&(rfp->rf_symbols), rsp, rs_list);
rcsnum_free(rsp->rs_num);
- free(rsp->rs_name);
- free(rsp);
+ xfree(rsp->rs_name);
+ xfree(rsp);
}
while (!TAILQ_EMPTY(&(rfp->rf_locks))) {
rlp = TAILQ_FIRST(&(rfp->rf_locks));
TAILQ_REMOVE(&(rfp->rf_locks), rlp, rl_list);
rcsnum_free(rlp->rl_num);
- free(rlp->rl_name);
- free(rlp);
+ xfree(rlp->rl_name);
+ xfree(rlp);
}
if (rfp->rf_head != NULL)
@@ -433,14 +419,14 @@ rcs_close(RCSFILE *rfp)
rcsnum_free(rfp->rf_branch);
if (rfp->rf_path != NULL)
- free(rfp->rf_path);
+ xfree(rfp->rf_path);
if (rfp->rf_comment != NULL)
- free(rfp->rf_comment);
+ xfree(rfp->rf_comment);
if (rfp->rf_expand != NULL)
- free(rfp->rf_expand);
+ xfree(rfp->rf_expand);
if (rfp->rf_desc != NULL)
- free(rfp->rf_desc);
- free(rfp);
+ xfree(rfp->rf_desc);
+ xfree(rfp);
}
/*
@@ -616,13 +602,7 @@ rcs_write(RCSFILE *rfp)
return (-1);
}
- if ((bp = malloc(MAXBSIZE)) == NULL) {
- cvs_log(LP_ERRNO, "failed to allocate memory");
- close(from_fd);
- close(to_fd);
- return (-1);
- }
-
+ bp = xmalloc(MAXBSIZE);
while ((nread = read(from_fd, bp, MAXBSIZE)) > 0) {
if (write(to_fd, bp, nread) != nread)
goto err;
@@ -635,13 +615,13 @@ err: if (unlink(rfp->rf_path) == -1)
rfp->rf_path);
close(from_fd);
close(to_fd);
- free(bp);
+ xfree(bp);
return (-1);
}
close(from_fd);
close(to_fd);
- free(bp);
+ xfree(bp);
if (unlink(fn) == -1) {
cvs_log(LP_ERRNO,
@@ -758,20 +738,8 @@ rcs_access_add(RCSFILE *file, const char *login)
}
}
- ap = (struct rcs_access *)malloc(sizeof(*ap));
- if (ap == NULL) {
- rcs_errno = RCS_ERR_ERRNO;
- cvs_log(LP_ERRNO, "failed to allocate RCS access entry");
- return (-1);
- }
-
- ap->ra_name = strdup(login);
- if (ap->ra_name == NULL) {
- cvs_log(LP_ERRNO, "failed to duplicate user name");
- free(ap);
- return (-1);
- }
-
+ ap = (struct rcs_access *)xmalloc(sizeof(*ap));
+ ap->ra_name = xstrdup(login);
TAILQ_INSERT_TAIL(&(file->rf_access), ap, ra_list);
/* not synced anymore */
@@ -801,8 +769,8 @@ rcs_access_remove(RCSFILE *file, const char *login)
}
TAILQ_REMOVE(&(file->rf_access), ap, ra_list);
- free(ap->ra_name);
- free(ap);
+ xfree(ap->ra_name);
+ xfree(ap);
/* not synced anymore */
file->rf_flags &= ~RCS_SYNCED;
@@ -834,22 +802,11 @@ rcs_sym_add(RCSFILE *rfp, const char *sym, RCSNUM *snum)
}
}
- if ((symp = (struct rcs_sym *)malloc(sizeof(*symp))) == NULL) {
- rcs_errno = RCS_ERR_ERRNO;
- cvs_log(LP_ERRNO, "failed to allocate RCS symbol");
- return (-1);
- }
-
- if ((symp->rs_name = strdup(sym)) == NULL) {
- rcs_errno = RCS_ERR_ERRNO;
- cvs_log(LP_ERRNO, "failed to duplicate symbol");
- free(symp);
- return (-1);
- }
-
+ symp = (struct rcs_sym *)xmalloc(sizeof(*symp));
+ symp->rs_name = xstrdup(sym);
if ((symp->rs_num = rcsnum_alloc()) == NULL) {
- free(symp->rs_name);
- free(symp);
+ xfree(symp->rs_name);
+ xfree(symp);
return (-1);
}
rcsnum_cpy(snum, symp->rs_num, 0);
@@ -889,9 +846,9 @@ rcs_sym_remove(RCSFILE *file, const char *sym)
}
TAILQ_REMOVE(&(file->rf_symbols), symp, rs_list);
- free(symp->rs_name);
+ xfree(symp->rs_name);
rcsnum_free(symp->rs_num);
- free(symp);
+ xfree(symp);
/* not synced anymore */
file->rf_flags &= ~RCS_SYNCED;
@@ -1016,22 +973,11 @@ rcs_lock_add(RCSFILE *file, const char *user, RCSNUM *rev)
}
}
- if ((lkp = (struct rcs_lock *)malloc(sizeof(*lkp))) == NULL) {
- rcs_errno = RCS_ERR_ERRNO;
- cvs_log(LP_ERRNO, "failed to allocate RCS lock");
- return (-1);
- }
-
- lkp->rl_name = strdup(user);
- if (lkp->rl_name == NULL) {
- cvs_log(LP_ERRNO, "failed to duplicate user name");
- free(lkp);
- return (-1);
- }
-
+ lkp = (struct rcs_lock *)xmalloc(sizeof(*lkp));
+ lkp->rl_name = xstrdup(user);
if ((lkp->rl_num = rcsnum_alloc()) == NULL) {
- free(lkp->rl_name);
- free(lkp);
+ xfree(lkp->rl_name);
+ xfree(lkp);
return (-1);
}
rcsnum_cpy(rev, lkp->rl_num, 0);
@@ -1070,8 +1016,8 @@ rcs_lock_remove(RCSFILE *file, const char *user, RCSNUM *rev)
TAILQ_REMOVE(&(file->rf_locks), lkp, rl_list);
rcsnum_free(lkp->rl_num);
- free(lkp->rl_name);
- free(lkp);
+ xfree(lkp->rl_name);
+ xfree(lkp);
/* not synced anymore */
file->rf_flags &= ~RCS_SYNCED;
@@ -1100,11 +1046,9 @@ rcs_desc_set(RCSFILE *file, const char *desc)
{
char *tmp;
- if ((tmp = strdup(desc)) == NULL)
- return (-1);
-
+ tmp = xstrdup(desc);
if (file->rf_desc != NULL)
- free(file->rf_desc);
+ xfree(file->rf_desc);
file->rf_desc = tmp;
file->rf_flags &= ~RCS_SYNCED;
@@ -1157,11 +1101,9 @@ rcs_comment_set(RCSFILE *file, const char *comment)
{
char *tmp;
- if ((tmp = strdup(comment)) == NULL)
- return (-1);
-
+ tmp = xstrdup(comment);
if (file->rf_comment != NULL)
- free(file->rf_comment);
+ xfree(file->rf_comment);
file->rf_comment = tmp;
file->rf_flags &= ~RCS_SYNCED;
@@ -1344,7 +1286,7 @@ rcs_getrev(RCSFILE *rfp, RCSNUM *frev)
bp = cvs_buf_release(rbuf);
rbuf = cvs_patchfile((char *)bp, (char *)rdp->rd_text,
rcs_patch_lines);
- free(bp);
+ xfree(bp);
if (rbuf == NULL)
break;
} while (rcsnum_cmp(crev, rev, 0) != 0);
@@ -1381,7 +1323,7 @@ rcs_getrev(RCSFILE *rfp, RCSNUM *frev)
}
cvs_freelines(lines);
}
- free(bp);
+ xfree(bp);
}
return (dbuf);
@@ -1448,11 +1390,7 @@ rcs_rev_add(RCSFILE *rf, RCSNUM *rev, const char *msg, time_t date,
return (-1);
}
- if ((rdp = (struct rcs_delta *)malloc(sizeof(*rdp))) == NULL) {
- rcs_errno = RCS_ERR_ERRNO;
- rcsnum_free(old);
- return (-1);
- }
+ rdp = (struct rcs_delta *)xmalloc(sizeof(*rdp));
memset(rdp, 0, sizeof(*rdp));
TAILQ_INIT(&(rdp->rd_branches));
@@ -1479,24 +1417,9 @@ rcs_rev_add(RCSFILE *rf, RCSNUM *rev, const char *msg, time_t date,
if (username == NULL)
username = pw->pw_name;
- if ((rdp->rd_author = strdup(username)) == NULL) {
- rcs_freedelta(rdp);
- rcsnum_free(old);
- return (-1);
- }
-
- if ((rdp->rd_state = strdup(RCS_STATE_EXP)) == NULL) {
- rcs_freedelta(rdp);
- rcsnum_free(old);
- return (-1);
- }
-
- if ((rdp->rd_log = strdup(msg)) == NULL) {
- rcs_errno = RCS_ERR_ERRNO;
- rcs_freedelta(rdp);
- rcsnum_free(old);
- return (-1);
- }
+ rdp->rd_author = xstrdup(username);
+ rdp->rd_state = xstrdup(RCS_STATE_EXP);
+ rdp->rd_log = xstrdup(msg);
if (date != (time_t)(-1))
now = date;
@@ -1608,12 +1531,7 @@ rcs_kwexp_set(RCSFILE *file, int mode)
buf[i++] = 'l';
}
- if ((tmp = strdup(buf)) == NULL) {
- cvs_log(LP_ERRNO, "%s: failed to copy expansion mode",
- file->rf_path);
- return (-1);
- }
-
+ tmp = xstrdup(buf);
if (file->rf_expand != NULL)
free(file->rf_expand);
file->rf_expand = tmp;
@@ -1719,11 +1637,7 @@ rcs_parse(RCSFILE *rfp)
if (rfp->rf_flags & RCS_PARSED)
return (0);
- if ((pdp = (struct rcs_pdata *)malloc(sizeof(*pdp))) == NULL) {
- rcs_errno = RCS_ERR_ERRNO;
- cvs_log(LP_ERRNO, "failed to allocate RCS parser data");
- return (-1);
- }
+ pdp = (struct rcs_pdata *)xmalloc(sizeof(*pdp));
memset(pdp, 0, sizeof(*pdp));
pdp->rp_lines = 0;
@@ -1737,13 +1651,7 @@ rcs_parse(RCSFILE *rfp)
return (-1);
}
- pdp->rp_buf = (char *)malloc((size_t)RCS_BUFSIZE);
- if (pdp->rp_buf == NULL) {
- rcs_errno = RCS_ERR_ERRNO;
- cvs_log(LP_ERRNO, "failed to allocate RCS parser buffer");
- rcs_freepdata(pdp);
- return (-1);
- }
+ pdp->rp_buf = (char *)xmalloc((size_t)RCS_BUFSIZE);
pdp->rp_blen = RCS_BUFSIZE;
pdp->rp_bufend = pdp->rp_buf + pdp->rp_blen - 1;
@@ -1784,13 +1692,7 @@ rcs_parse(RCSFILE *rfp)
return (-1);
}
- rfp->rf_desc = strdup(RCS_TOKSTR(rfp));
- if (rfp->rf_desc == NULL) {
- cvs_log(LP_ERRNO, "failed to duplicate rcs token");
- rcs_freepdata(pdp);
- return (-1);
- }
-
+ rfp->rf_desc = xstrdup(RCS_TOKSTR(rfp));
for (;;) {
ret = rcs_parse_deltatext(rfp);
if (ret == 0)
@@ -1886,19 +1788,9 @@ rcs_parse_admin(RCSFILE *rfp)
rfp->rf_branch) < 0)
return (-1);
} else if (tok == RCS_TOK_COMMENT) {
- rfp->rf_comment = strdup(RCS_TOKSTR(rfp));
- if (rfp->rf_comment == NULL) {
- cvs_log(LP_ERRNO,
- "failed to duplicate rcs token");
- return (-1);
- }
+ rfp->rf_comment = xstrdup(RCS_TOKSTR(rfp));
} else if (tok == RCS_TOK_EXPAND) {
- rfp->rf_expand = strdup(RCS_TOKSTR(rfp));
- if (rfp->rf_expand == NULL) {
- cvs_log(LP_ERRNO,
- "failed to duplicate rcs token");
- return (-1);
- }
+ rfp->rf_expand = xstrdup(RCS_TOKSTR(rfp));
}
/* now get the expected semi-colon */
@@ -1953,12 +1845,7 @@ rcs_parse_delta(RCSFILE *rfp)
struct rcs_delta *rdp;
struct rcs_key *rk;
- rdp = (struct rcs_delta *)malloc(sizeof(*rdp));
- if (rdp == NULL) {
- rcs_errno = RCS_ERR_ERRNO;
- cvs_log(LP_ERRNO, "failed to allocate RCS delta structure");
- return (-1);
- }
+ rdp = (struct rcs_delta *)xmalloc(sizeof(*rdp));
memset(rdp, 0, sizeof(*rdp));
rdp->rd_num = rcsnum_alloc();
@@ -2044,15 +1931,8 @@ rcs_parse_delta(RCSFILE *rfp)
}
if (tokstr != NULL)
- free(tokstr);
- tokstr = strdup(RCS_TOKSTR(rfp));
- if (tokstr == NULL) {
- cvs_log(LP_ERRNO,
- "failed to duplicate rcs token");
- rcs_freedelta(rdp);
- return (-1);
- }
-
+ xfree(tokstr);
+ tokstr = xstrdup(RCS_TOKSTR(rfp));
/* now get the expected semi-colon */
ntok = rcs_gettok(rfp);
if (ntok != RCS_TOK_SCOLON) {
@@ -2060,14 +1940,14 @@ rcs_parse_delta(RCSFILE *rfp)
cvs_log(LP_ERR,
"missing semi-colon after RCS `%s' key",
rk->rk_str);
- free(tokstr);
+ xfree(tokstr);
rcs_freedelta(rdp);
return (-1);
}
if (tok == RCS_TOK_DATE) {
if ((datenum = rcsnum_parse(tokstr)) == NULL) {
- free(tokstr);
+ xfree(tokstr);
rcs_freedelta(rdp);
return (-1);
}
@@ -2078,7 +1958,7 @@ rcs_parse_delta(RCSFILE *rfp)
"fields",
(datenum->rn_len > 6) ? "too many" :
"missing");
- free(tokstr);
+ xfree(tokstr);
rcs_freedelta(rdp);
rcsnum_free(datenum);
return (-1);
@@ -2119,7 +1999,7 @@ rcs_parse_delta(RCSFILE *rfp)
}
if (tokstr != NULL)
- free(tokstr);
+ xfree(tokstr);
TAILQ_INSERT_TAIL(&(rfp->rf_delta), rdp, rd_list);
rfp->rf_ndelta++;
@@ -2186,12 +2066,7 @@ rcs_parse_deltatext(RCSFILE *rfp)
RCS_TOKSTR(rfp));
return (-1);
}
- rdp->rd_log = strdup(RCS_TOKSTR(rfp));
- if (rdp->rd_log == NULL) {
- cvs_log(LP_ERRNO, "failed to copy RCS deltatext log");
- return (-1);
- }
-
+ rdp->rd_log = xstrdup(RCS_TOKSTR(rfp));
tok = rcs_gettok(rfp);
if (tok != RCS_TOK_TEXT) {
rcs_errno = RCS_ERR_PARSE;
@@ -2208,11 +2083,7 @@ rcs_parse_deltatext(RCSFILE *rfp)
return (-1);
}
- rdp->rd_text = (u_char *)malloc(RCS_TOKLEN(rfp) + 1);
- if (rdp->rd_text == NULL) {
- cvs_log(LP_ERRNO, "failed to copy RCS delta text");
- return (-1);
- }
+ rdp->rd_text = (u_char *)xmalloc(RCS_TOKLEN(rfp) + 1);
strlcpy(rdp->rd_text, RCS_TOKSTR(rfp), (RCS_TOKLEN(rfp) + 1));
rdp->rd_tlen = RCS_TOKLEN(rfp);
@@ -2269,24 +2140,13 @@ rcs_parse_symbols(RCSFILE *rfp)
return (-1);
}
- symp = (struct rcs_sym *)malloc(sizeof(*symp));
- if (symp == NULL) {
- rcs_errno = RCS_ERR_ERRNO;
- cvs_log(LP_ERRNO, "failed to allocate RCS symbol");
- return (-1);
- }
- symp->rs_name = strdup(RCS_TOKSTR(rfp));
- if (symp->rs_name == NULL) {
- cvs_log(LP_ERRNO, "failed to duplicate rcs token");
- free(symp);
- return (-1);
- }
-
+ symp = (struct rcs_sym *)xmalloc(sizeof(*symp));
+ symp->rs_name = xstrdup(RCS_TOKSTR(rfp));
symp->rs_num = rcsnum_alloc();
if (symp->rs_num == NULL) {
cvs_log(LP_ERRNO, "failed to allocate rcsnum info");
- free(symp->rs_name);
- free(symp);
+ xfree(symp->rs_name);
+ xfree(symp);
return (-1);
}
@@ -2296,8 +2156,8 @@ rcs_parse_symbols(RCSFILE *rfp)
cvs_log(LP_ERR, "unexpected token `%s' in symbol list",
RCS_TOKSTR(rfp));
rcsnum_free(symp->rs_num);
- free(symp->rs_name);
- free(symp);
+ xfree(symp->rs_name);
+ xfree(symp);
return (-1);
}
@@ -2307,8 +2167,8 @@ rcs_parse_symbols(RCSFILE *rfp)
cvs_log(LP_ERR, "unexpected token `%s' in symbol list",
RCS_TOKSTR(rfp));
rcsnum_free(symp->rs_num);
- free(symp->rs_name);
- free(symp);
+ xfree(symp->rs_name);
+ xfree(symp);
return (-1);
}
@@ -2316,8 +2176,8 @@ rcs_parse_symbols(RCSFILE *rfp)
cvs_log(LP_ERR, "failed to parse RCS NUM `%s'",
RCS_TOKSTR(rfp));
rcsnum_free(symp->rs_num);
- free(symp->rs_name);
- free(symp);
+ xfree(symp->rs_name);
+ xfree(symp);
return (-1);
}
@@ -2351,22 +2211,12 @@ rcs_parse_locks(RCSFILE *rfp)
return (-1);
}
- lkp = (struct rcs_lock *)malloc(sizeof(*lkp));
- if (lkp == NULL) {
- cvs_log(LP_ERRNO, "failed to allocate RCS lock");
- return (-1);
- }
-
- if ((lkp->rl_name = strdup(RCS_TOKSTR(rfp))) == NULL) {
- cvs_log(LP_ERR, "failed to save locking user");
- free(lkp);
- return (-1);
- }
-
+ lkp = (struct rcs_lock *)xmalloc(sizeof(*lkp));
+ lkp->rl_name = xstrdup(RCS_TOKSTR(rfp));
lkp->rl_num = rcsnum_alloc();
if (lkp->rl_num == NULL) {
- free(lkp->rl_name);
- free(lkp);
+ xfree(lkp->rl_name);
+ xfree(lkp);
return (-1);
}
@@ -2376,8 +2226,8 @@ rcs_parse_locks(RCSFILE *rfp)
cvs_log(LP_ERR, "unexpected token `%s' in symbol list",
RCS_TOKSTR(rfp));
rcsnum_free(lkp->rl_num);
- free(lkp->rl_name);
- free(lkp);
+ xfree(lkp->rl_name);
+ xfree(lkp);
return (-1);
}
@@ -2387,8 +2237,8 @@ rcs_parse_locks(RCSFILE *rfp)
cvs_log(LP_ERR, "unexpected token `%s' in symbol list",
RCS_TOKSTR(rfp));
rcsnum_free(lkp->rl_num);
- free(lkp->rl_name);
- free(lkp);
+ xfree(lkp->rl_name);
+ xfree(lkp);
return (-1);
}
@@ -2396,8 +2246,8 @@ rcs_parse_locks(RCSFILE *rfp)
cvs_log(LP_ERR, "failed to parse RCS NUM `%s'",
RCS_TOKSTR(rfp));
rcsnum_free(lkp->rl_num);
- free(lkp->rl_name);
- free(lkp);
+ xfree(lkp->rl_name);
+ xfree(lkp);
return (-1);
}
@@ -2448,15 +2298,10 @@ rcs_parse_branches(RCSFILE *rfp, struct rcs_delta *rdp)
return (-1);
}
- brp = (struct rcs_branch *)malloc(sizeof(*brp));
- if (brp == NULL) {
- rcs_errno = RCS_ERR_ERRNO;
- cvs_log(LP_ERRNO, "failed to allocate RCS branch");
- return (-1);
- }
+ brp = (struct rcs_branch *)xmalloc(sizeof(*brp));
brp->rb_num = rcsnum_parse(RCS_TOKSTR(rfp));
if (brp->rb_num == NULL) {
- free(brp);
+ xfree(brp);
return (-1);
}
@@ -2483,20 +2328,20 @@ rcs_freedelta(struct rcs_delta *rdp)
rcsnum_free(rdp->rd_next);
if (rdp->rd_author != NULL)
- free(rdp->rd_author);
+ xfree(rdp->rd_author);
if (rdp->rd_locker != NULL)
- free(rdp->rd_locker);
+ xfree(rdp->rd_locker);
if (rdp->rd_state != NULL)
- free(rdp->rd_state);
+ xfree(rdp->rd_state);
if (rdp->rd_log != NULL)
- free(rdp->rd_log);
+ xfree(rdp->rd_log);
if (rdp->rd_text != NULL)
- free(rdp->rd_text);
+ xfree(rdp->rd_text);
while ((rb = TAILQ_FIRST(&(rdp->rd_branches))) != NULL) {
TAILQ_REMOVE(&(rdp->rd_branches), rb, rb_list);
rcsnum_free(rb->rb_num);
- free(rb);
+ xfree(rb);
}
while ((crdp = TAILQ_FIRST(&(rdp->rd_snodes))) != NULL) {
@@ -2504,7 +2349,7 @@ rcs_freedelta(struct rcs_delta *rdp)
rcs_freedelta(crdp);
}
- free(rdp);
+ xfree(rdp);
}
/*
@@ -2518,8 +2363,8 @@ rcs_freepdata(struct rcs_pdata *pd)
if (pd->rp_file != NULL)
(void)fclose(pd->rp_file);
if (pd->rp_buf != NULL)
- free(pd->rp_buf);
- free(pd);
+ xfree(pd->rp_buf);
+ xfree(pd);
}
/*
@@ -2901,13 +2746,11 @@ rcs_deltatext_set(RCSFILE *rfp, RCSNUM *rev, const char *dtext)
return (-1);
if (rdp->rd_text != NULL)
- free(rdp->rd_text);
+ xfree(rdp->rd_text);
len = strlen(dtext);
if (len != 0) {
- if ((rdp->rd_text = (u_char *)malloc(len)) == NULL)
- return (-1);
-
+ rdp->rd_text = (u_char *)xmalloc(len);
rdp->rd_tlen = len - 1;
strlcpy(rdp->rd_text, dtext, len);
} else {
@@ -2935,11 +2778,9 @@ rcs_rev_setlog(RCSFILE *rfp, RCSNUM *rev, const char *logtext)
return (-1);
if (rdp->rd_log != NULL)
- free(rdp->rd_log);
-
- if ((rdp->rd_log = strdup(logtext)) == NULL)
- return (-1);
+ xfree(rdp->rd_log);
+ rdp->rd_log = xstrdup(logtext);
rfp->rf_flags &= ~RCS_SYNCED;
return (0);
}
@@ -2977,10 +2818,9 @@ rcs_state_set(RCSFILE *rfp, RCSNUM *rev, const char *state)
return (-1);
if (rdp->rd_state != NULL)
- free(rdp->rd_state);
+ xfree(rdp->rd_state);
- if ((rdp->rd_state = strdup(state)) == NULL)
- return (-1);
+ rdp->rd_state = xstrdup(state);
rfp->rf_flags &= ~RCS_SYNCED;
@@ -3253,7 +3093,7 @@ out:
if (bp != NULL)
cvs_buf_free(bp);
if (content != NULL)
- free(content);
+ xfree(content);
return (ret);
}
diff --git a/usr.bin/cvs/rcsnum.c b/usr.bin/cvs/rcsnum.c
index 5bcd5cac6fd..0780334aeb1 100644
--- a/usr.bin/cvs/rcsnum.c
+++ b/usr.bin/cvs/rcsnum.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: rcsnum.c,v 1.17 2005/10/10 13:06:24 joris Exp $ */
+/* $OpenBSD: rcsnum.c,v 1.18 2005/12/10 20:27:45 joris Exp $ */
/*
* Copyright (c) 2004 Jean-Francois Brousseau <jfb@openbsd.org>
* All rights reserved.
@@ -50,11 +50,7 @@ rcsnum_alloc(void)
{
RCSNUM *rnp;
- rnp = (RCSNUM *)malloc(sizeof(*rnp));
- if (rnp == NULL) {
- rcs_errno = RCS_ERR_ERRNO;
- return (NULL);
- }
+ rnp = (RCSNUM *)xmalloc(sizeof(*rnp));
rnp->rn_len = 0;
rnp->rn_id = NULL;
@@ -94,8 +90,8 @@ void
rcsnum_free(RCSNUM *rn)
{
if (rn->rn_id != NULL)
- free(rn->rn_id);
- free(rn);
+ xfree(rn->rn_id);
+ xfree(rn);
}
/*
@@ -145,12 +141,7 @@ rcsnum_cpy(const RCSNUM *nsrc, RCSNUM *ndst, u_int depth)
len = depth;
sz = len * sizeof(u_int16_t);
- tmp = realloc(ndst->rn_id, sz);
- if (tmp == NULL) {
- rcs_errno = RCS_ERR_ERRNO;
- return (-1);
- }
-
+ tmp = xrealloc(ndst->rn_id, sz);
ndst->rn_id = (u_int16_t *)tmp;
ndst->rn_len = len;
memcpy(ndst->rn_id, nsrc->rn_id, sz);
@@ -210,13 +201,8 @@ rcsnum_aton(const char *str, char **ep, RCSNUM *nump)
void *tmp;
char *s;
- if (nump->rn_id == NULL) {
- nump->rn_id = (u_int16_t *)malloc(sizeof(u_int16_t));
- if (nump->rn_id == NULL) {
- rcs_errno = RCS_ERR_ERRNO;
- return (-1);
- }
- }
+ if (nump->rn_id == NULL)
+ nump->rn_id = (u_int16_t *)xmalloc(sizeof(u_int16_t));
nump->rn_len = 0;
nump->rn_id[0] = 0;
@@ -232,10 +218,8 @@ rcsnum_aton(const char *str, char **ep, RCSNUM *nump)
}
nump->rn_len++;
- tmp = realloc(nump->rn_id,
+ tmp = xrealloc(nump->rn_id,
(nump->rn_len + 1) * sizeof(u_int16_t));
- if (tmp == NULL)
- goto rcsnum_aton_failed;
nump->rn_id = (u_int16_t *)tmp;
nump->rn_id[nump->rn_len] = 0;
continue;
@@ -306,7 +290,7 @@ rcsnum_aton(const char *str, char **ep, RCSNUM *nump)
rcsnum_aton_failed:
nump->rn_len = 0;
- free(nump->rn_id);
+ xfree(nump->rn_id);
nump->rn_id = NULL;
return (-1);
}
@@ -401,12 +385,7 @@ rcsnum_setsize(RCSNUM *num, u_int len)
{
void *tmp;
- tmp = realloc(num->rn_id, len * sizeof(u_int16_t));
- if (tmp == NULL) {
- rcs_errno = RCS_ERR_ERRNO;
- return (-1);
- }
-
+ tmp = xrealloc(num->rn_id, len * sizeof(u_int16_t));
num->rn_id = (u_int16_t *)tmp;
num->rn_len = len;
return (0);
diff --git a/usr.bin/cvs/req.c b/usr.bin/cvs/req.c
index 965982f7fa8..749143dfd04 100644
--- a/usr.bin/cvs/req.c
+++ b/usr.bin/cvs/req.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: req.c,v 1.33 2005/12/03 20:27:35 joris Exp $ */
+/* $OpenBSD: req.c,v 1.34 2005/12/10 20:27:45 joris Exp $ */
/*
* Copyright (c) 2004 Jean-Francois Brousseau <jfb@openbsd.org>
* All rights reserved.
@@ -213,7 +213,7 @@ cvs_req_root(int reqid, char *line)
return (-1);
}
- cvs_req_rootpath = strdup(line);
+ cvs_req_rootpath = xstrdup(line);
if (cvs_req_rootpath == NULL) {
cvs_log(LP_ERRNO, "failed to copy Root path");
return (-1);
@@ -280,9 +280,9 @@ cvs_req_directory(int reqid, char *line)
STRIP_SLASH(rdir);
if (cvs_req_currentdir != NULL)
- free(cvs_req_currentdir);
+ xfree(cvs_req_currentdir);
- cvs_req_currentdir = strdup(rdir);
+ cvs_req_currentdir = xstrdup(rdir);
if (cvs_req_currentdir == NULL) {
cvs_log(LP_ERR, "failed to duplicate directory");
return (-1);
@@ -309,7 +309,7 @@ cvs_req_directory(int reqid, char *line)
} else
s = cvs_req_currentdir;
- if ((repo = strdup(s)) == NULL) {
+ if ((repo = xstrdup(s)) == NULL) {
cvs_log(LP_ERR, "failed to save repository path");
return (-1);
}
@@ -322,7 +322,7 @@ cvs_req_directory(int reqid, char *line)
s = repo + strlen(repo) - strlen(line) - 1;
if (*s != '/') {
cvs_log(LP_ERR, "malformed directory");
- free(repo);
+ xfree(repo);
return (-1);
}
@@ -337,9 +337,9 @@ cvs_req_directory(int reqid, char *line)
if ((p = strchr(repo, '/')) != NULL)
*p = '\0';
- if ((cvs_req_modulename = strdup(repo)) == NULL) {
+ if ((cvs_req_modulename = xstrdup(repo)) == NULL) {
cvs_log(LP_ERR, "failed to save modulename");
- free(repo);
+ xfree(repo);
return (-1);
}
@@ -353,7 +353,7 @@ cvs_req_directory(int reqid, char *line)
if (cvs_mkadmin(cvs_server_tmpdir, cvs_rootstr, repo,
NULL, NULL, 0) < 0) {
cvs_log(LP_ERR, "failed to create admin files");
- free(repo);
+ xfree(repo);
return (-1);
}
}
@@ -362,7 +362,7 @@ cvs_req_directory(int reqid, char *line)
* create the directory plus the administrative files.
*/
if (cvs_create_dir(line, 1, cvs_rootstr, repo) < 0) {
- free(repo);
+ xfree(repo);
return (-1);
}
@@ -375,11 +375,11 @@ cvs_req_directory(int reqid, char *line)
cvs_req_entf = cvs_ent_open(".", O_RDWR);
if (cvs_req_entf == NULL) {
cvs_log(LP_ERR, "failed to open Entry file for %s", line);
- free(repo);
+ xfree(repo);
return (-1);
}
- free(repo);
+ xfree(repo);
return (0);
}
@@ -513,7 +513,7 @@ cvs_req_set(int reqid, char *line)
{
char *cp, *lp;
- if ((lp = strdup(line)) == NULL) {
+ if ((lp = xstrdup(line)) == NULL) {
cvs_log(LP_ERRNO, "failed to copy Set argument");
return (-1);
}
@@ -521,17 +521,17 @@ cvs_req_set(int reqid, char *line)
if ((cp = strchr(lp, '=')) == NULL) {
cvs_log(LP_ERR, "error in Set request "
"(no = in variable assignment)");
- free(lp);
+ xfree(lp);
return (-1);
}
*(cp++) = '\0';
if (cvs_var_set(lp, cp) < 0) {
- free(lp);
+ xfree(lp);
return (-1);
}
- free(lp);
+ xfree(lp);
return (0);
}
@@ -548,7 +548,7 @@ cvs_req_argument(int reqid, char *line)
}
if (reqid == CVS_REQ_ARGUMENT) {
- cvs_req_args[cvs_req_nargs] = strdup(line);
+ cvs_req_args[cvs_req_nargs] = xstrdup(line);
if (cvs_req_args[cvs_req_nargs] == NULL) {
cvs_log(LP_ERRNO, "failed to copy argument");
return (-1);
@@ -565,7 +565,7 @@ cvs_req_argument(int reqid, char *line)
"failed to append to argument");
return (-1);
}
- free(cvs_req_args[cvs_req_nargs - 1]);
+ xfree(cvs_req_args[cvs_req_nargs - 1]);
cvs_req_args[cvs_req_nargs - 1] = nap;
}
}
diff --git a/usr.bin/cvs/resp.c b/usr.bin/cvs/resp.c
index af9c683c929..713347d12ed 100644
--- a/usr.bin/cvs/resp.c
+++ b/usr.bin/cvs/resp.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: resp.c,v 1.63 2005/12/03 01:02:09 joris Exp $ */
+/* $OpenBSD: resp.c,v 1.64 2005/12/10 20:27:45 joris Exp $ */
/*
* Copyright (c) 2004 Jean-Francois Brousseau <jfb@openbsd.org>
* All rights reserved.
@@ -228,7 +228,7 @@ cvs_resp_m(struct cvsroot *root, int type, char *line)
* remote server's version string.
*/
cvs_version_sent = 0;
- root->cr_version = strdup(line);
+ root->cr_version = xstrdup(line);
return (0);
}
stream = stdout;
@@ -243,9 +243,7 @@ cvs_resp_m(struct cvsroot *root, int type, char *line)
"MT scope stack has reached max depth");
return (-1);
}
- cvs_mt_stack[cvs_mtstk_depth] = strdup(line + 1);
- if (cvs_mt_stack[cvs_mtstk_depth] == NULL)
- return (-1);
+ cvs_mt_stack[cvs_mtstk_depth] = xstrdup(line + 1);
cvs_mtstk_depth++;
} else if (*line == '-') {
if (cvs_mtstk_depth == 0) {
@@ -256,7 +254,7 @@ cvs_resp_m(struct cvsroot *root, int type, char *line)
cvs_log(LP_ERR, "mismatch in MT scope stack");
return (-1);
}
- free(cvs_mt_stack[cvs_mtstk_depth--]);
+ xfree(cvs_mt_stack[cvs_mtstk_depth--]);
} else {
if (strcmp(line, "newline") == 0)
putc('\n', stdout);
@@ -550,14 +548,10 @@ cvs_resp_cksum(struct cvsroot *root, int type, char *line)
{
if (cvs_fcksum != NULL) {
cvs_log(LP_WARN, "unused checksum");
- free(cvs_fcksum);
+ xfree(cvs_fcksum);
}
- cvs_fcksum = strdup(line);
- if (cvs_fcksum == NULL) {
- cvs_log(LP_ERRNO, "failed to copy checksum string");
- return (-1);
- }
+ cvs_fcksum = xstrdup(line);
return (0);
}
@@ -716,7 +710,7 @@ cvs_resp_updated(struct cvsroot *root, int type, char *line)
ret = -1;
}
- free(cvs_fcksum);
+ xfree(cvs_fcksum);
cvs_fcksum = NULL;
}
@@ -854,7 +848,7 @@ cvs_resp_rcsdiff(struct cvsroot *root, int type, char *line)
(void)unlink(file);
}
- free(cvs_fcksum);
+ xfree(cvs_fcksum);
cvs_fcksum = NULL;
}
diff --git a/usr.bin/cvs/root.c b/usr.bin/cvs/root.c
index 0b3505cf0cd..0feff924e95 100644
--- a/usr.bin/cvs/root.c
+++ b/usr.bin/cvs/root.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: root.c,v 1.25 2005/09/11 14:16:48 joris Exp $ */
+/* $OpenBSD: root.c,v 1.26 2005/12/10 20:27:45 joris Exp $ */
/*
* Copyright (c) 2004 Jean-Francois Brousseau <jfb@openbsd.org>
* All rights reserved.
@@ -98,11 +98,7 @@ cvsroot_parse(const char *str)
}
}
- root = (struct cvsroot *)malloc(sizeof(*root));
- if (root == NULL) {
- cvs_log(LP_ERRNO, "failed to allocate CVS root data");
- return (NULL);
- }
+ root = (struct cvsroot *)xmalloc(sizeof(*root));
memset(root, 0, sizeof(*root));
root->cr_ref = 1;
root->cr_method = CVS_METHOD_NONE;
@@ -112,17 +108,8 @@ cvsroot_parse(const char *str)
CVS_SETVR(root, CVS_REQ_VALIDREQ);
CVS_SETVR(root, CVS_REQ_VALIDRESP);
- root->cr_str = strdup(str);
- if (root->cr_str == NULL) {
- free(root);
- return (NULL);
- }
- root->cr_buf = strdup(str);
- if (root->cr_buf == NULL) {
- cvs_log(LP_ERRNO, "failed to copy CVS root");
- cvsroot_free(root);
- return (NULL);
- }
+ root->cr_str = xstrdup(str);
+ root->cr_buf = xstrdup(str);
sp = root->cr_buf;
cp = root->cr_buf;
@@ -246,12 +233,12 @@ static void
cvsroot_free(struct cvsroot *root)
{
if (root->cr_str != NULL)
- free(root->cr_str);
+ xfree(root->cr_str);
if (root->cr_buf != NULL)
- free(root->cr_buf);
+ xfree(root->cr_buf);
if (root->cr_version != NULL)
- free(root->cr_version);
- free(root);
+ xfree(root->cr_version);
+ xfree(root);
}
/*
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 *
diff --git a/usr.bin/cvs/watch.c b/usr.bin/cvs/watch.c
index 9d4601c40d0..781bad239e1 100644
--- a/usr.bin/cvs/watch.c
+++ b/usr.bin/cvs/watch.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: watch.c,v 1.7 2005/10/17 16:16:00 moritz Exp $ */
+/* $OpenBSD: watch.c,v 1.8 2005/12/10 20:27:45 joris Exp $ */
/*
* Copyright (c) 2005 Xavier Santolaria <xsa@openbsd.org>
* Copyright (c) 2005 Moritz Jodeit <moritz@openbsd.org>
@@ -123,10 +123,7 @@ cvs_watch_init(struct cvs_cmd *cmd, int argc, char **argv, int *arg)
strcmp(optarg, "all") != 0 &&
strcmp(optarg, "none") != 0)
return (CVS_EX_USAGE);
- if ((aoptstr = strdup(optarg)) == NULL) {
- cvs_log(LP_ERRNO, "failed to copy action");
- return (CVS_EX_DATA);
- }
+ aoptstr = xstrdup(optarg);
break;
case 'l':
cmd->file_flags &= ~CF_RECURSE;
@@ -164,18 +161,18 @@ cvs_watch_pre_exec(struct cvsroot *root)
(cvs_sendarg(root, "unedit", 0) < 0) ||
(cvs_sendarg(root, "-a", 0) < 0) ||
(cvs_sendarg(root, "commit", 0) < 0)) {
- free(aoptstr);
+ xfree(aoptstr);
return (CVS_EX_PROTO);
}
} else {
if ((cvs_sendarg(root, "-a", 0) < 0) ||
(cvs_sendarg(root, aoptstr, 0) < 0)) {
- free(aoptstr);
+ xfree(aoptstr);
return (CVS_EX_PROTO);
}
}
}
- free(aoptstr);
+ xfree(aoptstr);
return (CVS_EX_OK);
}
diff --git a/usr.bin/cvs/xmalloc.c b/usr.bin/cvs/xmalloc.c
new file mode 100644
index 00000000000..b4009cdab70
--- /dev/null
+++ b/usr.bin/cvs/xmalloc.c
@@ -0,0 +1,67 @@
+/*
+ * Author: Tatu Ylonen <ylo@cs.hut.fi>
+ * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
+ * All rights reserved
+ * Versions of xmalloc and friends that check their results, and never return
+ * failure (they call fatal if they encounter an error).
+ *
+ * As far as I am concerned, the code I have written for this software
+ * can be used freely for any purpose. Any derived versions of this
+ * software must be clearly marked as such, and if the derived work is
+ * incompatible with the protocol description in the RFC file, it must be
+ * called by a name other than "ssh" or "Secure Shell".
+ */
+
+#include <stdlib.h>
+#include <string.h>
+
+#include "cvs.h"
+
+void *
+xmalloc(size_t size)
+{
+ void *ptr;
+
+ if (size == 0)
+ fatal("xmalloc: zero size");
+ ptr = malloc(size);
+ if (ptr == NULL)
+ fatal("xmalloc: out of memory (allocating %lu bytes)", (u_long) size);
+ return ptr;
+}
+
+void *
+xrealloc(void *ptr, size_t new_size)
+{
+ void *new_ptr;
+
+ if (new_size == 0)
+ fatal("xrealloc: zero size");
+ if (ptr == NULL)
+ new_ptr = xmalloc(new_size);
+ else
+ new_ptr = realloc(ptr, new_size);
+ if (new_ptr == NULL)
+ fatal("xrealloc: out of memory (new_size %lu bytes)", (u_long) new_size);
+ return new_ptr;
+}
+
+void
+xfree(void *ptr)
+{
+ if (ptr == NULL)
+ fatal("xfree: NULL pointer given as argument");
+ free(ptr);
+}
+
+char *
+xstrdup(const char *str)
+{
+ size_t len;
+ char *cp;
+
+ len = strlen(str) + 1;
+ cp = xmalloc(len);
+ strlcpy(cp, str, len);
+ return cp;
+}
diff --git a/usr.bin/cvs/xmalloc.h b/usr.bin/cvs/xmalloc.h
new file mode 100644
index 00000000000..b40cddd7fc5
--- /dev/null
+++ b/usr.bin/cvs/xmalloc.h
@@ -0,0 +1,27 @@
+/* $OpenBSD: xmalloc.h,v 1.1 2005/12/10 20:27:45 joris Exp $ */
+
+/*
+ * Author: Tatu Ylonen <ylo@cs.hut.fi>
+ * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
+ * All rights reserved
+ * Created: Mon Mar 20 22:09:17 1995 ylo
+ *
+ * Versions of xmalloc and friends that check their results, and never return
+ * failure (they call fatal if they encounter an error).
+ *
+ * As far as I am concerned, the code I have written for this software
+ * can be used freely for any purpose. Any derived versions of this
+ * software must be clearly marked as such, and if the derived work is
+ * incompatible with the protocol description in the RFC file, it must be
+ * called by a name other than "ssh" or "Secure Shell".
+ */
+
+#ifndef XMALLOC_H
+#define XMALLOC_H
+
+void *xmalloc(size_t);
+void *xrealloc(void *, size_t);
+void xfree(void *);
+char *xstrdup(const char *);
+
+#endif /* XMALLOC_H */
diff --git a/usr.bin/cvs/zlib.c b/usr.bin/cvs/zlib.c
index fb1bd30ee06..55d4d205a96 100644
--- a/usr.bin/cvs/zlib.c
+++ b/usr.bin/cvs/zlib.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: zlib.c,v 1.3 2005/07/25 12:05:43 xsa Exp $ */
+/* $OpenBSD: zlib.c,v 1.4 2005/12/10 20:27:45 joris Exp $ */
/*
* Copyright (c) 2005 Jean-Francois Brousseau <jfb@openbsd.org>
* All rights reserved.
@@ -60,7 +60,7 @@ cvs_zlib_newctx(int level)
return (NULL);
}
- ctx = (CVSZCTX *)malloc(sizeof(*ctx));
+ ctx = (CVSZCTX *)xmalloc(sizeof(*ctx));
if (ctx == NULL) {
cvs_log(LP_ERRNO, "failed to allocate zlib context");
return (NULL);
@@ -79,7 +79,7 @@ cvs_zlib_newctx(int level)
if ((inflateInit(&(ctx->z_instrm)) != Z_OK) ||
(deflateInit(&(ctx->z_destrm), level) != Z_OK)) {
cvs_log(LP_ERR, "failed to initialize zlib streams");
- free(ctx);
+ xfree(ctx);
return (NULL);
}
@@ -98,7 +98,7 @@ cvs_zlib_free(CVSZCTX *ctx)
if (ctx != NULL) {
(void)inflateEnd(&(ctx->z_instrm));
(void)deflateEnd(&(ctx->z_destrm));
- free(ctx);
+ xfree(ctx);
}
}
diff --git a/usr.bin/rcs/Makefile b/usr.bin/rcs/Makefile
index 3d4f6b5b4f4..22183256359 100644
--- a/usr.bin/rcs/Makefile
+++ b/usr.bin/rcs/Makefile
@@ -1,4 +1,4 @@
-# $OpenBSD: Makefile,v 1.25 2005/12/01 09:35:59 xsa Exp $
+# $OpenBSD: Makefile,v 1.26 2005/12/10 20:27:46 joris Exp $
.PATH: ${.CURDIR}/../cvs
@@ -7,7 +7,9 @@ MAN= ci.1 co.1 ident.1 rcs.1 rcsclean.1 rcsdiff.1 rcsmerge.1 rlog.1 \
rcsintro.7
SRCS= ci.c co.c ident.c rcsclean.c rcsdiff.c rcsmerge.c rcsprog.c rlog.c \
- buf.c date.y diff.c diff3.c log.c rcs.c rcsnum.c util.c
+ buf.c date.y diff.c diff3.c fatal.c log.c rcs.c rcsnum.c util.c \
+ xmalloc.c
+
CPPFLAGS+=-I${.CURDIR}/../cvs -DRCSPROG
LINKS= ${BINDIR}/rcs ${BINDIR}/ci ${BINDIR}/rcs ${BINDIR}/co \
diff --git a/usr.bin/rcs/ci.c b/usr.bin/rcs/ci.c
index 120f8f08228..8b4e01465ee 100644
--- a/usr.bin/rcs/ci.c
+++ b/usr.bin/rcs/ci.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: ci.c,v 1.83 2005/12/09 04:27:01 joris Exp $ */
+/* $OpenBSD: ci.c,v 1.84 2005/12/10 20:27:46 joris Exp $ */
/*
* Copyright (c) 2005 Niall O'Higgins <niallo@openbsd.org>
* All rights reserved.
@@ -154,10 +154,7 @@ checkin_main(int argc, char **argv)
pb.flags &= ~INTERACTIVE;
break;
case 'N':
- if ((pb.symbol = strdup(rcs_optarg)) == NULL) {
- cvs_log(LP_ERRNO, "out of memory");
- exit(1);
- }
+ pb.symbol = xstrdup(rcs_optarg);
if (rcs_sym_check(pb.symbol) != 1) {
cvs_log(LP_ERR, "invalid symbol `%s'",
pb.symbol);
@@ -166,10 +163,7 @@ checkin_main(int argc, char **argv)
pb.flags |= CI_SYMFORCE;
break;
case 'n':
- if ((pb.symbol = strdup(rcs_optarg)) == NULL) {
- cvs_log(LP_ERRNO, "out of memory");
- exit(1);
- }
+ pb.symbol = xstrdup(rcs_optarg);
if (rcs_sym_check(pb.symbol) != 1) {
cvs_log(LP_ERR, "invalid symbol `%s'",
pb.symbol);
@@ -195,10 +189,7 @@ checkin_main(int argc, char **argv)
pb.flags |= PRESERVETIME;
break;
case 't':
- if ((pb.description = strdup(rcs_optarg)) == NULL) {
- cvs_log(LP_ERRNO, "out of memory");
- exit(1);
- }
+ pb.description = xstrdup(rcs_optarg);
break;
case 'u':
rcs_set_rev(rcs_optarg, &pb.newrev);
@@ -208,10 +199,7 @@ checkin_main(int argc, char **argv)
printf("%s\n", rcs_version);
exit(0);
case 'w':
- if ((pb.author = strdup(rcs_optarg)) == NULL) {
- cvs_log(LP_ERRNO, "out of memory");
- exit(1);
- }
+ pb.author = xstrdup(rcs_optarg);
break;
case 'x':
rcs_suffixes = rcs_optarg;
@@ -271,7 +259,7 @@ checkin_main(int argc, char **argv)
continue;
}
strlcpy(pb.fpath, fpath, sizeof(pb.fpath));
- free(fpath);
+ xfree(fpath);
}
pb.file = rcs_open(pb.fpath, pb.openflags, pb.fmode);
@@ -558,8 +546,8 @@ checkin_update(struct checkin_params *pb)
if (pb->state != NULL)
(void)rcs_state_set(pb->file, pb->newrev, pb->state);
- free(pb->deltatext);
- free(filec);
+ xfree(pb->deltatext);
+ xfree(filec);
(void)unlink(pb->filename);
/* Do checkout if -u or -l are specified. */
@@ -572,7 +560,7 @@ checkin_update(struct checkin_params *pb)
rcs_close(pb->file);
if (pb->flags & INTERACTIVE) {
- free(pb->rcs_msg);
+ xfree(pb->rcs_msg);
pb->rcs_msg = NULL;
}
return (0);
@@ -615,11 +603,11 @@ checkin_init(struct checkin_params *pb)
cvs_log(LP_ERR,
"failed to load description file '%s'",
pb->description);
- free(filec);
+ xfree(filec);
return (-1);
}
if (cvs_buf_putc(dp, '\0') < 0) {
- free(filec);
+ xfree(filec);
return (-1);
}
rcs_desc = (const char *)cvs_buf_release(dp);
@@ -655,7 +643,7 @@ checkin_init(struct checkin_params *pb)
if (pb->state != NULL)
(void)rcs_state_set(pb->file, pb->newrev, pb->state);
- free(filec);
+ xfree(filec);
(void)unlink(pb->filename);
/* Do checkout if -u or -l are specified. */
@@ -789,10 +777,7 @@ checkin_choose_rcsfile(const char *filename)
size_t len;
struct stat sb;
- if ((basepath = malloc(MAXPATHLEN)) == NULL) {
- cvs_log(LP_ERRNO, "could not allocate memory");
- return (NULL);
- }
+ basepath = xmalloc(MAXPATHLEN);
if (strchr(filename, '/') == NULL) {
strlcat(basepath, RCSDIR"/", MAXPATHLEN);
if ((stat(basepath, &sb) == 0) && (sb.st_mode & S_IFDIR)) {
@@ -820,7 +805,7 @@ checkin_choose_rcsfile(const char *filename)
*/
len += 2;
if (len > MAXPATHLEN) {
- free(basepath);
+ xfree(basepath);
return (NULL);
}
strlcpy(basepath, filename, len);
diff --git a/usr.bin/rcs/co.c b/usr.bin/rcs/co.c
index ed3ea8b4465..76b7373b312 100644
--- a/usr.bin/rcs/co.c
+++ b/usr.bin/rcs/co.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: co.c,v 1.46 2005/12/09 06:59:27 joris Exp $ */
+/* $OpenBSD: co.c,v 1.47 2005/12/10 20:27:46 joris Exp $ */
/*
* Copyright (c) 2005 Joris Vink <joris@openbsd.org>
* All rights reserved.
@@ -94,10 +94,7 @@ checkout_main(int argc, char **argv)
rcs_set_rev(rcs_optarg, &rev);
break;
case 's':
- if ((state = strdup(rcs_optarg)) == NULL) {
- cvs_log(LP_ERRNO, "out of memory");
- exit(1);
- }
+ state = xstrdup(rcs_optarg);
flags |= CO_STATE;
break;
case 'T':
@@ -118,11 +115,8 @@ checkout_main(int argc, char **argv)
"could not get login");
exit(1);
}
- } else if ((author = strdup(rcs_optarg)) == NULL) {
- cvs_log(LP_ERRNO, "out of memory");
- exit(1);
- }
-
+ } else
+ author = xstrdup(rcs_optarg);
flags |= CO_AUTHOR;
break;
case 'x':
@@ -350,7 +344,7 @@ checkout_rev(RCSFILE *file, RCSNUM *frev, const char *dst, int flags,
cvs_buf_putc(bp, '\0');
content = cvs_buf_release(bp);
printf("%s", content);
- free(content);
+ xfree(content);
} else {
if (cvs_buf_write(bp, dst, mode) < 0) {
cvs_log(LP_ERR, "failed to write revision to file");
diff --git a/usr.bin/rcs/rcsclean.c b/usr.bin/rcs/rcsclean.c
index 661431925a2..2eb67d7d5e5 100644
--- a/usr.bin/rcs/rcsclean.c
+++ b/usr.bin/rcs/rcsclean.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: rcsclean.c,v 1.19 2005/12/08 18:56:10 joris Exp $ */
+/* $OpenBSD: rcsclean.c,v 1.20 2005/12/10 20:27:46 joris Exp $ */
/*
* Copyright (c) 2005 Joris Vink <joris@openbsd.org>
* All rights reserved.
@@ -190,8 +190,8 @@ rcsclean_file(char *fname, RCSNUM *rev)
}
}
- free(c1);
- free(c2);
+ xfree(c1);
+ xfree(c2);
if (match == 1) {
if ((uflag == 1) && (!TAILQ_EMPTY(&(file->rf_locks)))) {
diff --git a/usr.bin/rcs/rcsmerge.c b/usr.bin/rcs/rcsmerge.c
index 54d1296a339..9d1e44d4f9c 100644
--- a/usr.bin/rcs/rcsmerge.c
+++ b/usr.bin/rcs/rcsmerge.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: rcsmerge.c,v 1.10 2005/11/28 14:43:59 xsa Exp $ */
+/* $OpenBSD: rcsmerge.c,v 1.11 2005/12/10 20:27:46 joris Exp $ */
/*
* Copyright (c) 2005 Xavier Santolaria <xsa@openbsd.org>
* All rights reserved.
@@ -136,7 +136,7 @@ rcsmerge_main(int argc, char **argv)
fcont = cvs_buf_release(bp);
printf("%s", fcont);
- free(fcont);
+ xfree(fcont);
} else {
/* XXX mode */
if (cvs_buf_write(bp, argv[i], 0644) < 0)
diff --git a/usr.bin/rcs/rcsprog.c b/usr.bin/rcs/rcsprog.c
index 6eb8eafbf56..37a02f36759 100644
--- a/usr.bin/rcs/rcsprog.c
+++ b/usr.bin/rcs/rcsprog.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: rcsprog.c,v 1.52 2005/12/09 07:00:43 joris Exp $ */
+/* $OpenBSD: rcsprog.c,v 1.53 2005/12/10 20:27:46 joris Exp $ */
/*
* Copyright (c) 2005 Jean-Francois Brousseau <jfb@openbsd.org>
* All rights reserved.
@@ -153,19 +153,13 @@ rcs_init(char *envstr, char **argv, int argvlen)
break;
}
- argv[argc] = strdup(cp);
- if (argv[argc] == NULL) {
- cvs_log(LP_ERRNO, "failed to copy argument");
- error++;
- break;
- }
-
+ argv[argc] = xstrdup(cp);
argc++;
}
if (error != 0) {
for (i = 0; i < (u_int)argc; i++)
- free(argv[i]);
+ xfree(argv[i]);
argc = -1;
}
@@ -421,10 +415,7 @@ rcs_main(int argc, char **argv)
lkmode = RCS_LOCK_STRICT;
break;
case 'm':
- if ((logstr = strdup(rcs_optarg)) == NULL) {
- cvs_log(LP_ERRNO, "failed to copy logstring");
- exit(1);
- }
+ logstr = xstrdup(rcs_optarg);
break;
case 'M':
/* ignore for the moment */
@@ -551,7 +542,7 @@ rcs_main(int argc, char **argv)
}
if (logstr != NULL)
- free(logstr);
+ xfree(logstr);
return (0);
}
diff --git a/usr.bin/rcs/rcsprog.h b/usr.bin/rcs/rcsprog.h
index 24e8d3f1e6f..9bc4196a759 100644
--- a/usr.bin/rcs/rcsprog.h
+++ b/usr.bin/rcs/rcsprog.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: rcsprog.h,v 1.30 2005/12/08 18:56:10 joris Exp $ */
+/* $OpenBSD: rcsprog.h,v 1.31 2005/12/10 20:27:46 joris Exp $ */
/*
* Copyright (c) 2005 Joris Vink <joris@openbsd.org>
* All rights reserved.
@@ -27,6 +27,8 @@
#ifndef RCSPROG_H
#define RCSPROG_H
+#include "xmalloc.h"
+
#define RCS_TMPDIR_DEFAULT "/tmp"
/* flags specific to ci.c */