switch to a (nmemb,size) API from a (nmemb*size) API
cost: text += (308, 256, 4, -100)
This commit is contained in:
		
							
								
								
									
										12
									
								
								alloc.c
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								alloc.c
									
									
									
									
									
								
							| @@ -29,7 +29,7 @@ | ||||
|  | ||||
| #include "sh.h" | ||||
|  | ||||
| __RCSID("$MirOS: src/bin/mksh/alloc.c,v 1.10 2008/11/12 00:27:54 tg Exp $"); | ||||
| __RCSID("$MirOS: src/bin/mksh/alloc.c,v 1.11 2008/11/12 00:54:46 tg Exp $"); | ||||
|  | ||||
| struct link { | ||||
| 	struct link *prev; | ||||
| @@ -68,10 +68,12 @@ adelete(PArea *pap) | ||||
| #define P2L(p)	( (struct link *)(((ptrdiff_t)(p)) - sizeof (struct link)) ) | ||||
|  | ||||
| void * | ||||
| alloc(size_t size, PArea ap) | ||||
| alloc(size_t nmemb, size_t size, PArea ap) | ||||
| { | ||||
| 	struct link *l; | ||||
|  | ||||
| 	size *= nmemb; | ||||
|  | ||||
| 	if ((l = malloc(sizeof (struct link) + size)) == NULL) | ||||
| 		internal_errorf("unable to allocate memory"); | ||||
| 	l->next = ap->freelist; | ||||
| @@ -84,12 +86,14 @@ alloc(size_t size, PArea ap) | ||||
| } | ||||
|  | ||||
| void * | ||||
| aresize(void *ptr, size_t size, PArea ap) | ||||
| aresize(void *ptr, size_t nmemb, size_t size, PArea ap) | ||||
| { | ||||
| 	struct link *l, *l2, *lprev, *lnext; | ||||
|  | ||||
| 	if (ptr == NULL) | ||||
| 		return (alloc(size, ap)); | ||||
| 		return (alloc(nmemb, size, ap)); | ||||
|  | ||||
| 	size *= nmemb; | ||||
|  | ||||
| 	l = P2L(ptr); | ||||
| 	lprev = l->prev; | ||||
|   | ||||
							
								
								
									
										26
									
								
								edit.c
									
									
									
									
									
								
							
							
						
						
									
										26
									
								
								edit.c
									
									
									
									
									
								
							| @@ -5,7 +5,7 @@ | ||||
|  | ||||
| #include "sh.h" | ||||
|  | ||||
| __RCSID("$MirOS: src/bin/mksh/edit.c,v 1.143 2008/11/12 00:27:54 tg Exp $"); | ||||
| __RCSID("$MirOS: src/bin/mksh/edit.c,v 1.144 2008/11/12 00:54:46 tg Exp $"); | ||||
|  | ||||
| /* tty driver characters we are interested in */ | ||||
| typedef struct { | ||||
| @@ -400,7 +400,7 @@ x_command_glob(int flags, const char *str, int slen, char ***wordsp) | ||||
| 		int i, path_order = 0; | ||||
|  | ||||
| 		info = (struct path_order_info *) | ||||
| 		    alloc(sizeof (struct path_order_info) * nwords, ATEMP); | ||||
| 		    alloc(nwords, sizeof (struct path_order_info), ATEMP); | ||||
| 		for (i = 0; i < nwords; i++) { | ||||
| 			info[i].word = words[i]; | ||||
| 			info[i].base = x_basename(words[i], NULL); | ||||
| @@ -415,7 +415,7 @@ x_command_glob(int flags, const char *str, int slen, char ***wordsp) | ||||
| 		    path_order_cmp); | ||||
| 		for (i = 0; i < nwords; i++) | ||||
| 			words[i] = info[i].word; | ||||
| 		afree((void *)info, ATEMP); | ||||
| 		afree(info, ATEMP); | ||||
| 	} else { | ||||
| 		/* Sort and remove duplicate entries */ | ||||
| 		char **words = (char **)XPptrv(w); | ||||
| @@ -2450,7 +2450,7 @@ x_push(int nchars) | ||||
|  | ||||
| 	strndupx(cp, xcp, nchars, AEDIT); | ||||
| 	if (killstack[killsp]) | ||||
| 		afree((void *)killstack[killsp], AEDIT); | ||||
| 		afree(killstack[killsp], AEDIT); | ||||
| 	killstack[killsp] = cp; | ||||
| 	killsp = (killsp + 1) % KILLSIZE; | ||||
| } | ||||
| @@ -2661,7 +2661,7 @@ x_bind(const char *a1, const char *a2, | ||||
|  | ||||
| 	if ((x_tab[prefix][key] & 0x7F) == XFUNC_ins_string && | ||||
| 	    x_atab[prefix][key]) | ||||
| 		afree((void *)x_atab[prefix][key], AEDIT); | ||||
| 		afree(x_atab[prefix][key], AEDIT); | ||||
| 	x_tab[prefix][key] = f | (hastilde ? 0x80 : 0); | ||||
| 	x_atab[prefix][key] = sp; | ||||
|  | ||||
| @@ -2684,7 +2684,7 @@ x_init_emacs(void) | ||||
| 	AEDIT = anew(); | ||||
| 	x_nextcmd = -1; | ||||
|  | ||||
| 	x_tab = (unsigned char (*)[X_TABSZ])alloc(sizeofN(*x_tab, X_NTABS), AEDIT); | ||||
| 	x_tab = alloc(X_NTABS, sizeof (*x_tab), AEDIT); | ||||
| 	for (j = 0; j < X_TABSZ; j++) | ||||
| 		x_tab[0][j] = XFUNC_insert; | ||||
| 	for (i = 1; i < X_NTABS; i++) | ||||
| @@ -2694,7 +2694,7 @@ x_init_emacs(void) | ||||
| 		x_tab[x_defbindings[i].xdb_tab][x_defbindings[i].xdb_char] | ||||
| 		    = x_defbindings[i].xdb_func; | ||||
|  | ||||
| 	x_atab = (char *(*)[X_TABSZ])alloc(sizeofN(*x_atab, X_NTABS), AEDIT); | ||||
| 	x_atab = alloc(X_NTABS, sizeof (*x_atab), AEDIT); | ||||
| 	for (i = 1; i < X_NTABS; i++) | ||||
| 		for (j = 0; j < X_TABSZ; j++) | ||||
| 			x_atab[i][j] = NULL; | ||||
| @@ -3600,8 +3600,8 @@ x_vi(char *buf, size_t len) | ||||
|  | ||||
| 	if (!wbuf_len || wbuf_len != x_cols - 3) { | ||||
| 		wbuf_len = x_cols - 3; | ||||
| 		wbuf[0] = aresize(wbuf[0], wbuf_len, APERM); | ||||
| 		wbuf[1] = aresize(wbuf[1], wbuf_len, APERM); | ||||
| 		wbuf[0] = aresize(wbuf[0], 1, wbuf_len, APERM); | ||||
| 		wbuf[1] = aresize(wbuf[1], 1, wbuf_len, APERM); | ||||
| 	} | ||||
| 	(void)memset(wbuf[0], ' ', wbuf_len); | ||||
| 	(void)memset(wbuf[1], ' ', wbuf_len); | ||||
| @@ -4130,7 +4130,7 @@ vi_cmd(int argcnt, const char *cmd) | ||||
| 				nlen = strlen(ap->val.s) + 1; | ||||
| 				olen = !macro.p ? 2 : | ||||
| 				    macro.len - (macro.p - macro.buf); | ||||
| 				nbuf = alloc(nlen + 1 + olen, APERM); | ||||
| 				nbuf = alloc(1, nlen + 1 + olen, APERM); | ||||
| 				memcpy(nbuf, ap->val.s, nlen); | ||||
| 				nbuf[nlen++] = cmd[1]; | ||||
| 				if (macro.p) { | ||||
| @@ -4777,8 +4777,8 @@ save_edstate(struct edstate *old) | ||||
| { | ||||
| 	struct edstate *new; | ||||
|  | ||||
| 	new = (struct edstate *)alloc(sizeof (struct edstate), APERM); | ||||
| 	new->cbuf = alloc(old->cbufsize, APERM); | ||||
| 	new = alloc(1, sizeof (struct edstate), APERM); | ||||
| 	new->cbuf = alloc(1, old->cbufsize, APERM); | ||||
| 	memcpy(new->cbuf, old->cbuf, old->linelen); | ||||
| 	new->cbufsize = old->cbufsize; | ||||
| 	new->linelen = old->linelen; | ||||
| @@ -4801,7 +4801,7 @@ static void | ||||
| free_edstate(struct edstate *old) | ||||
| { | ||||
| 	afree(old->cbuf, APERM); | ||||
| 	afree((char *)old, APERM); | ||||
| 	afree(old, APERM); | ||||
| } | ||||
|  | ||||
| /* | ||||
|   | ||||
							
								
								
									
										10
									
								
								eval.c
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								eval.c
									
									
									
									
									
								
							| @@ -2,7 +2,7 @@ | ||||
|  | ||||
| #include "sh.h" | ||||
|  | ||||
| __RCSID("$MirOS: src/bin/mksh/eval.c,v 1.49 2008/10/28 14:32:39 tg Exp $"); | ||||
| __RCSID("$MirOS: src/bin/mksh/eval.c,v 1.50 2008/11/12 00:54:47 tg Exp $"); | ||||
|  | ||||
| #ifdef MKSH_SMALL | ||||
| #define MKSH_NOPWNAM | ||||
| @@ -297,7 +297,7 @@ expand(const char *cp,	/* input word */ | ||||
| 					if (!st->next) { | ||||
| 						SubType *newst; | ||||
|  | ||||
| 						newst = (SubType *)alloc( | ||||
| 						newst = alloc(1, | ||||
| 						    sizeof (SubType), ATEMP); | ||||
| 						newst->next = NULL; | ||||
| 						newst->prev = st; | ||||
| @@ -590,7 +590,7 @@ expand(const char *cp,	/* input word */ | ||||
| 					 */ | ||||
| 					len = strlen(dp) + 1; | ||||
| 					setstr(st->var, | ||||
| 					    debunk((char *)alloc(len, ATEMP), | ||||
| 					    debunk(alloc(1, len, ATEMP), | ||||
| 					    dp, len), KSH_UNWIND_ERROR); | ||||
| 					x.str = str_val(st->var); | ||||
| 					type = XSUB; | ||||
| @@ -770,7 +770,7 @@ expand(const char *cp,	/* input word */ | ||||
| 				    Xlength(ds, dp) == 0) { | ||||
| 					char *p; | ||||
|  | ||||
| 					*(p = alloc(1, ATEMP)) = '\0'; | ||||
| 					*(p = alloc(1, 1, ATEMP)) = '\0'; | ||||
| 					XPput(*wp, p); | ||||
| 				} | ||||
| 				type = XSUBMID; | ||||
| @@ -1474,7 +1474,7 @@ alt_expand(XPtrV *wp, char *start, char *exp_start, char *end, int fdo) | ||||
| 				l1 = brace_start - start; | ||||
| 				l2 = (p - 1) - field_start; | ||||
| 				l3 = end - brace_end; | ||||
| 				new = (char *)alloc(l1 + l2 + l3 + 1, ATEMP); | ||||
| 				new = alloc(1, l1 + l2 + l3 + 1, ATEMP); | ||||
| 				memcpy(new, start, l1); | ||||
| 				memcpy(new + l1, field_start, l2); | ||||
| 				memcpy(new + l1 + l2, brace_end, l3); | ||||
|   | ||||
							
								
								
									
										4
									
								
								exec.c
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								exec.c
									
									
									
									
									
								
							| @@ -2,7 +2,7 @@ | ||||
|  | ||||
| #include "sh.h" | ||||
|  | ||||
| __RCSID("$MirOS: src/bin/mksh/exec.c,v 1.45 2008/10/28 14:32:39 tg Exp $"); | ||||
| __RCSID("$MirOS: src/bin/mksh/exec.c,v 1.46 2008/11/12 00:54:47 tg Exp $"); | ||||
|  | ||||
| static int comexec(struct op *, struct tbl *volatile, const char **, | ||||
|     int volatile); | ||||
| @@ -72,7 +72,7 @@ execute(struct op *volatile t, | ||||
| 	flags &= ~XTIME; | ||||
|  | ||||
| 	if (t->ioact != NULL || t->type == TPIPE || t->type == TCOPROC) { | ||||
| 		e->savefd = (short *)alloc(sizeofN(short, NUFILE), ATEMP); | ||||
| 		e->savefd = alloc(NUFILE, sizeof (short), ATEMP); | ||||
| 		/* initialise to not redirected */ | ||||
| 		memset(e->savefd, 0, sizeofN(short, NUFILE)); | ||||
| 	} | ||||
|   | ||||
							
								
								
									
										4
									
								
								expr.c
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								expr.c
									
									
									
									
									
								
							| @@ -2,7 +2,7 @@ | ||||
|  | ||||
| #include "sh.h" | ||||
|  | ||||
| __RCSID("$MirOS: src/bin/mksh/expr.c,v 1.19 2008/10/28 14:32:40 tg Exp $"); | ||||
| __RCSID("$MirOS: src/bin/mksh/expr.c,v 1.20 2008/11/12 00:54:48 tg Exp $"); | ||||
|  | ||||
| /* The order of these enums is constrained by the order of opinfo[] */ | ||||
| enum token { | ||||
| @@ -544,7 +544,7 @@ tempvar(void) | ||||
| { | ||||
| 	struct tbl *vp; | ||||
|  | ||||
| 	vp = (struct tbl *)alloc(sizeof (struct tbl), ATEMP); | ||||
| 	vp = alloc(1, sizeof (struct tbl), ATEMP); | ||||
| 	vp->flag = ISSET|INTEGER; | ||||
| 	vp->type = 0; | ||||
| 	vp->areap = ATEMP; | ||||
|   | ||||
							
								
								
									
										15
									
								
								funcs.c
									
									
									
									
									
								
							
							
						
						
									
										15
									
								
								funcs.c
									
									
									
									
									
								
							| @@ -5,7 +5,7 @@ | ||||
|  | ||||
| #include "sh.h" | ||||
|  | ||||
| __RCSID("$MirOS: src/bin/mksh/funcs.c,v 1.91 2008/11/12 00:27:55 tg Exp $"); | ||||
| __RCSID("$MirOS: src/bin/mksh/funcs.c,v 1.92 2008/11/12 00:54:48 tg Exp $"); | ||||
|  | ||||
| /* A leading = means assignments before command are kept; | ||||
|  * a leading * means a POSIX special builtin; | ||||
| @@ -202,7 +202,7 @@ c_cd(const char **wp) | ||||
| 		olen = strlen(wp[0]); | ||||
| 		nlen = strlen(wp[1]); | ||||
| 		elen = strlen(current_wd + ilen + olen) + 1; | ||||
| 		dir = allocd = alloc(ilen + nlen + elen, ATEMP); | ||||
| 		dir = allocd = alloc(1, ilen + nlen + elen, ATEMP); | ||||
| 		memcpy(dir, current_wd, ilen); | ||||
| 		memcpy(dir + ilen, wp[1], nlen); | ||||
| 		memcpy(dir + ilen + nlen, current_wd + ilen + olen, elen); | ||||
| @@ -1102,7 +1102,7 @@ c_alias(const char **wp) | ||||
| 		if ((val && !tflag) || (!val && tflag && !Uflag)) { | ||||
| 			if (ap->flag&ALLOC) { | ||||
| 				ap->flag &= ~(ALLOC|ISSET); | ||||
| 				afree((void*)ap->val.s, APERM); | ||||
| 				afree(ap->val.s, APERM); | ||||
| 			} | ||||
| 			/* ignore values for -t (at&t ksh does this) */ | ||||
| 			newval = tflag ? search(alias, path, X_OK, NULL) : val; | ||||
| @@ -1159,7 +1159,7 @@ c_unalias(const char **wp) | ||||
| 		} | ||||
| 		if (ap->flag&ALLOC) { | ||||
| 			ap->flag &= ~(ALLOC|ISSET); | ||||
| 			afree((void*)ap->val.s, APERM); | ||||
| 			afree(ap->val.s, APERM); | ||||
| 		} | ||||
| 		ap->flag &= ~(DEFINED|ISSET|EXPORT); | ||||
| 	} | ||||
| @@ -1170,7 +1170,7 @@ c_unalias(const char **wp) | ||||
| 		for (ktwalk(&ts, t); (ap = ktnext(&ts)); ) { | ||||
| 			if (ap->flag&ALLOC) { | ||||
| 				ap->flag &= ~(ALLOC|ISSET); | ||||
| 				afree((void*)ap->val.s, APERM); | ||||
| 				afree(ap->val.s, APERM); | ||||
| 			} | ||||
| 			ap->flag &= ~(DEFINED|ISSET|EXPORT); | ||||
| 		} | ||||
| @@ -2113,8 +2113,7 @@ c_set(const char **wp) | ||||
| 		while (*++wp != NULL) | ||||
| 			strdupx(*wp, *wp, l->areap); | ||||
| 		l->argc = wp - owp - 1; | ||||
| 		l->argv = (const char **)alloc(sizeofN(char *, l->argc+2), | ||||
| 		     l->areap); | ||||
| 		l->argv = alloc(l->argc + 2, sizeof (char *), l->areap); | ||||
| 		for (wp = l->argv; (*wp++ = *owp++) != NULL; ) | ||||
| 			; | ||||
| 	} | ||||
| @@ -3065,7 +3064,7 @@ c_realpath(const char **wp) | ||||
| 	else { | ||||
| 		char *buf; | ||||
|  | ||||
| 		if (realpath(*wp, (buf = alloc(PATH_MAX, ATEMP))) == NULL) { | ||||
| 		if (realpath(*wp, (buf = alloc(1, PATH_MAX, ATEMP))) == NULL) { | ||||
| 			rv = errno; | ||||
| 			bi_errorf("%s: %s", *wp, strerror(rv)); | ||||
| 		} else | ||||
|   | ||||
							
								
								
									
										14
									
								
								histrap.c
									
									
									
									
									
								
							
							
						
						
									
										14
									
								
								histrap.c
									
									
									
									
									
								
							| @@ -3,7 +3,7 @@ | ||||
|  | ||||
| #include "sh.h" | ||||
|  | ||||
| __RCSID("$MirOS: src/bin/mksh/histrap.c,v 1.74 2008/11/09 20:32:17 tg Exp $"); | ||||
| __RCSID("$MirOS: src/bin/mksh/histrap.c,v 1.75 2008/11/12 00:54:48 tg Exp $"); | ||||
|  | ||||
| /*- | ||||
|  * MirOS: This is the default mapping type, and need not be specified. | ||||
| @@ -68,7 +68,7 @@ c_fc(const char **wp) | ||||
| 				sflag++; | ||||
| 			else { | ||||
| 				size_t len = strlen(p); | ||||
| 				editor = alloc(len + 4, ATEMP); | ||||
| 				editor = alloc(1, len + 4, ATEMP); | ||||
| 				memcpy(editor, p, len); | ||||
| 				memcpy(editor + len, " $_", 4); | ||||
| 			} | ||||
| @@ -414,7 +414,7 @@ histbackup(void) | ||||
|  | ||||
| 	if (histptr >= history && last_line != hist_source->line) { | ||||
| 		hist_source->line--; | ||||
| 		afree((void*)*histptr, APERM); | ||||
| 		afree(*histptr, APERM); | ||||
| 		histptr--; | ||||
| 		last_line = hist_source->line; | ||||
| 	} | ||||
| @@ -504,7 +504,7 @@ sethistsize(int n) | ||||
| 			cursize = n; | ||||
| 		} | ||||
|  | ||||
| 		history = (char **)aresize(history, n*sizeof(char *), APERM); | ||||
| 		history = aresize(history, n, sizeof (char *), APERM); | ||||
|  | ||||
| 		histsize = n; | ||||
| 		histptr = history + cursize; | ||||
| @@ -555,7 +555,7 @@ init_histvec(void) | ||||
| { | ||||
| 	if (history == (char **)NULL) { | ||||
| 		histsize = HISTORYSIZE; | ||||
| 		history = (char **)alloc(histsize * sizeof (char *), APERM); | ||||
| 		history = alloc(histsize, sizeof (char *), APERM); | ||||
| 		histptr = history - 1; | ||||
| 	} | ||||
| } | ||||
| @@ -597,7 +597,7 @@ histsave(int *lnp, const char *cmd, bool dowrite __unused, bool ignoredups) | ||||
| 	hp = histptr; | ||||
|  | ||||
| 	if (++hp >= history + histsize) { /* remove oldest command */ | ||||
| 		afree((void*)*history, APERM); | ||||
| 		afree(*history, APERM); | ||||
| 		for (hp = history; hp < history + histsize - 1; hp++) | ||||
| 			hp[0] = hp[1]; | ||||
| 	} | ||||
| @@ -884,7 +884,7 @@ histinsert(Source *s, int lno, const char *line) | ||||
| 	if (lno >= s->line - (histptr - history) && lno <= s->line) { | ||||
| 		hp = &histptr[lno - s->line]; | ||||
| 		if (*hp) | ||||
| 			afree((void*)*hp, APERM); | ||||
| 			afree(*hp, APERM); | ||||
| 		strdupx(*hp, line, APERM); | ||||
| 	} | ||||
| } | ||||
|   | ||||
							
								
								
									
										6
									
								
								jobs.c
									
									
									
									
									
								
							
							
						
						
									
										6
									
								
								jobs.c
									
									
									
									
									
								
							| @@ -2,7 +2,7 @@ | ||||
|  | ||||
| #include "sh.h" | ||||
|  | ||||
| __RCSID("$MirOS: src/bin/mksh/jobs.c,v 1.39 2008/11/09 20:32:18 tg Exp $"); | ||||
| __RCSID("$MirOS: src/bin/mksh/jobs.c,v 1.40 2008/11/12 00:54:49 tg Exp $"); | ||||
|  | ||||
| /* Order important! */ | ||||
| #define PRUNNING	0 | ||||
| @@ -1397,7 +1397,7 @@ new_job(void) | ||||
| 		newj = free_jobs; | ||||
| 		free_jobs = free_jobs->next; | ||||
| 	} else | ||||
| 		newj = (Job *)alloc(sizeof (Job), APERM); | ||||
| 		newj = alloc(1, sizeof (Job), APERM); | ||||
|  | ||||
| 	/* brute force method */ | ||||
| 	for (i = 1; ; i++) { | ||||
| @@ -1424,7 +1424,7 @@ new_proc(void) | ||||
| 		p = free_procs; | ||||
| 		free_procs = free_procs->next; | ||||
| 	} else | ||||
| 		p = (Proc *)alloc(sizeof (Proc), APERM); | ||||
| 		p = alloc(1, sizeof (Proc), APERM); | ||||
|  | ||||
| 	return p; | ||||
| } | ||||
|   | ||||
							
								
								
									
										9
									
								
								lex.c
									
									
									
									
									
								
							
							
						
						
									
										9
									
								
								lex.c
									
									
									
									
									
								
							| @@ -2,7 +2,7 @@ | ||||
|  | ||||
| #include "sh.h" | ||||
|  | ||||
| __RCSID("$MirOS: src/bin/mksh/lex.c,v 1.75 2008/11/11 23:50:29 tg Exp $"); | ||||
| __RCSID("$MirOS: src/bin/mksh/lex.c,v 1.76 2008/11/12 00:54:49 tg Exp $"); | ||||
|  | ||||
| /* | ||||
|  * states while lexing word | ||||
| @@ -776,8 +776,7 @@ yylex(int cf) | ||||
|  | ||||
| 	dp = Xstring(ws, wp); | ||||
| 	if ((c == '<' || c == '>' || c == '&') && state == SBASE) { | ||||
| 		struct ioword *iop = (struct ioword *)alloc(sizeof (*iop), | ||||
| 		    ATEMP); | ||||
| 		struct ioword *iop = alloc(1, sizeof (struct ioword), ATEMP); | ||||
|  | ||||
| 		if (Xlength(ws, wp) == 0) | ||||
| 			iop->unit = c == '<' ? 0 : 1; | ||||
| @@ -1035,7 +1034,7 @@ pushs(int type, PArea areap) | ||||
| { | ||||
| 	Source *s; | ||||
|  | ||||
| 	s = (Source *)alloc(sizeof (Source), areap); | ||||
| 	s = alloc(1, sizeof (Source), areap); | ||||
| 	s->type = type; | ||||
| 	s->str = null; | ||||
| 	s->start = NULL; | ||||
| @@ -1518,7 +1517,7 @@ getsc_bn(void) | ||||
| static Lex_state * | ||||
| push_state_(State_info *si, Lex_state *old_end) | ||||
| { | ||||
| 	Lex_state *new = alloc(sizeof (Lex_state) * STATE_BSIZE, ATEMP); | ||||
| 	Lex_state *new = alloc(STATE_BSIZE, sizeof (Lex_state), ATEMP); | ||||
|  | ||||
| 	new[0].ls_info.base = old_end; | ||||
| 	si->base = &new[0]; | ||||
|   | ||||
							
								
								
									
										19
									
								
								main.c
									
									
									
									
									
								
							
							
						
						
									
										19
									
								
								main.c
									
									
									
									
									
								
							| @@ -13,7 +13,7 @@ | ||||
| #include <locale.h> | ||||
| #endif | ||||
|  | ||||
| __RCSID("$MirOS: src/bin/mksh/main.c,v 1.108 2008/11/12 00:27:56 tg Exp $"); | ||||
| __RCSID("$MirOS: src/bin/mksh/main.c,v 1.109 2008/11/12 00:54:49 tg Exp $"); | ||||
|  | ||||
| extern char **environ; | ||||
|  | ||||
| @@ -131,7 +131,7 @@ main(int argc, const char *argv[]) | ||||
| #else | ||||
| #ifdef _CS_PATH | ||||
| 	if ((k = confstr(_CS_PATH, NULL, 0)) != (size_t)-1 && k > 0 && | ||||
| 	    confstr(_CS_PATH, cp = alloc(k + 1, APERM), k + 1) == k + 1) | ||||
| 	    confstr(_CS_PATH, cp = alloc(1, k + 1, APERM), k + 1) == k + 1) | ||||
| 		def_path = cp; | ||||
| 	else | ||||
| #endif | ||||
| @@ -607,7 +607,7 @@ newenv(int type) | ||||
| { | ||||
| 	struct env *ep; | ||||
|  | ||||
| 	ep = (struct env *)alloc(sizeof (*ep), ATEMP); | ||||
| 	ep = alloc(1, sizeof (struct env), ATEMP); | ||||
| 	ep->type = type; | ||||
| 	ep->flags = 0; | ||||
| 	ep->areap = anew(); | ||||
| @@ -1153,7 +1153,7 @@ maketemp(PArea ap, Temp_type type, struct temp **tlist) | ||||
| 	pathname = tempnam(dir, "mksh."); | ||||
| 	len = ((pathname == NULL) ? 0 : strlen(pathname)) + 1; | ||||
| #endif | ||||
| 	tp = (struct temp *)alloc(sizeof (struct temp) + len, ap); | ||||
| 	tp = alloc(1, sizeof (struct temp) + len, ap); | ||||
| 	tp->name = (char *)&tp[1]; | ||||
| #if !HAVE_MKSTEMP | ||||
| 	if (pathname == NULL) | ||||
| @@ -1213,7 +1213,7 @@ texpand(struct table *tp, int nsize) | ||||
| 	struct tbl **ntblp, **otblp = tp->tbls; | ||||
| 	int osize = tp->size; | ||||
|  | ||||
| 	ntblp = (struct tbl **)alloc(sizeofN(struct tbl *, nsize), tp->areap); | ||||
| 	ntblp = alloc(nsize, sizeof (struct tbl *), tp->areap); | ||||
| 	for (i = 0; i < nsize; i++) | ||||
| 		ntblp[i] = NULL; | ||||
| 	tp->size = nsize; | ||||
| @@ -1231,10 +1231,10 @@ texpand(struct table *tp, int nsize) | ||||
| 				*p = tblp; | ||||
| 				tp->nfree--; | ||||
| 			} else if (!(tblp->flag & FINUSE)) { | ||||
| 				afree((void *)tblp, tp->areap); | ||||
| 				afree(tblp, tp->areap); | ||||
| 			} | ||||
| 		} | ||||
| 	afree((void *)otblp, tp->areap); | ||||
| 	afree(otblp, tp->areap); | ||||
| } | ||||
|  | ||||
| /* table */ | ||||
| @@ -1286,8 +1286,7 @@ ktenter(struct table *tp, const char *n, unsigned int h) | ||||
| 	} | ||||
| 	/* create new tbl entry */ | ||||
| 	len = strlen(n) + 1; | ||||
| 	p = (struct tbl *)alloc(offsetof(struct tbl, name[0])+len, | ||||
| 	    tp->areap); | ||||
| 	p = alloc(1, offsetof(struct tbl, name[0]) + len, tp->areap); | ||||
| 	p->flag = 0; | ||||
| 	p->type = 0; | ||||
| 	p->areap = tp->areap; | ||||
| @@ -1334,7 +1333,7 @@ ktsort(struct table *tp) | ||||
| 	size_t i; | ||||
| 	struct tbl **p, **sp, **dp; | ||||
|  | ||||
| 	p = (struct tbl **)alloc(sizeofN(struct tbl *, tp->size + 1), ATEMP); | ||||
| 	p = alloc(tp->size + 1, sizeof (struct tbl *), ATEMP); | ||||
| 	sp = tp->tbls;		/* source */ | ||||
| 	dp = p;			/* dest */ | ||||
| 	for (i = 0; i < (size_t)tp->size; i++) | ||||
|   | ||||
							
								
								
									
										21
									
								
								misc.c
									
									
									
									
									
								
							
							
						
						
									
										21
									
								
								misc.c
									
									
									
									
									
								
							| @@ -6,7 +6,7 @@ | ||||
| #include <grp.h> | ||||
| #endif | ||||
|  | ||||
| __RCSID("$MirOS: src/bin/mksh/misc.c,v 1.90 2008/11/11 23:50:30 tg Exp $"); | ||||
| __RCSID("$MirOS: src/bin/mksh/misc.c,v 1.91 2008/11/12 00:54:50 tg Exp $"); | ||||
|  | ||||
| #undef USE_CHVT | ||||
| #if defined(TIOCSCTTY) && !defined(MKSH_SMALL) | ||||
| @@ -70,7 +70,7 @@ Xcheck_grow_(XString *xsp, const char *xp, unsigned int more) | ||||
| 	const char *old_beg = xsp->beg; | ||||
|  | ||||
| 	xsp->len += more > xsp->len ? more : xsp->len; | ||||
| 	xsp->beg = aresize(xsp->beg, xsp->len + 8, xsp->areap); | ||||
| 	xsp->beg = aresize(xsp->beg, 1, xsp->len + 8, xsp->areap); | ||||
| 	xsp->end = xsp->beg + xsp->len; | ||||
| 	return xsp->beg + (xp - old_beg); | ||||
| } | ||||
| @@ -493,8 +493,7 @@ gmatchx(const char *s, const char *p, bool isfile) | ||||
| 	if (!isfile && !has_globbing(p, pe)) { | ||||
| 		size_t len = pe - p + 1; | ||||
| 		char tbuf[64]; | ||||
| 		char *t = len <= sizeof(tbuf) ? tbuf : | ||||
| 		    (char *)alloc(len, ATEMP); | ||||
| 		char *t = len <= sizeof(tbuf) ? tbuf : alloc(1, len, ATEMP); | ||||
| 		debunk(t, p, len); | ||||
| 		return !strcmp(t, s); | ||||
| 	} | ||||
| @@ -934,7 +933,7 @@ print_columns(struct shf *shf, int n, | ||||
|     char *(*func) (const void *, int, char *, int), | ||||
|     const void *arg, int max_width, int prefcol) | ||||
| { | ||||
| 	char *str = (char *)alloc(max_width + 1, ATEMP); | ||||
| 	char *str = alloc(1, max_width + 1, ATEMP); | ||||
| 	int i, r, c, rows, cols, nspace; | ||||
|  | ||||
| 	/* max_width + 1 for the space.  Note that no space | ||||
| @@ -1049,8 +1048,8 @@ ksh_get_wd(size_t *dlen) | ||||
| 	char *ret, *b; | ||||
| 	size_t len = 1; | ||||
|  | ||||
| 	if ((ret = getcwd((b = alloc(PATH_MAX + 1, ATEMP)), PATH_MAX))) | ||||
| 		ret = aresize(b, len = (strlen(b) + 1), ATEMP); | ||||
| 	if ((ret = getcwd((b = alloc(1, PATH_MAX + 1, ATEMP)), PATH_MAX))) | ||||
| 		ret = aresize(b, 1, len = (strlen(b) + 1), ATEMP); | ||||
| 	else | ||||
| 		afree(b, ATEMP); | ||||
|  | ||||
| @@ -1228,8 +1227,10 @@ set_current_wd(char *pathl) | ||||
| 	} else | ||||
| 		len = strlen(p) + 1; | ||||
|  | ||||
| 	if (len > current_wd_size) | ||||
| 		current_wd = aresize(current_wd, current_wd_size = len, APERM); | ||||
| 	if (len > current_wd_size) { | ||||
| 		afree(current_wd, APERM); | ||||
| 		current_wd = alloc(1, current_wd_size = len, APERM); | ||||
| 	} | ||||
| 	memcpy(current_wd, p, len); | ||||
| 	if (p != pathl && p != null) | ||||
| 		afree(p, ATEMP); | ||||
| @@ -1430,7 +1431,7 @@ strndup_(const char *src, size_t len, PArea ap) | ||||
| 	char *dst = NULL; | ||||
|  | ||||
| 	if (src != NULL) { | ||||
| 		dst = alloc(++len, ap); | ||||
| 		dst = alloc(1, ++len, ap); | ||||
| 		strlcpy(dst, src, len); | ||||
| 	} | ||||
| 	return (dst); | ||||
|   | ||||
							
								
								
									
										34
									
								
								sh.h
									
									
									
									
									
								
							
							
						
						
									
										34
									
								
								sh.h
									
									
									
									
									
								
							| @@ -103,7 +103,7 @@ | ||||
| #define __SCCSID(x)	__IDSTRING(sccsid,x) | ||||
|  | ||||
| #ifdef EXTERN | ||||
| __RCSID("$MirOS: src/bin/mksh/sh.h,v 1.254 2008/11/12 00:27:56 tg Exp $"); | ||||
| __RCSID("$MirOS: src/bin/mksh/sh.h,v 1.255 2008/11/12 00:54:50 tg Exp $"); | ||||
| #endif | ||||
| #define MKSH_VERSION "R36 2008/11/10" | ||||
|  | ||||
| @@ -363,7 +363,7 @@ char *ucstrstr(char *, const char *); | ||||
| 									\ | ||||
| 	if (strdup_src != NULL) {					\ | ||||
| 		size_t strdup_len = strlen(strdup_src) + 1;		\ | ||||
| 		strdup_dst = alloc(strdup_len, (ap));			\ | ||||
| 		strdup_dst = alloc(1, strdup_len, (ap));		\ | ||||
| 		strlcpy(strdup_dst, strdup_src, strdup_len);		\ | ||||
| 	}								\ | ||||
| 	(d) = strdup_dst;						\ | ||||
| @@ -374,7 +374,7 @@ char *ucstrstr(char *, const char *); | ||||
| 									\ | ||||
| 	if (strdup_src != NULL) {					\ | ||||
| 		size_t strdup_len = (n) + 1;				\ | ||||
| 		strdup_dst = alloc(strdup_len, (ap));			\ | ||||
| 		strdup_dst = alloc(1, strdup_len, (ap));		\ | ||||
| 		strlcpy(strdup_dst, strdup_src, strdup_len);		\ | ||||
| 	}								\ | ||||
| 	(d) = strdup_dst;						\ | ||||
| @@ -1065,7 +1065,7 @@ typedef char *XStringP; | ||||
| #define XinitN(xs, length, area) do {				\ | ||||
| 	(xs).len = (length);					\ | ||||
| 	(xs).areap = (area);					\ | ||||
| 	(xs).beg = alloc((xs).len + X_EXTRA, (xs).areap);	\ | ||||
| 	(xs).beg = alloc(1, (xs).len + X_EXTRA, (xs).areap);	\ | ||||
| 	(xs).end = (xs).beg + (xs).len;				\ | ||||
| } while (0) | ||||
| #define Xinit(xs, xp, length, area) do {			\ | ||||
| @@ -1087,10 +1087,10 @@ typedef char *XStringP; | ||||
| #define Xcheck(xs, xp)	XcheckN((xs), (xp), 1) | ||||
|  | ||||
| /* free string */ | ||||
| #define Xfree(xs, xp)	afree((void*)(xs).beg, (xs).areap) | ||||
| #define Xfree(xs, xp)	afree((xs).beg, (xs).areap) | ||||
|  | ||||
| /* close, return string */ | ||||
| #define Xclose(xs, xp)	(char*)aresize((void*)(xs).beg, \ | ||||
| #define Xclose(xs, xp)	aresize((void*)(xs).beg, 1, \ | ||||
| 			    (size_t)((xp) - (xs).beg), (xs).areap) | ||||
| /* begin of string */ | ||||
| #define Xstring(xs, xp)	((xs).beg) | ||||
| @@ -1114,16 +1114,16 @@ typedef struct XPtrV { | ||||
|  | ||||
| #define XPinit(x, n) do {					\ | ||||
| 	void **vp__;						\ | ||||
| 	vp__ = (void**)alloc(sizeofN(void*, (n)), ATEMP);	\ | ||||
| 	vp__ = alloc((n), sizeof (void *), ATEMP);		\ | ||||
| 	(x).cur = (x).beg = vp__;				\ | ||||
| 	(x).end = vp__ + (n);					\ | ||||
| } while (0) | ||||
|  | ||||
| #define XPput(x, p) do {					\ | ||||
| 	if ((x).cur >= (x).end) {				\ | ||||
| 		int n = XPsize(x);				\ | ||||
| 		(x).beg = (void**) aresize((void*) (x).beg,	\ | ||||
| 		    sizeofN(void *, n * 2), ATEMP);		\ | ||||
| 		size_t n = XPsize(x);				\ | ||||
| 		(x).beg = aresize((void*)(x).beg,		\ | ||||
| 		    n * 2, sizeof (void *), ATEMP);		\ | ||||
| 		(x).cur = (x).beg + n;				\ | ||||
| 		(x).end = (x).cur + n;				\ | ||||
| 	}							\ | ||||
| @@ -1133,10 +1133,10 @@ typedef struct XPtrV { | ||||
| #define XPptrv(x)	((x).beg) | ||||
| #define XPsize(x)	((x).cur - (x).beg) | ||||
|  | ||||
| #define XPclose(x)	(void**)aresize((void*)(x).beg, \ | ||||
| 			    sizeofN(void *, XPsize(x)), ATEMP) | ||||
| #define XPclose(x)	aresize((void*)(x).beg, \ | ||||
| 			    XPsize(x), sizeof (void *), ATEMP) | ||||
|  | ||||
| #define XPfree(x)	afree((void *)(x).beg, ATEMP) | ||||
| #define XPfree(x)	afree((x).beg, ATEMP) | ||||
|  | ||||
| #define IDENT	64 | ||||
|  | ||||
| @@ -1248,11 +1248,11 @@ EXTERN int histsize;	/* history size */ | ||||
| EXTERN struct timeval j_usrtime, j_systime; | ||||
|  | ||||
| /* alloc.c */ | ||||
| PArea anew(void);		/* cannot fail */ | ||||
| PArea anew(void);			/* cannot fail */ | ||||
| void adelete(PArea *); | ||||
| void *alloc(size_t, PArea);	/* cannot fail */ | ||||
| void *aresize(void *, size_t, PArea); | ||||
| void afree(void *, PArea);	/* can take NULL */ | ||||
| void *alloc(size_t, size_t, PArea);	/* cannot fail */ | ||||
| void *aresize(void *, size_t, size_t, PArea); | ||||
| void afree(void *, PArea);		/* can take NULL */ | ||||
| /* edit.c */ | ||||
| void x_init(void); | ||||
| int x_read(char *, size_t); | ||||
|   | ||||
							
								
								
									
										15
									
								
								shf.c
									
									
									
									
									
								
							
							
						
						
									
										15
									
								
								shf.c
									
									
									
									
									
								
							| @@ -2,7 +2,7 @@ | ||||
|  | ||||
| #include "sh.h" | ||||
|  | ||||
| __RCSID("$MirOS: src/bin/mksh/shf.c,v 1.22 2008/10/10 21:30:43 tg Exp $"); | ||||
| __RCSID("$MirOS: src/bin/mksh/shf.c,v 1.23 2008/11/12 00:54:51 tg Exp $"); | ||||
|  | ||||
| /* flags to shf_emptybuf() */ | ||||
| #define EB_READSW	0x01	/* about to switch to reading */ | ||||
| @@ -29,7 +29,7 @@ shf_open(const char *name, int oflags, int mode, int sflags) | ||||
| 	int fd; | ||||
|  | ||||
| 	/* Done before open so if alloca fails, fd won't be lost. */ | ||||
| 	shf = (struct shf *)alloc(sizeof (struct shf) + bsize, ATEMP); | ||||
| 	shf = alloc(1, sizeof (struct shf) + bsize, ATEMP); | ||||
| 	shf->areap = ATEMP; | ||||
| 	shf->buf = (unsigned char *)&shf[1]; | ||||
| 	shf->bsize = bsize; | ||||
| @@ -92,12 +92,12 @@ shf_fdopen(int fd, int sflags, struct shf *shf) | ||||
|  | ||||
| 	if (shf) { | ||||
| 		if (bsize) { | ||||
| 			shf->buf = (unsigned char *)alloc(bsize, ATEMP); | ||||
| 			shf->buf = alloc(1, bsize, ATEMP); | ||||
| 			sflags |= SHF_ALLOCB; | ||||
| 		} else | ||||
| 			shf->buf = NULL; | ||||
| 	} else { | ||||
| 		shf = (struct shf *)alloc(sizeof (struct shf) + bsize, ATEMP); | ||||
| 		shf = alloc(1, sizeof (struct shf) + bsize, ATEMP); | ||||
| 		shf->buf = (unsigned char *)&shf[1]; | ||||
| 		sflags |= SHF_ALLOCS; | ||||
| 	} | ||||
| @@ -180,7 +180,7 @@ shf_sopen(char *buf, int bsize, int sflags, struct shf *shf) | ||||
| 		internal_errorf("shf_sopen: flags 0x%x", sflags); | ||||
|  | ||||
| 	if (!shf) { | ||||
| 		shf = (struct shf *)alloc(sizeof (struct shf), ATEMP); | ||||
| 		shf = alloc(1, sizeof (struct shf), ATEMP); | ||||
| 		sflags |= SHF_ALLOCS; | ||||
| 	} | ||||
| 	shf->areap = ATEMP; | ||||
| @@ -188,7 +188,7 @@ shf_sopen(char *buf, int bsize, int sflags, struct shf *shf) | ||||
| 		if (bsize <= 0) | ||||
| 			bsize = 64; | ||||
| 		sflags |= SHF_ALLOCB; | ||||
| 		buf = alloc(bsize, shf->areap); | ||||
| 		buf = alloc(1, bsize, shf->areap); | ||||
| 	} | ||||
| 	shf->fd = -1; | ||||
| 	shf->buf = shf->rp = shf->wp = (unsigned char *)buf; | ||||
| @@ -323,8 +323,7 @@ shf_emptybuf(struct shf *shf, int flags) | ||||
| 		    !(shf->flags & SHF_ALLOCB)) | ||||
| 			return EOF; | ||||
| 		/* allocate more space for buffer */ | ||||
| 		nbuf = (unsigned char *)aresize(shf->buf, shf->wbsize * 2, | ||||
| 		    shf->areap); | ||||
| 		nbuf = aresize(shf->buf, 2, shf->wbsize, shf->areap); | ||||
| 		shf->rp = nbuf + (shf->rp - shf->buf); | ||||
| 		shf->wp = nbuf + (shf->wp - shf->buf); | ||||
| 		shf->rbsize += shf->wbsize; | ||||
|   | ||||
							
								
								
									
										25
									
								
								syn.c
									
									
									
									
									
								
							
							
						
						
									
										25
									
								
								syn.c
									
									
									
									
									
								
							| @@ -2,7 +2,7 @@ | ||||
|  | ||||
| #include "sh.h" | ||||
|  | ||||
| __RCSID("$MirOS: src/bin/mksh/syn.c,v 1.29 2008/11/09 19:48:02 tg Exp $"); | ||||
| __RCSID("$MirOS: src/bin/mksh/syn.c,v 1.30 2008/11/12 00:54:51 tg Exp $"); | ||||
|  | ||||
| struct nesting_state { | ||||
| 	int start_token;	/* token than began nesting (eg, FOR) */ | ||||
| @@ -170,7 +170,7 @@ synio(int cf) | ||||
| 		iop->name = yylval.cp; | ||||
|  | ||||
| 	if (iop->flag & IOBASH) { | ||||
| 		nextiop = (struct ioword *)alloc(sizeof (*iop), ATEMP); | ||||
| 		nextiop = alloc(1, sizeof (*iop), ATEMP); | ||||
|  | ||||
| 		iop->flag &= ~IOBASH; | ||||
| 		nextiop->unit = 2; | ||||
| @@ -204,8 +204,7 @@ get_command(int cf) | ||||
| 	XPtrV args, vars; | ||||
| 	struct nesting_state old_nesting; | ||||
|  | ||||
| 	iops = (struct ioword **)alloc(sizeofN(struct ioword *, NUFILE+1), | ||||
| 	    ATEMP); | ||||
| 	iops = alloc(NUFILE + 1, sizeof (struct ioword *), ATEMP); | ||||
| 	XPinit(args, 16); | ||||
| 	XPinit(vars, 16); | ||||
|  | ||||
| @@ -213,7 +212,7 @@ get_command(int cf) | ||||
| 	switch (c = token(cf|KEYWORD|ALIAS|VARASN)) { | ||||
| 	default: | ||||
| 		REJECT; | ||||
| 		afree((void*) iops, ATEMP); | ||||
| 		afree(iops, ATEMP); | ||||
| 		XPfree(args); | ||||
| 		XPfree(vars); | ||||
| 		return NULL; /* empty line */ | ||||
| @@ -412,7 +411,7 @@ get_command(int cf) | ||||
| 		syniocf &= ~(KEYWORD|ALIAS); | ||||
| 		t = pipeline(0); | ||||
| 		if (t) { | ||||
| 			t->str = alloc(2, ATEMP); | ||||
| 			t->str = alloc(1, 2, ATEMP); | ||||
| 			t->str[0] = '\0';	/* TF_* flags */ | ||||
| 			t->str[1] = '\0'; | ||||
| 		} | ||||
| @@ -432,12 +431,11 @@ get_command(int cf) | ||||
| 	} | ||||
|  | ||||
| 	if (iopn == 0) { | ||||
| 		afree((void*)iops, ATEMP); | ||||
| 		afree(iops, ATEMP); | ||||
| 		t->ioact = NULL; | ||||
| 	} else { | ||||
| 		iops[iopn++] = NULL; | ||||
| 		iops = (struct ioword **) aresize((void*) iops, | ||||
| 		    sizeofN(struct ioword *, iopn), ATEMP); | ||||
| 		iops = aresize(iops, iopn, sizeof (struct ioword *), ATEMP); | ||||
| 		t->ioact = iops; | ||||
| 	} | ||||
|  | ||||
| @@ -612,14 +610,13 @@ function_body(char *name, | ||||
| 		 * be used as input), we pretend there is a colon here. | ||||
| 		 */ | ||||
| 		t->left = newtp(TCOM); | ||||
| 		t->left->args = (const char **)alloc(sizeof (char *) * 2, | ||||
| 		    ATEMP); | ||||
| 		t->left->args[0] = tv = alloc(sizeof (char) * 3, ATEMP); | ||||
| 		t->left->args = alloc(2, sizeof (char *), ATEMP); | ||||
| 		t->left->args[0] = tv = alloc(3, sizeof (char), ATEMP); | ||||
| 		tv[0] = CHAR; | ||||
| 		tv[1] = ':'; | ||||
| 		tv[2] = EOS; | ||||
| 		t->left->args[1] = NULL; | ||||
| 		t->left->vars = (char **)alloc(sizeof (char *), ATEMP); | ||||
| 		t->left->vars = alloc(1, sizeof (char *), ATEMP); | ||||
| 		t->left->vars[0] = NULL; | ||||
| 		t->left->lineno = 1; | ||||
| 	} | ||||
| @@ -796,7 +793,7 @@ newtp(int type) | ||||
| { | ||||
| 	struct op *t; | ||||
|  | ||||
| 	t = (struct op *)alloc(sizeof (*t), ATEMP); | ||||
| 	t = alloc(1, sizeof (struct op), ATEMP); | ||||
| 	t->type = type; | ||||
| 	t->u.evalflags = 0; | ||||
| 	t->args = NULL; | ||||
|   | ||||
							
								
								
									
										38
									
								
								tree.c
									
									
									
									
									
								
							
							
						
						
									
										38
									
								
								tree.c
									
									
									
									
									
								
							| @@ -2,7 +2,7 @@ | ||||
|  | ||||
| #include "sh.h" | ||||
|  | ||||
| __RCSID("$MirOS: src/bin/mksh/tree.c,v 1.22 2008/11/11 23:50:31 tg Exp $"); | ||||
| __RCSID("$MirOS: src/bin/mksh/tree.c,v 1.23 2008/11/12 00:54:51 tg Exp $"); | ||||
|  | ||||
| #define INDENT	4 | ||||
|  | ||||
| @@ -421,7 +421,7 @@ tcopy(struct op *t, PArea ap) | ||||
| 	if (t == NULL) | ||||
| 		return NULL; | ||||
|  | ||||
| 	r = (struct op *)alloc(sizeof (struct op), ap); | ||||
| 	r = alloc(1, sizeof (struct op), ap); | ||||
|  | ||||
| 	r->type = t->type; | ||||
| 	r->u.evalflags = t->u.evalflags; | ||||
| @@ -436,8 +436,8 @@ tcopy(struct op *t, PArea ap) | ||||
| 	else { | ||||
| 		for (tw = (const char **)t->vars; *tw++ != NULL; ) | ||||
| 			; | ||||
| 		rw = r->vars = (char **)alloc((tw - | ||||
| 		    (const char **)t->vars + 1) * sizeof (*tw), ap); | ||||
| 		rw = r->vars = alloc((tw - (const char **)t->vars + 1), | ||||
| 		    sizeof (*tw), ap); | ||||
| 		for (tw = (const char **)t->vars; *tw != NULL; ) | ||||
| 			*rw++ = wdcopy(*tw++, ap); | ||||
| 		*rw = NULL; | ||||
| @@ -448,8 +448,8 @@ tcopy(struct op *t, PArea ap) | ||||
| 	else { | ||||
| 		for (tw = t->args; *tw++ != NULL; ) | ||||
| 			; | ||||
| 		r->args = (const char **)(rw = (char **)alloc((tw - | ||||
| 		    t->args + 1) * sizeof (*tw), ap)); | ||||
| 		r->args = (const char **)(rw = alloc((tw - t->args + 1), | ||||
| 		    sizeof (*tw), ap)); | ||||
| 		for (tw = t->args; *tw != NULL; ) | ||||
| 			*rw++ = wdcopy(*tw++, ap); | ||||
| 		*rw = NULL; | ||||
| @@ -468,7 +468,7 @@ char * | ||||
| wdcopy(const char *wp, PArea ap) | ||||
| { | ||||
| 	size_t len = wdscan(wp, EOS) - wp; | ||||
| 	return memcpy(alloc(len, ap), wp, len); | ||||
| 	return memcpy(alloc(1, len, ap), wp, len); | ||||
| } | ||||
|  | ||||
| /* return the position of prefix c in wp plus 1 */ | ||||
| @@ -618,13 +618,13 @@ iocopy(struct ioword **iow, PArea ap) | ||||
|  | ||||
| 	for (ior = iow; *ior++ != NULL; ) | ||||
| 		; | ||||
| 	ior = (struct ioword **)alloc((ior - iow + 1) * sizeof (*ior), ap); | ||||
| 	ior = alloc((ior - iow + 1), sizeof (struct ioword *), ap); | ||||
|  | ||||
| 	for (i = 0; iow[i] != NULL; i++) { | ||||
| 		struct ioword *p, *q; | ||||
|  | ||||
| 		p = iow[i]; | ||||
| 		q = (struct ioword *)alloc(sizeof (*p), ap); | ||||
| 		q = alloc(1, sizeof (struct ioword), ap); | ||||
| 		ior[i] = q; | ||||
| 		*q = *p; | ||||
| 		if (p->name != NULL) | ||||
| @@ -651,12 +651,12 @@ tfree(struct op *t, PArea ap) | ||||
| 		return; | ||||
|  | ||||
| 	if (t->str != NULL) | ||||
| 		afree((void*)t->str, ap); | ||||
| 		afree(t->str, ap); | ||||
|  | ||||
| 	if (t->vars != NULL) { | ||||
| 		for (w = t->vars; *w != NULL; w++) | ||||
| 			afree((void*)*w, ap); | ||||
| 		afree((void*)t->vars, ap); | ||||
| 			afree(*w, ap); | ||||
| 		afree(t->vars, ap); | ||||
| 	} | ||||
|  | ||||
| 	if (t->args != NULL) { | ||||
| @@ -664,8 +664,8 @@ tfree(struct op *t, PArea ap) | ||||
| 		/* XXX we assume the caller is right */ | ||||
| 		cw.ro = t->args; | ||||
| 		for (w = cw.rw; *w != NULL; w++) | ||||
| 			afree((void*)*w, ap); | ||||
| 		afree((void*)t->args, ap); | ||||
| 			afree(*w, ap); | ||||
| 		afree(t->args, ap); | ||||
| 	} | ||||
|  | ||||
| 	if (t->ioact != NULL) | ||||
| @@ -674,7 +674,7 @@ tfree(struct op *t, PArea ap) | ||||
| 	tfree(t->left, ap); | ||||
| 	tfree(t->right, ap); | ||||
|  | ||||
| 	afree((void*)t, ap); | ||||
| 	afree(t, ap); | ||||
| } | ||||
|  | ||||
| static void | ||||
| @@ -685,12 +685,12 @@ iofree(struct ioword **iow, PArea ap) | ||||
|  | ||||
| 	for (iop = iow; (p = *iop++) != NULL; ) { | ||||
| 		if (p->name != NULL) | ||||
| 			afree((void*)p->name, ap); | ||||
| 			afree(p->name, ap); | ||||
| 		if (p->delim != NULL) | ||||
| 			afree((void*)p->delim, ap); | ||||
| 			afree(p->delim, ap); | ||||
| 		if (p->heredoc != NULL) | ||||
| 			afree((void*)p->heredoc, ap); | ||||
| 		afree((void*)p, ap); | ||||
| 			afree(p->heredoc, ap); | ||||
| 		afree(p, ap); | ||||
| 	} | ||||
| 	afree(iow, ap); | ||||
| } | ||||
|   | ||||
							
								
								
									
										24
									
								
								var.c
									
									
									
									
									
								
							
							
						
						
									
										24
									
								
								var.c
									
									
									
									
									
								
							| @@ -2,7 +2,7 @@ | ||||
|  | ||||
| #include "sh.h" | ||||
|  | ||||
| __RCSID("$MirOS: src/bin/mksh/var.c,v 1.59 2008/11/12 00:27:57 tg Exp $"); | ||||
| __RCSID("$MirOS: src/bin/mksh/var.c,v 1.60 2008/11/12 00:54:52 tg Exp $"); | ||||
|  | ||||
| /* | ||||
|  * Variables | ||||
| @@ -37,7 +37,7 @@ newblock(void) | ||||
| 	struct block *l; | ||||
| 	static const char *empty[] = { null }; | ||||
|  | ||||
| 	l = (struct block *)alloc(sizeof (struct block), ATEMP); | ||||
| 	l = alloc(1, sizeof (struct block), ATEMP); | ||||
| 	l->flags = 0; | ||||
| 	l->areap = anew();	/* TODO: could use e->area */ | ||||
| 	if (!e->loc) { | ||||
| @@ -367,7 +367,7 @@ setstr(struct tbl *vq, const char *s, int error_ok) | ||||
| 				internal_errorf( | ||||
| 				    "setstr: %s=%s: assigning to self", | ||||
| 				    vq->name, s); | ||||
| 			afree((void*)vq->val.s, vq->areap); | ||||
| 			afree(vq->val.s, vq->areap); | ||||
| 		} | ||||
| 		vq->flag &= ~(ISSET|ALLOC); | ||||
| 		vq->type = 0; | ||||
| @@ -523,7 +523,7 @@ formatstr(struct tbl *vp, const char *s) | ||||
| 	} else | ||||
| 		nlen = olen; | ||||
|  | ||||
| 	p = (char *)alloc((psiz = nlen * /* MB_LEN_MAX */ 3 + 1), ATEMP); | ||||
| 	p = alloc(1, (psiz = nlen * /* MB_LEN_MAX */ 3 + 1), ATEMP); | ||||
| 	if (vp->flag & (RJUST|LJUST)) { | ||||
| 		int slen = olen, i = 0; | ||||
|  | ||||
| @@ -595,14 +595,14 @@ export(struct tbl *vp, const char *val) | ||||
| 	int vallen = strlen(val) + 1; | ||||
|  | ||||
| 	vp->flag |= ALLOC; | ||||
| 	xp = (char*)alloc(namelen + 1 + vallen, vp->areap); | ||||
| 	xp = alloc(1, namelen + 1 + vallen, vp->areap); | ||||
| 	memcpy(vp->val.s = xp, vp->name, namelen); | ||||
| 	xp += namelen; | ||||
| 	*xp++ = '='; | ||||
| 	vp->type = xp - vp->val.s; /* offset to value */ | ||||
| 	memcpy(xp, val, vallen); | ||||
| 	if (op != NULL) | ||||
| 		afree((void*)op, vp->areap); | ||||
| 		afree(op, vp->areap); | ||||
| } | ||||
|  | ||||
| /* | ||||
| @@ -721,14 +721,13 @@ typeset(const char *var, Tflag set, Tflag clr, int field, int base) | ||||
| 						t->flag &= ~ISSET; | ||||
| 					else { | ||||
| 						if (t->flag & ALLOC) | ||||
| 							afree((void*) t->val.s, | ||||
| 							    t->areap); | ||||
| 							afree(t->val.s, t->areap); | ||||
| 						t->flag &= ~(ISSET|ALLOC); | ||||
| 						t->type = 0; | ||||
| 					} | ||||
| 				} | ||||
| 				if (free_me) | ||||
| 					afree((void *) free_me, t->areap); | ||||
| 					afree(free_me, t->areap); | ||||
| 			} | ||||
| 		} | ||||
| 		if (!ok) | ||||
| @@ -762,7 +761,7 @@ void | ||||
| unset(struct tbl *vp, int array_ref) | ||||
| { | ||||
| 	if (vp->flag & ALLOC) | ||||
| 		afree((void*)vp->val.s, vp->areap); | ||||
| 		afree(vp->val.s, vp->areap); | ||||
| 	if ((vp->flag & ARRAY) && !array_ref) { | ||||
| 		struct tbl *a, *tmp; | ||||
|  | ||||
| @@ -771,7 +770,7 @@ unset(struct tbl *vp, int array_ref) | ||||
| 			tmp = a; | ||||
| 			a = a->u.array; | ||||
| 			if (tmp->flag & ALLOC) | ||||
| 				afree((void *) tmp->val.s, tmp->areap); | ||||
| 				afree(tmp->val.s, tmp->areap); | ||||
| 			afree(tmp, tmp->areap); | ||||
| 		} | ||||
| 		vp->u.array = NULL; | ||||
| @@ -1199,8 +1198,7 @@ arraysearch(struct tbl *vp, uint32_t val) | ||||
| 		else | ||||
| 			new = curr; | ||||
| 	} else | ||||
| 		new = (struct tbl *)alloc(sizeof (struct tbl) + namelen, | ||||
| 		    vp->areap); | ||||
| 		new = alloc(1, sizeof (struct tbl) + namelen, vp->areap); | ||||
| 	strlcpy(new->name, vp->name, namelen); | ||||
| 	new->flag = vp->flag & ~(ALLOC|DEFINED|ISSET|SPECIAL); | ||||
| 	new->type = vp->type; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user