summaryrefslogtreecommitdiffstats
path: root/usr.bin/sed
diff options
context:
space:
mode:
authorobrien <obrien@FreeBSD.org>2001-07-24 14:05:21 +0000
committerobrien <obrien@FreeBSD.org>2001-07-24 14:05:21 +0000
commit6dc73139c0963b16a0a8642e6399a5433348138e (patch)
tree5cfbf3a709a30e3188c47d1beb93d8b2481dcaf0 /usr.bin/sed
parent4f82093ece0a22bfe072a2c476f29289a0773290 (diff)
downloadFreeBSD-src-6dc73139c0963b16a0a8642e6399a5433348138e.zip
FreeBSD-src-6dc73139c0963b16a0a8642e6399a5433348138e.tar.gz
Expand xmalloc in-place, along with xrealloc; which wasn't even ANSI in its
implementation.
Diffstat (limited to 'usr.bin/sed')
-rw-r--r--usr.bin/sed/compile.c53
-rw-r--r--usr.bin/sed/extern.h2
-rw-r--r--usr.bin/sed/main.c9
-rw-r--r--usr.bin/sed/misc.c33
-rw-r--r--usr.bin/sed/process.c18
5 files changed, 56 insertions, 59 deletions
diff --git a/usr.bin/sed/compile.c b/usr.bin/sed/compile.c
index 606db89..39aa80c 100644
--- a/usr.bin/sed/compile.c
+++ b/usr.bin/sed/compile.c
@@ -138,8 +138,10 @@ compile()
*compile_stream(&prog) = NULL;
fixuplabel(prog, NULL);
uselabel();
- appends = xmalloc(sizeof(struct s_appends) * appendnum);
- match = xmalloc((maxnsub + 1) * sizeof(regmatch_t));
+ if ((appends = malloc(sizeof(struct s_appends) * appendnum)) == NULL)
+ err(1, "malloc");
+ if ((match = malloc((maxnsub + 1) * sizeof(regmatch_t))) == NULL)
+ err(1, "malloc");
}
#define EATSPACE() do { \
@@ -170,7 +172,8 @@ compile_stream(link)
semicolon: EATSPACE();
if (p && (*p == '#' || *p == '\0'))
continue;
- *link = cmd = xmalloc(sizeof(struct s_command));
+ if ((*link = cmd = malloc(sizeof(struct s_command))) == NULL)
+ err(1, "malloc");
link = &cmd->next;
cmd->nonsel = cmd->inrange = 0;
/* First parse the addresses */
@@ -180,14 +183,17 @@ semicolon: EATSPACE();
#define addrchar(c) (strchr("0123456789/\\$", (c)))
if (addrchar(*p)) {
naddr++;
- cmd->a1 = xmalloc(sizeof(struct s_addr));
+ if ((cmd->a1 = malloc(sizeof(struct s_addr))) == NULL)
+ err(1, "malloc");
p = compile_addr(p, cmd->a1);
EATSPACE(); /* EXTENSION */
if (*p == ',') {
p++;
EATSPACE(); /* EXTENSION */
naddr++;
- cmd->a2 = xmalloc(sizeof(struct s_addr));
+ if ((cmd->a2 = malloc(sizeof(struct s_addr)))
+ == NULL)
+ err(1, "malloc");
p = compile_addr(p, cmd->a2);
EATSPACE();
} else
@@ -306,7 +312,8 @@ nonsel: /* Now parse the command */
errx(1,
"%lu: %s: substitute pattern can not be delimited by newline or backslash",
linenum, fname);
- cmd->u.s = xmalloc(sizeof(struct s_subst));
+ if ((cmd->u.s = malloc(sizeof(struct s_subst))) == NULL)
+ err(1, "malloc");
p = compile_re(p, &cmd->u.s->re);
if (p == NULL)
errx(1,
@@ -434,7 +441,8 @@ compile_re(p, repp)
*repp = NULL;
return (p);
}
- *repp = xmalloc(sizeof(regex_t));
+ if ((*repp = malloc(sizeof(regex_t))) == NULL)
+ err(1, "malloc");
if (p && (eval = regcomp(*repp, re, rflags)) != 0)
errx(1, "%lu: %s: RE error: %s",
linenum, fname, strregerror(eval, *repp));
@@ -465,7 +473,8 @@ compile_subst(p, s)
s->maxbref = 0;
s->linenum = linenum;
asize = 2 * _POSIX2_LINE_MAX + 1;
- text = xmalloc(asize);
+ if ((text = malloc(asize)) == NULL)
+ err(1, "malloc");
size = 0;
do {
op = sp = text + size;
@@ -490,7 +499,8 @@ compile_subst(p, s)
}
*sp++ = '\0';
size += sp - op;
- s->new = xrealloc(text, size);
+ if ((s->new = realloc(text, size)) == NULL)
+ err(1, "realloc");
return (p);
} else if (*p == '\n') {
errx(1,
@@ -502,7 +512,8 @@ compile_subst(p, s)
size += sp - op;
if (asize - size < _POSIX2_LINE_MAX + 1) {
asize *= 2;
- text = xrealloc(text, asize);
+ if ((text = realloc(text, asize)) == NULL)
+ err(1, "realloc");
}
} while (cu_fgets(p = lbuf, sizeof(lbuf), &more));
errx(1, "%lu: %s: unterminated substitute in regular expression",
@@ -615,7 +626,8 @@ compile_tr(p, transtab)
errx(1, "%lu: %s: transform strings are not the same length",
linenum, fname);
/* We assume characters are 8 bits */
- lt = xmalloc(UCHAR_MAX);
+ if ((lt = malloc(UCHAR_MAX)) == NULL)
+ err(1, "malloc");
for (i = 0; i <= UCHAR_MAX; i++)
lt[i] = (char)i;
for (op = old, np = new; *op; op++, np++)
@@ -635,7 +647,8 @@ compile_text()
char lbuf[_POSIX2_LINE_MAX + 1];
asize = 2 * _POSIX2_LINE_MAX + 1;
- text = xmalloc(asize);
+ if ((text = malloc(asize)) == NULL)
+ err(1, "malloc");
size = 0;
while (cu_fgets(lbuf, sizeof(lbuf), NULL)) {
op = s = text + size;
@@ -653,11 +666,14 @@ compile_text()
}
if (asize - size < _POSIX2_LINE_MAX + 1) {
asize *= 2;
- text = xrealloc(text, asize);
+ if ((text = realloc(text, asize)) == NULL)
+ err(1, "realloc");
}
}
text[size] = '\0';
- return (xrealloc(text, size + 1));
+ if ((p = realloc(text, size + 1)) == NULL)
+ err(1, "realloc");
+ return (p);
}
/*
@@ -708,7 +724,7 @@ duptoeol(s, ctype)
{
size_t len;
int ws;
- char *start;
+ char *p, *start;
ws = 0;
for (start = s; *s != '\0' && *s != '\n'; ++s)
@@ -717,7 +733,9 @@ duptoeol(s, ctype)
if (ws)
warnx("%lu: %s: whitespace after %s", linenum, fname, ctype);
len = s - start + 1;
- return (memmove(xmalloc(len), start, len));
+ if ((p = malloc(len)) == NULL)
+ err(1, "malloc");
+ return (memmove(p, start, len));
}
/*
@@ -773,7 +791,8 @@ enterlabel(cp)
for (lh = *lhp; lh != NULL; lh = lh->lh_next)
if (lh->lh_hash == h && strcmp(cp->t, lh->lh_cmd->t) == 0)
errx(1, "%lu: %s: duplicate label '%s'", linenum, fname, cp->t);
- lh = xmalloc(sizeof *lh);
+ if ((lh = malloc(sizeof *lh)) == NULL)
+ err(1, "malloc");
lh->lh_next = *lhp;
lh->lh_hash = h;
lh->lh_cmd = cp;
diff --git a/usr.bin/sed/extern.h b/usr.bin/sed/extern.h
index da7b569..0a88e97 100644
--- a/usr.bin/sed/extern.h
+++ b/usr.bin/sed/extern.h
@@ -56,5 +56,3 @@ char *cu_fgets __P((char *, int, int *));
int mf_fgets __P((SPACE *, enum e_spflag));
void process __P((void));
char *strregerror __P((int, regex_t *));
-void *xmalloc __P((u_int));
-void *xrealloc __P((void *, u_int));
diff --git a/usr.bin/sed/main.c b/usr.bin/sed/main.c
index c189c26..2811ca6 100644
--- a/usr.bin/sed/main.c
+++ b/usr.bin/sed/main.c
@@ -130,7 +130,8 @@ main(argc, argv)
break;
case 'e':
eflag = 1;
- temp_arg = xmalloc(strlen(optarg) + 2);
+ if ((temp_arg = malloc(strlen(optarg) + 2)) == NULL)
+ err(1, "malloc");
strcpy(temp_arg, optarg);
strcat(temp_arg, "\n");
add_compunit(CU_STRING, temp_arg);
@@ -362,7 +363,8 @@ add_compunit(type, s)
{
struct s_compunit *cu;
- cu = xmalloc(sizeof(struct s_compunit));
+ if ((cu = malloc(sizeof(struct s_compunit))) == NULL)
+ err(1, "malloc");
cu->type = type;
cu->s = s;
cu->next = NULL;
@@ -379,7 +381,8 @@ add_file(s)
{
struct s_flist *fp;
- fp = xmalloc(sizeof(struct s_flist));
+ if ((fp = malloc(sizeof(struct s_flist))) == NULL)
+ err(1, "malloc");
fp->next = NULL;
*fl_nextp = fp;
fp->fname = s;
diff --git a/usr.bin/sed/misc.c b/usr.bin/sed/misc.c
index c9b013a..d5ad374 100644
--- a/usr.bin/sed/misc.c
+++ b/usr.bin/sed/misc.c
@@ -55,36 +55,6 @@ static const char rcsid[] =
#include "extern.h"
/*
- * malloc with result test
- */
-void *
-xmalloc(size)
- u_int size;
-{
- void *p;
-
- if ((p = malloc(size)) == NULL)
- err(1, "malloc");
- return (p);
-}
-
-/*
- * realloc with result test
- */
-void *
-xrealloc(p, size)
- void *p;
- u_int size;
-{
- if (p == NULL) /* Compatibility hack. */
- return (xmalloc(size));
-
- if ((p = realloc(p, size)) == NULL)
- err(1, "realloc");
- return (p);
-}
-
-/*
* Return a string for a regular expression error passed. This is a overkill,
* because of the silly semantics of regerror (we can never know the size of
* the buffer).
@@ -100,7 +70,8 @@ strregerror(errcode, preg)
if (oe != NULL)
free(oe);
s = regerror(errcode, preg, "", 0);
- oe = xmalloc(s);
+ if ((oe = malloc(s)) == NULL)
+ err(1, "malloc");
(void)regerror(errcode, preg, oe, s);
return (oe);
}
diff --git a/usr.bin/sed/process.c b/usr.bin/sed/process.c
index 77ef93a..baad0f1 100644
--- a/usr.bin/sed/process.c
+++ b/usr.bin/sed/process.c
@@ -113,9 +113,10 @@ redirect:
goto redirect;
case 'a':
if (appendx >= appendnum)
- appends = xrealloc(appends,
+ if ((appends = realloc(appends,
sizeof(struct s_appends) *
- (appendnum *= 2));
+ (appendnum *= 2))) == NULL)
+ err(1, "realloc");
appends[appendx].type = AP_STRING;
appends[appendx].s = cp->t;
appends[appendx].len = strlen(cp->t);
@@ -201,9 +202,10 @@ redirect:
exit(0);
case 'r':
if (appendx >= appendnum)
- appends = xrealloc(appends,
+ if ((appends = realloc(appends,
sizeof(struct s_appends) *
- (appendnum *= 2));
+ (appendnum *= 2))) == NULL)
+ err(1, "realloc");
appends[appendx].type = AP_FILE;
appends[appendx].s = cp->t;
appends[appendx].len = strlen(cp->t);
@@ -548,7 +550,9 @@ regsub(sp, string, src)
#define NEEDSP(reqlen) \
if (sp->len >= sp->blen - (reqlen) - 1) { \
sp->blen += (reqlen) + 1024; \
- sp->space = sp->back = xrealloc(sp->back, sp->blen); \
+ if ((sp->space = sp->back = realloc(sp->back, sp->blen)) \
+ == NULL) \
+ err(1, "realloc"); \
dst = sp->space + sp->len; \
}
@@ -596,7 +600,9 @@ cspace(sp, p, len, spflag)
tlen = sp->len + len + 1;
if (tlen > sp->blen) {
sp->blen = tlen + 1024;
- sp->space = sp->back = xrealloc(sp->back, sp->blen);
+ if ((sp->space = sp->back = realloc(sp->back, sp->blen)) ==
+ NULL)
+ err(1, "realloc");
}
if (spflag == REPLACE)
OpenPOWER on IntegriCloud