Changeset 2290 in kBuild
- Timestamp:
- Feb 27, 2009 4:08:07 AM (16 years ago)
- Location:
- trunk/src/kash
- Files:
-
- 27 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/kash/alias.c
r1233 r2290 71 71 if (equal(name, ap->name)) { 72 72 INTOFF; 73 ckfree( ap->val);74 ap->val = savestr( val);73 ckfree(psh, ap->val); 74 ap->val = savestr(psh, val); 75 75 INTON; 76 76 return; … … 79 79 /* not found */ 80 80 INTOFF; 81 ap = ckmalloc( sizeof (struct alias));82 ap->name = savestr( name);81 ap = ckmalloc(psh, sizeof (struct alias)); 82 ap->name = savestr(psh, name); 83 83 /* 84 84 * XXX - HACK: in order that the parser will not finish reading the … … 99 99 */ 100 100 #ifdef notyet 101 ap->val = savestr( val);101 ap->val = savestr(psh, val); 102 102 #else /* hack */ 103 103 { 104 104 size_t len = strlen(val); 105 ap->val = ckmalloc( len + 2);105 ap->val = ckmalloc(psh, len + 2); 106 106 memcpy(ap->val, val, len); 107 107 ap->val[len] = ' '; /* fluff */ … … 135 135 INTOFF; 136 136 *app = ap->next; 137 ckfree( ap->name);138 ckfree( ap->val);139 ckfree( ap);137 ckfree(psh, ap->name); 138 ckfree(psh, ap->val); 139 ckfree(psh, ap); 140 140 INTON; 141 141 } … … 166 166 psh->atab[i] = NULL; 167 167 while (ap) { 168 ckfree( ap->name);169 ckfree( ap->val);168 ckfree(psh, ap->name); 169 ckfree(psh, ap->val); 170 170 tmp = ap; 171 171 ap = ap->next; 172 ckfree( tmp);172 ckfree(psh, tmp); 173 173 } 174 174 } -
trunk/src/kash/cd.c
r1236 r2290 253 253 if (dir == NULL || psh->curdir == NULL) { 254 254 if (psh->prevdir) 255 ckfree(psh ->prevdir);255 ckfree(psh, psh->prevdir); 256 256 INTOFF; 257 257 psh->prevdir = psh->curdir; … … 289 289 INTOFF; 290 290 if (psh->prevdir) 291 ckfree(psh ->prevdir);291 ckfree(psh, psh->prevdir); 292 292 psh->prevdir = psh->curdir; 293 psh->curdir = savestr( stackblock(psh));293 psh->curdir = savestr(psh, stackblock(psh)); 294 294 setvar(psh, "PWD", psh->curdir, VEXPORT); 295 295 INTON; … … 352 352 stdot.st_dev == stpwd.st_dev && 353 353 stdot.st_ino == stpwd.st_ino) { 354 psh->curdir = savestr(p wd);354 psh->curdir = savestr(psh, pwd); 355 355 return psh->curdir; 356 356 } … … 385 385 pwd = stalloc(psh, i); 386 386 if (shfile_getcwd(&psh->fdtab, pwd, i) != NULL) { 387 psh->curdir = savestr(p wd);387 psh->curdir = savestr(psh, pwd); 388 388 return; 389 389 } -
trunk/src/kash/eval.c
r1233 r2290 614 614 if (sys_path == NULL) { 615 615 if (sysctl(mib, 2, 0, &len, 0, 0) != -1 && 616 (sys_path = ckmalloc( len + 5)) != NULL &&616 (sys_path = ckmalloc(psh, len + 5)) != NULL && 617 617 sysctl(mib, 2, sys_path + 5, &len, 0, 0) != -1) { 618 618 memcpy(sys_path, "PATH=", 5); 619 619 } else { 620 ckfree( sys_path);620 ckfree(psh, sys_path); 621 621 /* something to keep things happy */ 622 622 sys_path = def_path; … … 935 935 if (setjmp(jmploc.loc)) { 936 936 if (psh->exception == EXSHELLPROC) { 937 freeparam( (volatile struct shparam *)937 freeparam(psh, (volatile struct shparam *) 938 938 &saveparam); 939 939 } else { 940 freeparam( &psh->shellparam);940 freeparam(psh, &psh->shellparam); 941 941 psh->shellparam = saveparam; 942 942 } … … 957 957 poplocalvars(psh); 958 958 psh->localvars = savelocalvars; 959 freeparam( &psh->shellparam);959 freeparam(psh, &psh->shellparam); 960 960 psh->shellparam = saveparam; 961 961 psh->handler = savehandler; -
trunk/src/kash/exec.c
r1233 r2290 213 213 initshellproc(psh); 214 214 setinputfile(psh, cmd, 0); 215 psh->commandname = psh->arg0 = savestr( argv[0]);215 psh->commandname = psh->arg0 = savestr(psh, argv[0]); 216 216 #ifdef EXEC_HASH_BANG_SCRIPT 217 217 pgetc(psh); pungetc(psh); /* fill up input buffer */ … … 296 296 error(psh, "Bad #! line"); 297 297 for (ap2 = argv ; *ap2++ != NULL ; ); 298 new = ckmalloc( i + ((char *)ap2 - (char *)argv));298 new = ckmalloc(psh, i + ((char *)ap2 - (char *)argv)); 299 299 ap = newargs, ap2 = new; 300 300 while ((i -= sizeof (char **)) >= 0) … … 868 868 psh->builtinloc >= firstchange)) { 869 869 *pp = cmdp->next; 870 ckfree( cmdp);870 ckfree(psh, cmdp); 871 871 } else { 872 872 pp = &cmdp->next; … … 908 908 if (cmdp->cmdtype == CMDFUNCTION) { 909 909 *pp = cmdp->next; 910 freefunc( cmdp->param.func);911 ckfree( cmdp);910 freefunc(psh, cmdp->param.func); 911 ckfree(psh, cmdp); 912 912 } else { 913 913 pp = &cmdp->next; … … 952 952 if (add && cmdp == NULL) { 953 953 INTOFF; 954 cmdp = *pp = ckmalloc( sizeof (struct tblentry) - ARB954 cmdp = *pp = ckmalloc(psh, sizeof (struct tblentry) - ARB 955 955 + strlen(name) + 1); 956 956 cmdp->next = NULL; … … 976 976 cmdp = *lastcmdentry; 977 977 *lastcmdentry = cmdp->next; 978 ckfree( cmdp);978 ckfree(psh, cmdp); 979 979 INTON; 980 980 } … … 1013 1013 if (cmdp->cmdtype != CMDSPLBLTIN) { 1014 1014 if (cmdp->cmdtype == CMDFUNCTION) { 1015 freefunc( cmdp->param.func);1015 freefunc(psh, cmdp->param.func); 1016 1016 } 1017 1017 cmdp->cmdtype = entry->cmdtype; … … 1027 1027 1028 1028 void 1029 defun(shinstance *psh, char *name, union node *func)1029 defun(shinstance *psh, char *name, union node *func) 1030 1030 { 1031 1031 struct cmdentry entry; … … 1033 1033 INTOFF; 1034 1034 entry.cmdtype = CMDFUNCTION; 1035 entry.u.func = copyfunc( func);1035 entry.u.func = copyfunc(psh, func); 1036 1036 addcmdentry(psh, name, &entry); 1037 1037 INTON; … … 1050 1050 if ((cmdp = cmdlookup(psh, name, 0)) != NULL && 1051 1051 cmdp->cmdtype == CMDFUNCTION) { 1052 freefunc( cmdp->param.func);1052 freefunc(psh, cmdp->param.func); 1053 1053 delete_cmd_entry(psh); 1054 1054 return (0); -
trunk/src/kash/expand.c
r1233 r2290 309 309 INTOFF; 310 310 ifsp = psh->ifsfirst.next->next; 311 ckfree(psh ->ifsfirst.next);311 ckfree(psh, psh->ifsfirst.next); 312 312 psh->ifsfirst.next = ifsp; 313 313 INTON; … … 329 329 INTOFF; 330 330 ifsp = psh->ifslastp->next->next; 331 ckfree(psh ->ifslastp->next);331 ckfree(psh, psh->ifslastp->next); 332 332 psh->ifslastp->next = ifsp; 333 333 INTON; … … 463 463 shfile_close(&psh->fdtab, in.fd); 464 464 if (in.buf) 465 ckfree( in.buf);465 ckfree(psh, in.buf); 466 466 if (in.jp) 467 467 psh->back_exitstatus = waitforjob(psh, in.jp); … … 922 922 return; 923 923 } 924 ifsp = (struct ifsregion *)ckmalloc( sizeof (struct ifsregion));924 ifsp = (struct ifsregion *)ckmalloc(psh, sizeof (struct ifsregion)); 925 925 psh->ifslastp->next = ifsp; 926 926 } … … 1045 1045 INTOFF; 1046 1046 ifsp = psh->ifsfirst.next->next; 1047 ckfree(psh ->ifsfirst.next);1047 ckfree(psh, psh->ifsfirst.next); 1048 1048 psh->ifsfirst.next = ifsp; 1049 1049 INTON; … … 1086 1086 if (psh->expdir == NULL) { 1087 1087 size_t i = strlen(str->text); 1088 psh->expdir = ckmalloc( i < 2048 ? 2048 : i); /* XXX */1088 psh->expdir = ckmalloc(psh, i < 2048 ? 2048 : i); /* XXX */ 1089 1089 } 1090 1090 1091 1091 expmeta(psh, psh->expdir, str->text); 1092 ckfree(psh ->expdir);1092 ckfree(psh, psh->expdir); 1093 1093 psh->expdir = NULL; 1094 1094 INTON; -
trunk/src/kash/generated/init.c
r1239 r2290 189 189 psh->out2 = &psh->errout; 190 190 if (psh->memout.buf != NULL) { 191 ckfree(psh ->memout.buf);191 ckfree(psh, psh->memout.buf); 192 192 psh->memout.buf = NULL; 193 193 } -
trunk/src/kash/generated/nodes.c
r1233 r2290 49 49 #include "machdep.h" 50 50 #include "mystring.h" 51 #include "shinstance.h" 51 52 52 53 … … 99 100 100 101 union node * 101 copyfunc(n) 102 copyfunc(psh, n) 103 struct shinstance *psh; 102 104 union node *n; 103 105 { … … 107 109 funcstringsize = 0; 108 110 calcsize(n); 109 funcblock = ckmalloc( funcblocksize + funcstringsize);111 funcblock = ckmalloc(psh, funcblocksize + funcstringsize); 110 112 funcstring = (char *) funcblock + funcblocksize; 111 113 return copynode(n); … … 340 342 341 343 void 342 freefunc(n) 344 freefunc(psh, n) 345 shinstance *psh; 343 346 union node *n; 344 347 { 345 348 if (n) 346 ckfree( n);347 } 349 ckfree(psh, n); 350 } -
trunk/src/kash/generated/nodes.h
r1233 r2290 156 156 157 157 158 union node *copyfunc( union node *);159 void freefunc( union node *);158 union node *copyfunc(struct shinstance *, union node *); 159 void freefunc(struct shinstance *, union node *); -
trunk/src/kash/input.c
r2288 r2290 343 343 /*dprintf("*** calling pushstring: %s, %d\n", s, len);*/ 344 344 if (psh->parsefile->strpush) { 345 sp = ckmalloc( sizeof (struct strpush));345 sp = ckmalloc(psh, sizeof (struct strpush)); 346 346 sp->prev = psh->parsefile->strpush; 347 347 psh->parsefile->strpush = sp; … … 373 373 psh->parsefile->strpush = sp->prev; 374 374 if (sp != &(psh->parsefile->basestrpush)) 375 ckfree( sp);375 ckfree(psh, sp); 376 376 INTON; 377 377 } … … 415 415 if (push) { 416 416 pushfile(psh); 417 psh->parsefile->buf = ckmalloc( BUFSIZ);417 psh->parsefile->buf = ckmalloc(psh, BUFSIZ); 418 418 } 419 419 if (psh->parsefile->fd > 0) … … 421 421 psh->parsefile->fd = fd; 422 422 if (psh->parsefile->buf == NULL) 423 psh->parsefile->buf = ckmalloc( BUFSIZ);423 psh->parsefile->buf = ckmalloc(psh, BUFSIZ); 424 424 psh->parselleft = psh->parsenleft = 0; 425 425 psh->plinno = 1; … … 460 460 psh->parsefile->nextc = psh->parsenextc; 461 461 psh->parsefile->linno = psh->plinno; 462 pf = (struct parsefile *)ckmalloc( sizeof (struct parsefile));462 pf = (struct parsefile *)ckmalloc(psh, sizeof (struct parsefile)); 463 463 pf->prev = psh->parsefile; 464 464 pf->fd = -1; … … 478 478 shfile_close(&psh->fdtab, pf->fd); 479 479 if (pf->buf) 480 ckfree(p f->buf);480 ckfree(psh, pf->buf); 481 481 while (pf->strpush) 482 482 popstring(psh); 483 483 psh->parsefile = pf->prev; 484 ckfree(p f);484 ckfree(psh, pf); 485 485 psh->parsenleft = psh->parsefile->nleft; 486 486 psh->parselleft = psh->parsefile->lleft; -
trunk/src/kash/jobs.c
r1785 r2290 519 519 INTOFF; 520 520 if (jp->ps != &jp->ps0) { 521 ckfree( jp->ps);521 ckfree(psh, jp->ps); 522 522 jp->ps = &jp->ps0; 523 523 } … … 723 723 INTOFF; 724 724 if (psh->njobs == 0) { 725 psh->jobtab = ckmalloc( 4 * sizeof psh->jobtab[0]);725 psh->jobtab = ckmalloc(psh, 4 * sizeof psh->jobtab[0]); 726 726 } else { 727 jp = ckmalloc( (psh->njobs + 4) * sizeof psh->jobtab[0]);727 jp = ckmalloc(psh, (psh->njobs + 4) * sizeof psh->jobtab[0]); 728 728 memcpy(jp, psh->jobtab, psh->njobs * sizeof jp[0]); 729 729 /* Relocate `ps' pointers */ … … 731 731 if (jp[i].ps == &psh->jobtab[i].ps0) 732 732 jp[i].ps = &jp[i].ps0; 733 ckfree(psh ->jobtab);733 ckfree(psh, psh->jobtab); 734 734 psh->jobtab = jp; 735 735 } … … 752 752 #endif 753 753 if (nprocs > 1) { 754 jp->ps = ckmalloc( nprocs * sizeof (struct procstat));754 jp->ps = ckmalloc(psh, nprocs * sizeof (struct procstat)); 755 755 } else { 756 756 jp->ps = &jp->ps0; -
trunk/src/kash/memalloc.c
r1233 r2290 56 56 57 57 pointer 58 ckmalloc(s ize_t nbytes)58 ckmalloc(shinstance *psh, size_t nbytes) 59 59 { 60 60 pointer p; 61 61 62 p = malloc(nbytes);62 p = sh_malloc(psh, nbytes); 63 63 if (p == NULL) 64 error( NULL, "Out of space");64 error(psh, "Out of space"); 65 65 return p; 66 66 } … … 72 72 73 73 pointer 74 ckrealloc( pointer p, size_t nbytes)75 { 76 p = realloc(p, nbytes);74 ckrealloc(struct shinstance *psh, pointer p, size_t nbytes) 75 { 76 p = sh_realloc(psh, p, nbytes); 77 77 if (p == NULL) 78 error( NULL, "Out of space");78 error(psh, "Out of space"); 79 79 return p; 80 80 } … … 86 86 87 87 char * 88 savestr( const char *s)88 savestr(struct shinstance *psh, const char *s) 89 89 { 90 90 char *p; 91 92 p = ckmalloc(strlen(s) + 1); 93 scopy(s, p); 91 size_t len = strlen(s); 92 93 p = ckmalloc(psh, len + 1); 94 memcpy(p, s, len + 1); 94 95 return p; 95 96 } … … 134 135 blocksize = MINSIZE; 135 136 INTOFF; 136 sp = ckmalloc( sizeof(struct stack_block) - MINSIZE + blocksize);137 sp = ckmalloc(psh, sizeof(struct stack_block) - MINSIZE + blocksize); 137 138 sp->prev = psh->stackp; 138 139 psh->stacknxt = sp->space; … … 182 183 sp = psh->stackp; 183 184 psh->stackp = sp->prev; 184 ckfree( sp);185 ckfree(psh, sp); 185 186 } 186 187 psh->stacknxt = mark->stacknxt; … … 214 215 sp = psh->stackp; 215 216 psh->stackp = sp->prev; 216 sp = ckrealloc( (pointer)sp,217 sp = ckrealloc(psh, (pointer)sp, 217 218 sizeof(struct stack_block) - MINSIZE + newlen); 218 219 sp->prev = psh->stackp; -
trunk/src/kash/memalloc.h
r1233 r2290 48 48 extern int herefd;*/ 49 49 50 pointer ckmalloc(s ize_t);51 pointer ckrealloc( pointer, size_t);52 char *savestr( const char *);50 pointer ckmalloc(struct shinstance *, size_t); 51 pointer ckrealloc(struct shinstance *, pointer, size_t); 52 char *savestr(struct shinstance *, const char *); 53 53 pointer stalloc(struct shinstance *, size_t); 54 54 void stunalloc(struct shinstance *, pointer); … … 75 75 #define grabstackstr(psh, p) stalloc((psh), stackblocksize(psh) - (psh)->sstrnleft) 76 76 77 #define ckfree(p ) free((pointer)(p))77 #define ckfree(psh, p) sh_free(psh, (pointer)(p)) -
trunk/src/kash/miscbltin.c
r1233 r2290 59 59 #include "mystring.h" 60 60 #include "shinstance.h" 61 #include "shfile.h" 61 62 62 63 #undef rflag … … 220 221 } 221 222 222 INTOFF; 223 mask = umask(0); 224 umask(mask); 225 INTON; 223 mask = shfile_get_umask(&psh->fdtab); 226 224 227 225 if ((ap = *psh->argptr) == NULL) { … … 268 266 mask = (mask << 3) + (*ap - '0'); 269 267 } while (*++ap != '\0'); 270 umask(mask);268 shfile_set_umask(&psh->fdtab, mask); 271 269 } else { 272 270 void *set; … … 275 273 if ((set = bsd_setmode(psh, ap)) != 0) { 276 274 mask = bsd_getmode(set, ~mask & 0777); 277 ckfree( set);275 ckfree(psh, set); 278 276 } 279 277 INTON; … … 281 279 error(psh, "Illegal mode: %s", ap); 282 280 283 umask(~mask & 0777);281 shfile_set_umask(&psh->fdtab, ~mask & 0777); 284 282 } 285 283 } -
trunk/src/kash/nodes.c.pat
r1233 r2290 45 45 #include "machdep.h" 46 46 #include "mystring.h" 47 #include "shinstance.h" 47 48 48 49 … … 68 69 69 70 union node * 70 copyfunc(n) 71 copyfunc(psh, n) 72 struct shinstance *psh; 71 73 union node *n; 72 74 { … … 76 78 funcstringsize = 0; 77 79 calcsize(n); 78 funcblock = ckmalloc( funcblocksize + funcstringsize);80 funcblock = ckmalloc(psh, funcblocksize + funcstringsize); 79 81 funcstring = (char *) funcblock + funcblocksize; 80 82 return copynode(n); … … 159 161 160 162 void 161 freefunc(n) 163 freefunc(psh, n) 164 shinstance *psh; 162 165 union node *n; 163 166 { 164 167 if (n) 165 ckfree( n);168 ckfree(psh, n); 166 169 } -
trunk/src/kash/options.c
r1238 r2290 280 280 for (nparam = 0 ; argv[nparam] ; nparam++) 281 281 continue; 282 ap = newparam = ckmalloc( (nparam + 1) * sizeof *ap);282 ap = newparam = ckmalloc(psh, (nparam + 1) * sizeof *ap); 283 283 while (*argv) { 284 *ap++ = savestr( *argv++);284 *ap++ = savestr(psh, *argv++); 285 285 } 286 286 *ap = NULL; 287 freeparam( &psh->shellparam);287 freeparam(psh, &psh->shellparam); 288 288 psh->shellparam.malloc = 1; 289 289 psh->shellparam.nparam = nparam; … … 298 298 299 299 void 300 freeparam( volatile struct shparam *param)300 freeparam(shinstance *psh, volatile struct shparam *param) 301 301 { 302 302 char **ap; … … 304 304 if (param->malloc) { 305 305 for (ap = param->p ; *ap ; ap++) 306 ckfree( *ap);307 ckfree(p aram->p);306 ckfree(psh, *ap); 307 ckfree(psh, param->p); 308 308 } 309 309 } … … 330 330 for (ap1 = psh->shellparam.p ; --n >= 0 ; ap1++) { 331 331 if (psh->shellparam.malloc) 332 ckfree( *ap1);332 ckfree(psh, *ap1); 333 333 } 334 334 ap2 = psh->shellparam.p; -
trunk/src/kash/options.h
r1233 r2290 133 133 void optschanged(struct shinstance *); 134 134 void setparam(struct shinstance *, char **); 135 void freeparam( volatile struct shparam *);135 void freeparam(struct shinstance *, volatile struct shparam *); 136 136 int shiftcmd(struct shinstance *, int, char **); 137 137 int setcmd(struct shinstance *, int, char **); -
trunk/src/kash/output.c
r1784 r2290 89 89 psh->out2 = &psh->errout; 90 90 if (psh->memout.buf != NULL) { 91 ckfree(psh ->memout.buf);91 ckfree(psh, psh->memout.buf); 92 92 psh->memout.buf = NULL; 93 93 } … … 153 153 } else if (dest->buf == NULL) { 154 154 INTOFF; 155 dest->buf = ckmalloc( dest->bufsize);155 dest->buf = ckmalloc(psh, dest->bufsize); 156 156 dest->nextc = dest->buf; 157 157 dest->nleft = dest->bufsize; … … 161 161 INTOFF; 162 162 dest->bufsize <<= 1; 163 dest->buf = ckrealloc( dest->buf, dest->bufsize);163 dest->buf = ckrealloc(psh, dest->buf, dest->bufsize); 164 164 dest->nleft = dest->bufsize - offset; 165 165 dest->nextc = dest->buf + offset; … … 198 198 INTOFF; 199 199 if (psh->output.buf) { 200 ckfree(psh ->output.buf);200 ckfree(psh, psh->output.buf); 201 201 psh->output.buf = NULL; 202 202 psh->output.nleft = 0; -
trunk/src/kash/parser.c
r1236 r2290 1151 1151 psh->wordtext = out; 1152 1152 if (dblquotep != NULL) 1153 ckfree( dblquotep);1153 ckfree(psh, dblquotep); 1154 1154 return psh->lasttoken = TWORD; 1155 1155 /* end of readtoken routine */ … … 1347 1347 varnest++; 1348 1348 if (varnest >= maxnest) { 1349 dblquotep = ckrealloc( dblquotep, maxnest / 8);1349 dblquotep = ckrealloc(psh, dblquotep, maxnest / 8); 1350 1350 dblquotep[(maxnest / 32) - 1] = 0; 1351 1351 maxnest += 32; … … 1380 1380 if (setjmp(jmploc.loc)) { 1381 1381 if (str) 1382 ckfree( str);1382 ckfree(psh, str); 1383 1383 psh->parsebackquote = 0; 1384 1384 psh->handler = savehandler; … … 1389 1389 savelen = (int)(out - stackblock(psh)); 1390 1390 if (savelen > 0) { 1391 str = ckmalloc( savelen);1391 str = ckmalloc(psh, savelen); 1392 1392 memcpy(str, stackblock(psh), savelen); 1393 1393 } … … 1495 1495 STADJUST(psh, savelen, out); 1496 1496 INTOFF; 1497 ckfree( str);1497 ckfree(psh, str); 1498 1498 str = NULL; 1499 1499 INTON; -
trunk/src/kash/redir.c
r1233 r2290 117 117 * flags & REDIR_PUSH is never true if REDIR_VFORK is set. 118 118 */ 119 sv = ckmalloc( sizeof (struct redirtab));119 sv = ckmalloc(psh, sizeof (struct redirtab)); 120 120 for (i = 0 ; i < 10 ; i++) 121 121 sv->renamed[i] = EMPTY; … … 311 311 INTOFF; 312 312 psh->redirlist = rp->next; 313 ckfree( rp);313 ckfree(psh, rp); 314 314 INTON; 315 315 } -
trunk/src/kash/setmode.c
r1233 r2290 167 167 BITCMD *newset; \ 168 168 setlen += SET_LEN_INCR; \ 169 newset = realloc(saveset, sizeof(BITCMD) * setlen); \169 newset = sh_realloc(NULL, saveset, sizeof(BITCMD) * setlen); \ 170 170 if (newset == NULL) { \ 171 free(saveset); \171 sh_free(NULL, saveset); \ 172 172 return (NULL); \ 173 173 } \ … … 202 202 setlen = SET_LEN + 2; 203 203 204 if ((set = malloc(sizeof(BITCMD) * setlen)) == NULL)204 if ((set = sh_malloc(NULL, sizeof(BITCMD) * setlen)) == NULL) 205 205 return (NULL); 206 206 saveset = set; … … 214 214 perm = (mode_t)strtol(p, &ep, 8); 215 215 if (*ep || perm & ~(STANDARD_BITS|S_ISTXT)) { 216 free(saveset);216 sh_free(NULL, saveset); 217 217 return (NULL); 218 218 } … … 248 248 249 249 getop: if ((op = *p++) != '+' && op != '-' && op != '=') { 250 free(saveset);250 sh_free(NULL, saveset); 251 251 return (NULL); 252 252 } -
trunk/src/kash/shfile.c
r2289 r2290 150 150 while (new_size < fdMin) 151 151 new_size += SHFILE_GROW; 152 new_tab = realloc(pfdtab->tab, new_size * sizeof(shfile));152 new_tab = sh_realloc(NULL, pfdtab->tab, new_size * sizeof(shfile)); 153 153 if (new_tab) 154 154 { … … 230 230 } 231 231 232 233 232 /** 234 233 * Constructs a path from the current directory and the passed in path. … … 257 256 #if K_OS == K_OS_WINDOWS || K_OS == K_OS_OS2 258 257 || *path == '\\' 259 || ( !*path258 || ( *path 260 259 && path[1] == ':' 261 260 && ( (*path >= 'A' && *path <= 'Z') … … 1050 1049 } 1051 1050 1051 void shfile_set_umask(shfdtab *pfdtab, mode_t mask) 1052 { 1053 (void)mask; 1054 } 1055 1052 1056 1053 1057 shdir *shfile_opendir(shfdtab *pfdtab, const char *dir) -
trunk/src/kash/shfile.h
r2289 r2290 150 150 #endif 151 151 mode_t shfile_get_umask(shfdtab *); 152 void shfile_set_umask(shfdtab *, mode_t); 152 153 153 154 -
trunk/src/kash/shinstance.c
r2289 r2290 169 169 { 170 170 memset(psh, 0, sizeof(*psh)); 171 free(psh);171 sh_free(NULL, psh); 172 172 } 173 173 … … 190 190 191 191 /* alloc clone array. */ 192 *dstp = dst = malloc(sizeof(*dst) * items + 1);192 *dstp = dst = sh_malloc(NULL, sizeof(*dst) * items + 1); 193 193 if (!dst) 194 194 return -1; … … 198 198 while (items-- > 0) 199 199 { 200 dst[items] = s trdup(src[items]);200 dst[items] = sh_strdup(NULL, src[items]); 201 201 if (!dst[items]) 202 202 { 203 203 /* allocation error, clean up. */ 204 204 while (dst[++items]) 205 free(dst[items]);206 free(dst);205 sh_free(NULL, dst[items]); 206 sh_free(NULL, dst); 207 207 errno = ENOMEM; 208 208 return -1; … … 231 231 * The allocations. 232 232 */ 233 psh = calloc(sizeof(*psh), 1);233 psh = sh_calloc(NULL, sizeof(*psh), 1); 234 234 if (psh) 235 235 { … … 344 344 345 345 return ret; 346 } 347 348 /** malloc() */ 349 void *sh_malloc(shinstance *psh, size_t size) 350 { 351 (void)psh; 352 return malloc(size); 353 } 354 355 /** calloc() */ 356 void *sh_calloc(shinstance *psh, size_t num, size_t size) 357 { 358 (void)psh; 359 return calloc(num, size); 360 } 361 362 /** realloc() */ 363 void *sh_realloc(shinstance *psh, void *old, size_t new_size) 364 { 365 return realloc(old, new_size); 366 } 367 368 /** strdup() */ 369 char *sh_strdup(shinstance *psh, const char *string) 370 { 371 size_t len = strlen(string); 372 char *ret = sh_malloc(psh, len + 1); 373 if (ret) 374 memcpy(ret, string, len + 1); 375 return ret; 376 } 377 378 /** free() */ 379 void sh_free(shinstance *psh, void *ptr) 380 { 381 if (ptr) 382 free(ptr); 383 (void)psh; 346 384 } 347 385 -
trunk/src/kash/shinstance.h
r2287 r2290 335 335 char **sh_environ(shinstance *); 336 336 const char *sh_gethomedir(shinstance *, const char *); 337 338 /* heap */ 339 void *sh_malloc(shinstance *, size_t); 340 void *sh_calloc(shinstance *, size_t, size_t); 341 void *sh_realloc(shinstance *, void *, size_t); 342 char *sh_strdup(shinstance *, const char *); 343 void sh_free(shinstance *, void *); 337 344 338 345 /* signals */ -
trunk/src/kash/tests/trap-exit-1
r2288 r2290 1 1 #!/bin/sh 2 set -x3 2 4 3 trap 'echo "trap-exit-1: overriding exit 1"; exit 0' EXIT -
trunk/src/kash/trap.c
r1240 r2290 192 192 INTOFF; 193 193 if (action) 194 action = savestr( action);194 action = savestr(psh, action); 195 195 196 196 if (psh->trap[signo]) 197 ckfree(psh ->trap[signo]);197 ckfree(psh, psh->trap[signo]); 198 198 199 199 psh->trap[signo] = action; … … 224 224 INTOFF; 225 225 if (!vforked) { 226 ckfree( *tp);226 ckfree(psh, *tp); 227 227 *tp = NULL; 228 228 } -
trunk/src/kash/var.c
r1233 r2290 209 209 struct var **vpp; 210 210 #ifdef PC_OS2_LIBPATHS 211 char *psz = ckmalloc( 2048);211 char *psz = ckmalloc(psh, 2048); 212 212 int rc; 213 213 int i; … … 232 232 int cch1 = strlen(libpath_envs[i]); 233 233 int cch2 = strlen(psz) + 1; 234 psh->libpath_vars[i].text = ckmalloc( cch1 + cch2);234 psh->libpath_vars[i].text = ckmalloc(psh, cch1 + cch2); 235 235 memcpy(psh->libpath_vars[i].text, libpath_envs[i], cch1); 236 236 memcpy(psh->libpath_vars[i].text + cch1, psz, cch2); … … 246 246 *vpp = &psh->libpath_vars[i]; 247 247 } 248 free(psz);248 ckfree(psh, psz); 249 249 #endif 250 250 … … 332 332 len += strlen(val); 333 333 } 334 d = nameeq = ckmalloc( len);334 d = nameeq = ckmalloc(psh, len); 335 335 q = name; 336 336 while (--namelen >= 0) … … 372 372 373 373 if ((vp->flags & (VTEXTFIXED|VSTACK)) == 0) 374 ckfree( vp->text);374 ckfree(psh, vp->text); 375 375 376 376 vp->flags &= ~(VTEXTFIXED|VSTACK|VUNSET); … … 394 394 if (flags & VNOSET) 395 395 return; 396 vp = ckmalloc( sizeof (*vp));396 vp = ckmalloc(psh, sizeof (*vp)); 397 397 vp->flags = flags & ~VNOFUNC; 398 398 vp->text = s; … … 416 416 INTOFF; 417 417 for (lp = list ; lp ; lp = lp->next) { 418 setvareq(psh, savestr( lp->text), flags);418 setvareq(psh, savestr(psh, lp->text), flags); 419 419 } 420 420 INTON; … … 539 539 *prev = vp->next; 540 540 if ((vp->flags & VTEXTFIXED) == 0) 541 ckfree( vp->text);541 ckfree(psh, vp->text); 542 542 if ((vp->flags & VSTRFIXED) == 0) 543 ckfree( vp);543 ckfree(psh, vp); 544 544 } else { 545 545 if (vp->flags & VSTACK) { 546 vp->text = savestr( vp->text);546 vp->text = savestr(psh, vp->text); 547 547 vp->flags &=~ VSTACK; 548 548 } … … 618 618 if (!list) { 619 619 list_len = 32; 620 list = ckmalloc( list_len * sizeof(*list));620 list = ckmalloc(psh, list_len * sizeof(*list)); 621 621 } 622 622 … … 628 628 continue; 629 629 if (count >= list_len) { 630 list = ckrealloc( list,630 list = ckrealloc(psh, list, 631 631 (list_len << 1) * sizeof(*list)); 632 632 list_len <<= 1; … … 723 723 724 724 INTOFF; 725 lvp = ckmalloc( sizeof (struct localvar));725 lvp = ckmalloc(psh, sizeof (struct localvar)); 726 726 if (name[0] == '-' && name[1] == '\0') { 727 727 char *p; 728 p = ckmalloc( sizeof_optlist);728 p = ckmalloc(psh, sizeof_optlist); 729 729 lvp->text = memcpy(p, psh->optlist, sizeof_optlist); 730 730 vp = NULL; … … 733 733 if (vp == NULL) { 734 734 if (strchr(name, '=')) 735 setvareq(psh, savestr( name), VSTRFIXED|flags);735 setvareq(psh, savestr(psh, name), VSTRFIXED|flags); 736 736 else 737 737 setvar(psh, name, NULL, VSTRFIXED|flags); … … 744 744 vp->flags |= VSTRFIXED|VTEXTFIXED; 745 745 if (name[vp->name_len] == '=') 746 setvareq(psh, savestr( name), flags);746 setvareq(psh, savestr(psh, name), flags); 747 747 } 748 748 } … … 770 770 if (vp == NULL) { /* $- saved */ 771 771 memcpy(psh->optlist, lvp->text, sizeof_optlist); 772 ckfree( lvp->text);772 ckfree(psh, lvp->text); 773 773 } else if ((lvp->flags & (VUNSET|VSTRFIXED)) == VUNSET) { 774 774 (void)unsetvar(psh, vp->text, 0); … … 777 777 (*vp->func)(psh, lvp->text + vp->name_len + 1); 778 778 if ((vp->flags & VTEXTFIXED) == 0) 779 ckfree( vp->text);779 ckfree(psh, vp->text); 780 780 vp->flags = lvp->flags; 781 781 vp->text = lvp->text; 782 782 } 783 ckfree( lvp);783 ckfree(psh, lvp); 784 784 } 785 785 } … … 860 860 if ((vp->flags & VSTRFIXED) == 0) { 861 861 if ((vp->flags & VTEXTFIXED) == 0) 862 ckfree( vp->text);862 ckfree(psh, vp->text); 863 863 *vpp = vp->next; 864 ckfree( vp);864 ckfree(psh, vp); 865 865 } 866 866 }
Note:
See TracChangeset
for help on using the changeset viewer.