ash: introduce and use stzalloc and ckzalloc.
function old new delta stzalloc - 29 +29 ckzalloc - 29 +29 recordregion 108 102 -6 cmdlookup 158 152 -6 pipeline 188 181 -7 parseheredoc 135 128 -7 makename 42 35 -7 list 355 348 -7 setvareq 221 212 -9 aliascmd 324 311 -13 pushfile 83 69 -14 readtoken1 2872 2849 -23 parse_command 1430 1391 -39 ------------------------------------------------------------------------------ (add/remove: 2/0 grow/shrink: 0/11 up/down: 58/-138) Total: -80 bytes text data bss dec hex filename 577227 706 23740 601673 92e49 busybox_old 577147 706 23740 601593 92df9 busybox_unstripped
This commit is contained in:
parent
e7b43cf59f
commit
597906c436
104
shell/ash.c
104
shell/ash.c
@ -1185,6 +1185,12 @@ ckmalloc(size_t nbytes)
|
||||
return ckrealloc(NULL, nbytes);
|
||||
}
|
||||
|
||||
static void *
|
||||
ckzalloc(size_t nbytes)
|
||||
{
|
||||
return memset(ckmalloc(nbytes), 0, nbytes);
|
||||
}
|
||||
|
||||
/*
|
||||
* Make a copy of a string in safe storage.
|
||||
*/
|
||||
@ -1238,6 +1244,12 @@ stalloc(size_t nbytes)
|
||||
return p;
|
||||
}
|
||||
|
||||
static void *
|
||||
stzalloc(size_t nbytes)
|
||||
{
|
||||
return memset(stalloc(nbytes), 0, nbytes);
|
||||
}
|
||||
|
||||
static void
|
||||
stunalloc(void *p)
|
||||
{
|
||||
@ -2028,9 +2040,9 @@ setvareq(char *s, int flags)
|
||||
if (flags & VNOSET)
|
||||
return;
|
||||
/* not found */
|
||||
vp = ckmalloc(sizeof(*vp));
|
||||
vp = ckzalloc(sizeof(*vp));
|
||||
vp->next = *vpp;
|
||||
vp->func = NULL;
|
||||
/*vp->func = NULL; - ckzalloc did it */
|
||||
*vpp = vp;
|
||||
}
|
||||
if (!(flags & (VTEXTFIXED|VSTACK|VNOSAVE)))
|
||||
@ -3072,11 +3084,11 @@ setalias(const char *name, const char *val)
|
||||
ap->flag &= ~ALIASDEAD;
|
||||
} else {
|
||||
/* not found */
|
||||
ap = ckmalloc(sizeof(struct alias));
|
||||
ap = ckzalloc(sizeof(struct alias));
|
||||
ap->name = ckstrdup(name);
|
||||
ap->val = ckstrdup(val);
|
||||
ap->flag = 0;
|
||||
ap->next = 0;
|
||||
/*ap->flag = 0; - ckzalloc did it */
|
||||
/*ap->next = NULL;*/
|
||||
*app = ap;
|
||||
}
|
||||
INT_ON;
|
||||
@ -5222,8 +5234,8 @@ recordregion(int start, int end, int nulonly)
|
||||
ifsp = &ifsfirst;
|
||||
} else {
|
||||
INT_OFF;
|
||||
ifsp = ckmalloc(sizeof(*ifsp));
|
||||
ifsp->next = NULL;
|
||||
ifsp = ckzalloc(sizeof(*ifsp));
|
||||
/*ifsp->next = NULL; - ckzalloc did it */
|
||||
ifslastp->next = ifsp;
|
||||
INT_ON;
|
||||
}
|
||||
@ -6139,7 +6151,7 @@ ifsbreakup(char *string, struct arglist *arglist)
|
||||
continue;
|
||||
}
|
||||
*q = '\0';
|
||||
sp = stalloc(sizeof(*sp));
|
||||
sp = stzalloc(sizeof(*sp));
|
||||
sp->text = start;
|
||||
*arglist->lastp = sp;
|
||||
arglist->lastp = &sp->next;
|
||||
@ -6155,7 +6167,8 @@ ifsbreakup(char *string, struct arglist *arglist)
|
||||
if (strchr(ifs, *p) == NULL ) {
|
||||
p = q;
|
||||
break;
|
||||
} else if (strchr(defifs, *p) == NULL) {
|
||||
}
|
||||
if (strchr(defifs, *p) == NULL) {
|
||||
if (ifsspc) {
|
||||
p++;
|
||||
ifsspc = 0;
|
||||
@ -6179,7 +6192,7 @@ ifsbreakup(char *string, struct arglist *arglist)
|
||||
return;
|
||||
|
||||
add:
|
||||
sp = stalloc(sizeof(*sp));
|
||||
sp = stzalloc(sizeof(*sp));
|
||||
sp->text = start;
|
||||
*arglist->lastp = sp;
|
||||
arglist->lastp = &sp->next;
|
||||
@ -6211,7 +6224,7 @@ addfname(const char *name)
|
||||
{
|
||||
struct strlist *sp;
|
||||
|
||||
sp = stalloc(sizeof(*sp));
|
||||
sp = stzalloc(sizeof(*sp));
|
||||
sp->text = ststrdup(name);
|
||||
*exparg.lastp = sp;
|
||||
exparg.lastp = &sp->next;
|
||||
@ -6481,7 +6494,7 @@ expandarg(union node *arg, struct arglist *arglist, int flag)
|
||||
} else {
|
||||
if (flag & EXP_REDIR) /*XXX - for now, just remove escapes */
|
||||
rmescapes(p);
|
||||
sp = stalloc(sizeof(*sp));
|
||||
sp = stzalloc(sizeof(*sp));
|
||||
sp->text = p;
|
||||
*exparg.lastp = sp;
|
||||
exparg.lastp = &sp->next;
|
||||
@ -6644,7 +6657,7 @@ tryexec(char *cmd, char **argv, char **envp)
|
||||
ap += 2;
|
||||
argv++;
|
||||
while ((*ap++ = *argv++))
|
||||
;
|
||||
continue;
|
||||
argv = new;
|
||||
goto repeat;
|
||||
}
|
||||
@ -6781,9 +6794,9 @@ cmdlookup(const char *name, int add)
|
||||
pp = &cmdp->next;
|
||||
}
|
||||
if (add && cmdp == NULL) {
|
||||
cmdp = *pp = ckmalloc(sizeof(struct tblentry) - ARB
|
||||
cmdp = *pp = ckzalloc(sizeof(struct tblentry) - ARB
|
||||
+ strlen(name) + 1);
|
||||
cmdp->next = NULL;
|
||||
/*cmdp->next = NULL; - ckzalloc did it */
|
||||
cmdp->cmdtype = CMDUNKNOWN;
|
||||
strcpy(cmdp->cmdname, name);
|
||||
}
|
||||
@ -8903,11 +8916,11 @@ pushfile(void)
|
||||
parsefile->lleft = parselleft;
|
||||
parsefile->nextc = parsenextc;
|
||||
parsefile->linno = plinno;
|
||||
pf = ckmalloc(sizeof(*pf));
|
||||
pf = ckzalloc(sizeof(*pf));
|
||||
pf->prev = parsefile;
|
||||
pf->fd = -1;
|
||||
pf->strpush = NULL;
|
||||
pf->basestrpush.prev = NULL;
|
||||
/*pf->strpush = NULL; - ckzalloc did it */
|
||||
/*pf->basestrpush.prev = NULL;*/
|
||||
parsefile = pf;
|
||||
}
|
||||
|
||||
@ -9537,9 +9550,9 @@ list(int nlflag)
|
||||
n2->npipe.backgnd = 1;
|
||||
} else {
|
||||
if (n2->type != NREDIR) {
|
||||
n3 = stalloc(sizeof(struct nredir));
|
||||
n3 = stzalloc(sizeof(struct nredir));
|
||||
n3->nredir.n = n2;
|
||||
n3->nredir.redirect = NULL;
|
||||
/*n3->nredir.redirect = NULL; - stzalloc did it */
|
||||
n2 = n3;
|
||||
}
|
||||
n2->type = NBACKGND;
|
||||
@ -9629,9 +9642,9 @@ pipeline(void)
|
||||
tokpushback = 1;
|
||||
n1 = parse_command();
|
||||
if (readtoken() == TPIPE) {
|
||||
pipenode = stalloc(sizeof(struct npipe));
|
||||
pipenode = stzalloc(sizeof(struct npipe));
|
||||
pipenode->type = NPIPE;
|
||||
pipenode->npipe.backgnd = 0;
|
||||
/*pipenode->npipe.backgnd = 0; - stzalloc did it */
|
||||
lp = stalloc(sizeof(struct nodelist));
|
||||
pipenode->npipe.cmdlist = lp;
|
||||
lp->n = n1;
|
||||
@ -9660,9 +9673,9 @@ makename(void)
|
||||
{
|
||||
union node *n;
|
||||
|
||||
n = stalloc(sizeof(struct narg));
|
||||
n = stzalloc(sizeof(struct narg));
|
||||
n->type = NARG;
|
||||
n->narg.next = NULL;
|
||||
/*n->narg.next = NULL; - stzalloc did it */
|
||||
n->narg.text = wordtext;
|
||||
n->narg.backquote = backquotelist;
|
||||
return n;
|
||||
@ -9762,8 +9775,9 @@ simplecmd(void)
|
||||
checkkwd = savecheckkwd;
|
||||
switch (readtoken()) {
|
||||
case TWORD:
|
||||
n = stalloc(sizeof(struct narg));
|
||||
n = stzalloc(sizeof(struct narg));
|
||||
n->type = NARG;
|
||||
/*n->narg.next = NULL; - stzalloc did it */
|
||||
n->narg.text = wordtext;
|
||||
n->narg.backquote = backquotelist;
|
||||
if (savecheckkwd && isassignment(wordtext)) {
|
||||
@ -9887,8 +9901,9 @@ parse_command(void)
|
||||
if (readtoken() == TIN) {
|
||||
app = ≈
|
||||
while (readtoken() == TWORD) {
|
||||
n2 = stalloc(sizeof(struct narg));
|
||||
n2 = stzalloc(sizeof(struct narg));
|
||||
n2->type = NARG;
|
||||
/*n2->narg.next = NULL; - stzalloc did it */
|
||||
n2->narg.text = wordtext;
|
||||
n2->narg.backquote = backquotelist;
|
||||
*app = n2;
|
||||
@ -9899,11 +9914,11 @@ parse_command(void)
|
||||
if (lasttoken != TNL && lasttoken != TSEMI)
|
||||
raise_error_unexpected_syntax(-1);
|
||||
} else {
|
||||
n2 = stalloc(sizeof(struct narg));
|
||||
n2 = stzalloc(sizeof(struct narg));
|
||||
n2->type = NARG;
|
||||
/*n2->narg.next = NULL; - stzalloc did it */
|
||||
n2->narg.text = (char *)dolatstr;
|
||||
n2->narg.backquote = NULL;
|
||||
n2->narg.next = NULL;
|
||||
/*n2->narg.backquote = NULL;*/
|
||||
n1->nfor.args = n2;
|
||||
/*
|
||||
* Newline or semicolon here is optional (but note
|
||||
@ -9923,11 +9938,11 @@ parse_command(void)
|
||||
n1->type = NCASE;
|
||||
if (readtoken() != TWORD)
|
||||
raise_error_unexpected_syntax(TWORD);
|
||||
n1->ncase.expr = n2 = stalloc(sizeof(struct narg));
|
||||
n1->ncase.expr = n2 = stzalloc(sizeof(struct narg));
|
||||
n2->type = NARG;
|
||||
/*n2->narg.next = NULL; - stzalloc did it */
|
||||
n2->narg.text = wordtext;
|
||||
n2->narg.backquote = backquotelist;
|
||||
n2->narg.next = NULL;
|
||||
do {
|
||||
checkkwd = CHKKWD | CHKALIAS;
|
||||
} while (readtoken() == TNL);
|
||||
@ -9944,8 +9959,9 @@ parse_command(void)
|
||||
cp->type = NCLIST;
|
||||
app = &cp->nclist.pattern;
|
||||
for (;;) {
|
||||
*app = ap = stalloc(sizeof(struct narg));
|
||||
*app = ap = stzalloc(sizeof(struct narg));
|
||||
ap->type = NARG;
|
||||
/*ap->narg.next = NULL; - stzalloc did it */
|
||||
ap->narg.text = wordtext;
|
||||
ap->narg.backquote = backquotelist;
|
||||
if (readtoken() != TPIPE)
|
||||
@ -9953,7 +9969,7 @@ parse_command(void)
|
||||
app = &ap->narg.next;
|
||||
readtoken();
|
||||
}
|
||||
ap->narg.next = NULL;
|
||||
//ap->narg.next = NULL;
|
||||
if (lasttoken != TRP)
|
||||
raise_error_unexpected_syntax(TRP);
|
||||
cp->nclist.body = list(2);
|
||||
@ -9971,10 +9987,10 @@ parse_command(void)
|
||||
*cpp = NULL;
|
||||
goto redir;
|
||||
case TLP:
|
||||
n1 = stalloc(sizeof(struct nredir));
|
||||
n1 = stzalloc(sizeof(struct nredir));
|
||||
n1->type = NSUBSHELL;
|
||||
n1->nredir.n = list(0);
|
||||
n1->nredir.redirect = NULL;
|
||||
/*n1->nredir.redirect = NULL; - stzalloc did it */
|
||||
t = TRP;
|
||||
break;
|
||||
case TBEGIN:
|
||||
@ -10003,7 +10019,7 @@ parse_command(void)
|
||||
*rpp = NULL;
|
||||
if (redir) {
|
||||
if (n1->type != NSUBSHELL) {
|
||||
n2 = stalloc(sizeof(struct nredir));
|
||||
n2 = stzalloc(sizeof(struct nredir));
|
||||
n2->type = NREDIR;
|
||||
n2->nredir.n = n1;
|
||||
n1 = n2;
|
||||
@ -10301,7 +10317,7 @@ parseredir: {
|
||||
char fd = *out;
|
||||
union node *np;
|
||||
|
||||
np = stalloc(sizeof(struct nfile));
|
||||
np = stzalloc(sizeof(struct nfile));
|
||||
if (c == '>') {
|
||||
np->nfile.fd = 1;
|
||||
c = pgetc();
|
||||
@ -10316,13 +10332,13 @@ parseredir: {
|
||||
pungetc();
|
||||
}
|
||||
} else { /* c == '<' */
|
||||
np->nfile.fd = 0;
|
||||
/*np->nfile.fd = 0; - stzalloc did it */
|
||||
c = pgetc();
|
||||
switch (c) {
|
||||
case '<':
|
||||
if (sizeof(struct nfile) != sizeof(struct nhere)) {
|
||||
np = stalloc(sizeof(struct nhere));
|
||||
np->nfile.fd = 0;
|
||||
np = stzalloc(sizeof(struct nhere));
|
||||
/*np->nfile.fd = 0; - stzalloc did it */
|
||||
}
|
||||
np->type = NHERE;
|
||||
heredoc = stalloc(sizeof(struct heredoc));
|
||||
@ -10573,8 +10589,8 @@ parsebackq: {
|
||||
nlpp = &bqlist;
|
||||
while (*nlpp)
|
||||
nlpp = &(*nlpp)->next;
|
||||
*nlpp = stalloc(sizeof(**nlpp));
|
||||
(*nlpp)->next = NULL;
|
||||
*nlpp = stzalloc(sizeof(**nlpp));
|
||||
/* (*nlpp)->next = NULL; - stzalloc did it */
|
||||
parsebackquote = oldstyle;
|
||||
|
||||
if (oldstyle) {
|
||||
@ -10930,9 +10946,9 @@ parseheredoc(void)
|
||||
}
|
||||
readtoken1(pgetc(), here->here->type == NHERE? SQSYNTAX : DQSYNTAX,
|
||||
here->eofmark, here->striptabs);
|
||||
n = stalloc(sizeof(struct narg));
|
||||
n = stzalloc(sizeof(struct narg));
|
||||
n->narg.type = NARG;
|
||||
n->narg.next = NULL;
|
||||
/*n->narg.next = NULL; - stzalloc did it */
|
||||
n->narg.text = wordtext;
|
||||
n->narg.backquote = backquotelist;
|
||||
here->here->nhere.doc = n;
|
||||
|
Loading…
Reference in New Issue
Block a user