Changeset 1202 in kBuild for trunk/src/kash
- Timestamp:
- Oct 7, 2007 12:24:15 AM (17 years ago)
- Location:
- trunk/src/kash
- Files:
-
- 12 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/kash/bltin/bltin.h
r1201 r1202 75 75 #define setlocate(l,s) 0 76 76 77 #define getenv(p) bltinlookup( (p),0)77 #define getenv(p) bltinlookup(psh, (p),0) 78 78 79 79 #else -
trunk/src/kash/bltin/kill.c
r843 r1202 153 153 for (errors = 0; argc; argc--, argv++) { 154 154 #ifdef SHELL 155 extern int getjobpgrp( const char *);155 extern int getjobpgrp(shinstance *psh, const char *); 156 156 if (*argv[0] == '%') { 157 pid = getjobpgrp( *argv);157 pid = getjobpgrp(psh, *argv); 158 158 if (pid == 0) { 159 159 warnx("illegal job id: %s", *argv); -
trunk/src/kash/exec.c
r1201 r1202 229 229 } 230 230 #endif 231 setparam( argv + 1);231 setparam(psh, argv + 1); 232 232 exraise(psh, EXSHELLPROC); 233 233 } … … 437 437 438 438 verbose = 0; 439 while ((c = nextopt( "rv")) != '\0') {439 while ((c = nextopt(psh, "rv")) != '\0') { 440 440 if (c == 'r') { 441 441 clearcmdentry(0); … … 500 500 struct procstat ps; 501 501 INTOFF; 502 commandtext( &ps, cmdp->param.func);502 commandtext(psh, &ps, cmdp->param.func); 503 503 INTON; 504 504 out1str(psh, "() { "); … … 665 665 goto loop; 666 666 stalloc(psh, strlen(fullname) + 1); 667 readcmdfile( fullname);667 readcmdfile(psh, fullname); 668 668 if ((cmdp = cmdlookup(name, 0)) == NULL || 669 669 cmdp->cmdtype != CMDFUNCTION) … … 1085 1085 int p_flag = 0; 1086 1086 1087 while ((c = nextopt( "vVp")) != 0) {1087 while ((c = nextopt(psh, "vVp")) != 0) { 1088 1088 switch (c) { 1089 1089 case 'v': v_flag = 1; break; -
trunk/src/kash/expand.c
r1201 r1202 288 288 *p = '\0'; 289 289 if (*(startp+1) == '\0') { 290 if ((home = lookupvar( "HOME")) == NULL)290 if ((home = lookupvar(psh, "HOME")) == NULL) 291 291 goto lose; 292 292 } else { … … 477 477 ckfree(in.buf); 478 478 if (in.jp) 479 back_exitstatus = waitforjob( in.jp);479 back_exitstatus = waitforjob(psh, in.jp); 480 480 if (quoted == 0) 481 481 recordregion(startloc, dest - stackblock(psh), 0); … … 512 512 switch (subtype) { 513 513 case VSASSIGN: 514 setvar( str, startp, 0);514 setvar(psh, str, startp, 0); 515 515 amount = startp - expdest; 516 516 STADJUST(psh, amount, expdest); … … 639 639 val = NULL; 640 640 } else { 641 val = lookupvar( var);641 val = lookupvar(psh, var); 642 642 if (val == NULL || ((varflags & VSNUL) && val[0] == '\0')) { 643 643 val = NULL; -
trunk/src/kash/generated/init.c
r1201 r1202 189 189 char **envp; 190 190 191 initvar( );191 initvar(psh); 192 192 for (envp = environ ; *envp ; envp++) { 193 193 if (strchr(*envp, '=')) { 194 setvareq( *envp, VEXPORT|VTEXTFIXED);194 setvareq(psh, *envp, VEXPORT|VTEXTFIXED); 195 195 } 196 196 } … … 241 241 { 242 242 while (redirlist) 243 popredir( );243 popredir(psh); 244 244 } 245 245 } … … 288 288 for (i = 0; optlist[i].name; i++) 289 289 optlist[i].val = 0; 290 optschanged( );290 optschanged(psh); 291 291 292 292 } … … 294 294 /* from redir.c: */ 295 295 { 296 clearredir( 0);296 clearredir(psh, 0); 297 297 } 298 298 … … 301 301 char *sm; 302 302 303 clear_traps( 0);303 clear_traps(psh, 0); 304 304 for (sm = sigmode ; sm < sigmode + NSIG ; sm++) { 305 305 if (*sm == S_IGN) … … 310 310 /* from var.c: */ 311 311 { 312 shprocvar( );312 shprocvar(psh); 313 313 } 314 314 } -
trunk/src/kash/histedit.c
r1201 r1202 125 125 el_err = tracefile; 126 126 #endif 127 term = lookupvar( "TERM");127 term = lookupvar(psh, "TERM"); 128 128 if (term) 129 129 setenv("TERM", term, 1); … … 322 322 if (sflg == 0) { 323 323 if (editor == NULL && 324 (editor = bltinlookup( "FCEDIT", 1)) == NULL &&325 (editor = bltinlookup( "EDITOR", 1)) == NULL)324 (editor = bltinlookup(psh, "FCEDIT", 1)) == NULL && 325 (editor = bltinlookup(psh, "EDITOR", 1)) == NULL) 326 326 editor = DEFEDITOR; 327 327 if (editor[0] == '-' && editor[1] == '\0') { … … 444 444 evalstring(psh, editcmd, 0); /* XXX - should use no JC command */ 445 445 INTON; 446 readcmdfile( editfile); /* XXX - should read back - quick tst */446 readcmdfile(psh, editfile); /* XXX - should read back - quick tst */ 447 447 unlink(editfile); 448 448 } -
trunk/src/kash/jobs.c
r1201 r1202 116 116 117 117 static pid_t 118 tcgetpgrp( int fd)118 tcgetpgrp(shinstance *psh, int fd) 119 119 { 120 120 pid_t pgrp; 121 if ( ioctl(fd, TIOCGPGRP, (char *)&pgrp) == -1)121 if (shfile_ioctl(&psh->fdtab, fd, TIOCGPGRP, (char *)&pgrp) == -1) 122 122 return -1; 123 123 else … … 126 126 127 127 static int 128 tcsetpgrp( int fd, pid_tpgrp)129 { 130 return ioctl(fd, TIOCSPGRP, (char *)&pgrp);128 tcsetpgrp(shinstance *psh, int fd, pid_tpgrp) 129 { 130 return shfile_ioctl(&psh->fdtab, fd, TIOCSPGRP, (char *)&pgrp); 131 131 } 132 132 #endif … … 212 212 } 213 213 #endif 214 setsignal( SIGTSTP, 0);215 setsignal( SIGTTOU, 0);216 setsignal( SIGTTIN, 0);214 setsignal(psh, SIGTSTP, 0); 215 setsignal(psh, SIGTTOU, 0); 216 setsignal(psh, SIGTTIN, 0); 217 217 if (getpgid(0) != rootpid && setpgid(0, rootpid) == -1) 218 218 error(psh, "Cannot set process group (%s) at %d", … … 230 230 close(ttyfd); 231 231 ttyfd = -1; 232 setsignal( SIGTSTP, 0);233 setsignal( SIGTTOU, 0);234 setsignal( SIGTTIN, 0);232 setsignal(psh, SIGTSTP, 0); 233 setsignal(psh, SIGTTOU, 0); 234 setsignal(psh, SIGTTIN, 0); 235 235 } 236 236 jobctl = on; … … 254 254 #if JOBS 255 255 int 256 fgcmd( int argc, char **argv)256 fgcmd(shinstance *psh, int argc, char **argv) 257 257 { 258 258 struct job *jp; … … 260 260 int status; 261 261 262 nextopt( "");263 jp = getjob(* argptr, 0);262 nextopt(psh, ""); 263 jp = getjob(*psh->argptr, 0); 264 264 if (jp->jobctl == 0) 265 265 error(psh, "job not created under job control"); … … 271 271 272 272 for (i = 0; i < jp->nprocs; i++) 273 if (tcsetpgrp( ttyfd, jp->ps[i].pid) != -1)273 if (tcsetpgrp(psh, ttyfd, jp->ps[i].pid) != -1) 274 274 break; 275 275 … … 278 278 strerror(errno), __LINE__); 279 279 } 280 restartjob( jp);280 restartjob(psh, jp); 281 281 INTOFF; 282 status = waitforjob( jp);282 status = waitforjob(psh, jp); 283 283 INTON; 284 284 return status; … … 338 338 int i; 339 339 340 nextopt( "");340 nextopt(psh, ""); 341 341 do { 342 342 jp = getjob(psh, *psh->argptr, 0); … … 506 506 jobs_invalid = 0; 507 507 mode = 0; 508 while ((m = nextopt( "lp")))508 while ((m = nextopt(psh, "lp"))) 509 509 if (m == 'l') 510 510 mode = SHOW_PID; … … 516 516 while (*++argptr); 517 517 else 518 showjobs( out1, mode);518 showjobs(psh, out1, mode); 519 519 jobs_invalid = sv; 520 520 return 0; … … 606 606 struct job *jp; 607 607 608 nextopt( "");608 nextopt(psh, ""); 609 609 610 610 if (!*argptr) { … … 665 665 int i; 666 666 667 nextopt( "");667 nextopt(psh, ""); 668 668 jp = getjob(*argptr, 0); 669 669 for (i = 0 ; i < jp->nprocs ; ) { … … 858 858 break; 859 859 case 0: 860 forkchild( jp, n, mode, 0);860 forkchild(psh, jp, n, mode, 0); 861 861 return 0; 862 862 default: 863 return forkparent( jp, n, mode, pid);863 return forkparent(psh, jp, n, mode, pid); 864 864 } 865 865 } … … 886 886 ps->cmd[0] = 0; 887 887 if (/* iflag && rootshell && */ n) 888 commandtext(ps , n);888 commandtext(psh, ps, n); 889 889 } 890 890 TRACE((psh, "In parent shell: child = %d\n", pid)); … … 922 922 strerror(errno), __LINE__); 923 923 } 924 setsignal( SIGTSTP, vforked);925 setsignal( SIGTTOU, vforked);924 setsignal(psh, SIGTSTP, vforked); 925 setsignal(psh, SIGTTOU, vforked); 926 926 } else if (mode == FORK_BG) { 927 ignoresig( SIGINT, vforked);928 ignoresig( SIGQUIT, vforked);927 ignoresig(psh, SIGINT, vforked); 928 ignoresig(psh, SIGQUIT, vforked); 929 929 if ((jp == NULL || jp->nprocs == 0) && 930 ! fd0_redirected_p ()) {930 ! fd0_redirected_p(psh)) { 931 931 close(0); 932 932 if (open(devnull, O_RDONLY) != 0) … … 936 936 #else 937 937 if (mode == FORK_BG) { 938 ignoresig( SIGINT, vforked);939 ignoresig( SIGQUIT, vforked);938 ignoresig(psh, SIGINT, vforked); 939 ignoresig(psh, SIGQUIT, vforked); 940 940 if ((jp == NULL || jp->nprocs == 0) && 941 ! fd0_redirected_p ()) {941 ! fd0_redirected_p(psh)) { 942 942 close(0); 943 943 if (open(devnull, O_RDONLY) != 0) … … 947 947 #endif 948 948 if (wasroot && iflag(psh)) { 949 setsignal( SIGINT, vforked);950 setsignal( SIGQUIT, vforked);951 setsignal( SIGTERM, vforked);949 setsignal(psh, SIGINT, vforked); 950 setsignal(psh, SIGQUIT, vforked); 951 setsignal(psh, SIGTERM, vforked); 952 952 } 953 953 -
trunk/src/kash/miscbltin.c
r1199 r1202 105 105 rflag = 0; 106 106 prompt = NULL; 107 while ((i = nextopt( "p:r")) != '\0') {107 while ((i = nextopt(psh, "p:r")) != '\0') { 108 108 if (i == 'p') 109 109 prompt = optionarg; … … 120 120 error(psh, "arg count"); 121 121 122 if ((ifs = bltinlookup( "IFS", 1)) == NULL)122 if ((ifs = bltinlookup(psh, "IFS", 1)) == NULL) 123 123 ifs = " \t\n"; 124 124 … … 186 186 187 187 STACKSTRNUL(psh, p); 188 setvar( *ap, stackblock(psh), 0);188 setvar(psh, *ap, stackblock(psh), 0); 189 189 ap++; 190 190 STARTSTACKSTR(psh, p); … … 203 203 break; 204 204 } 205 setvar( *ap, stackblock(psh), 0);205 setvar(psh, *ap, stackblock(psh), 0); 206 206 207 207 /* Set any remaining args to "" */ 208 208 while (*++ap != NULL) 209 setvar( *ap, nullstr, 0);209 setvar(psh, *ap, nullstr, 0); 210 210 return status; 211 211 } … … 221 221 int symbolic_mode = 0; 222 222 223 while ((i = nextopt( "S")) != '\0') {223 while ((i = nextopt(psh, "S")) != '\0') { 224 224 symbolic_mode = 1; 225 225 } … … 366 366 367 367 what = 'f'; 368 while ((optc = nextopt( "HSabtfdsmcnpl")) != '\0')368 while ((optc = nextopt(psh, "HSabtfdsmcnpl")) != '\0') 369 369 switch (optc) { 370 370 case 'H': -
trunk/src/kash/redir.c
r1201 r1202 225 225 memory[fd] = 1; 226 226 else 227 copyfd( redir->ndup.dupfd, fd);227 copyfd(psh, redir->ndup.dupfd, fd); 228 228 } 229 229 INTON; … … 238 238 239 239 if (f != fd) { 240 copyfd( f, fd);241 close(f);240 copyfd(psh, f, fd); 241 shfile_close(&psh->fdtab, f); 242 242 } 243 243 INTON; … … 271 271 } 272 272 } 273 if (forkshell( (struct job *)NULL, (union node *)NULL, FORK_NOJOB) == 0) {273 if (forkshell(psh, (struct job *)NULL, (union node *)NULL, FORK_NOJOB) == 0) { 274 274 close(pip[0]); 275 275 signal(SIGINT, SIG_IGN); … … 307 307 if (i == 0) 308 308 fd0_redirected--; 309 close(i);309 shfile_close(&psh->fdtab, i); 310 310 if (rp->renamed[i] >= 0) { 311 copyfd( rp->renamed[i], i);312 close(rp->renamed[i]);311 copyfd(psh, rp->renamed[i], i); 312 shfile_close(&psh->fdtab, rp->renamed[i]); 313 313 } 314 314 } … … 330 330 RESET { 331 331 while (redirlist) 332 popredir( );332 popredir(psh); 333 333 } 334 334 335 335 SHELLPROC { 336 clearredir( 0);336 clearredir(psh, 0); 337 337 } 338 338 … … 341 341 /* Return true if fd 0 has already been redirected at least once. */ 342 342 int 343 fd0_redirected_p () {344 return fd0_redirected != 0;343 fd0_redirected_p(shinstance *psh) { 344 return psh->fd0_redirected != 0; 345 345 } 346 346 … … 376 376 377 377 int 378 copyfd( int from, int to)378 copyfd(shinstance *psh, int from, int to) 379 379 { 380 380 int newfd; 381 381 382 newfd = fcntl(from, F_DUPFD, to);382 newfd = shfile_fcntl(psh, from, F_DUPFD, to); 383 383 if (newfd < 0) { 384 384 if (errno == EMFILE) -
trunk/src/kash/trap.c
r1200 r1202 159 159 if (trap[signo] != NULL) { 160 160 out1fmt(psh, "trap -- "); 161 print_quoted( trap[signo]);161 print_quoted(psh, trap[signo]); 162 162 out1fmt(psh, " %s\n", 163 163 (signo) ? sys_signame[signo] : "EXIT"); … … 207 207 208 208 if (signo != 0) 209 setsignal( signo, 0);209 setsignal(psh, signo, 0); 210 210 INTON; 211 211 ap++; … … 235 235 } 236 236 if (tp != &trap[0]) 237 setsignal( tp - trap, vforked);237 setsignal(psh, tp - trap, vforked); 238 238 INTON; 239 239 } … … 360 360 char *sm; 361 361 362 clear_traps( 0);362 clear_traps(psh, s0); 363 363 for (sm = sigmode ; sm < sigmode + NSIG ; sm++) { 364 364 if (*sm == S_IGN) … … 429 429 if (on == is_interactive) 430 430 return; 431 setsignal( SIGINT, 0);432 setsignal( SIGQUIT, 0);433 setsignal( SIGTERM, 0);431 setsignal(psh, SIGINT, 0); 432 setsignal(psh, SIGQUIT, 0); 433 setsignal(psh, SIGTERM, 0); 434 434 is_interactive = on; 435 435 } … … 462 462 output_flushall(psh); 463 463 #if JOBS 464 setjobctl( 0);464 setjobctl(psh, 0); 465 465 #endif 466 466 l2: _exit(status); -
trunk/src/kash/var.c
r1200 r1202 195 195 char **envp; 196 196 197 initvar( );197 initvar(psh); 198 198 for (envp = environ ; *envp ; envp++) { 199 199 if (strchr(*envp, '=')) { 200 setvareq( *envp, VEXPORT|VTEXTFIXED);200 setvareq(psh, *envp, VEXPORT|VTEXTFIXED); 201 201 } 202 202 } … … 295 295 else { 296 296 handler = &jmploc; 297 setvar( name, val, flags);297 setvar(psh, name, val, flags); 298 298 } 299 299 handler = savehandler; … … 347 347 if (val) 348 348 scopy(val, d); 349 setvareq( nameeq, flags);349 setvareq(psh, nameeq, flags); 350 350 } 351 351 … … 394 394 */ 395 395 if (vp == &vmpath || (vp == &vmail && ! mpathset())) 396 chkmail( 1);396 chkmail(psh, 1); 397 397 INTON; 398 398 return; … … 423 423 INTOFF; 424 424 for (lp = list ; lp ; lp = lp->next) { 425 setvareq( savestr(lp->text), flags);425 setvareq(psh, savestr(lp->text), flags); 426 426 } 427 427 INTON; … … 434 434 435 435 for (lp = list ; lp ; lp = lp->next) 436 mklocal( lp->text, flags);436 mklocal(psh, lp->text, flags); 437 437 } 438 438 … … 528 528 529 529 #ifdef mkinit 530 void shprocvar( void);530 void shprocvar(shinstance *psh); 531 531 532 532 SHELLPROC { 533 shprocvar( );533 shprocvar(psh); 534 534 } 535 535 #endif 536 536 537 537 void 538 shprocvar( void)538 shprocvar(shinstance *psh) 539 539 { 540 540 struct var **vpp; 541 541 struct var *vp, **prev; 542 542 543 for (vpp = vartab ; vpp <vartab + VTABSIZE ; vpp++) {543 for (vpp = psh->vartab ; vpp < psh->vartab + VTABSIZE ; vpp++) { 544 544 for (prev = vpp ; (vp = *prev) != NULL ; ) { 545 545 if ((vp->flags & VEXPORT) == 0) { … … 558 558 } 559 559 } 560 initvar( );560 initvar(psh); 561 561 } 562 562 … … 675 675 int pflag; 676 676 677 pflag = nextopt( "p") == 'p' ? 3 : 0;677 pflag = nextopt(psh, "p") == 'p' ? 3 : 0; 678 678 if (argc <= 1 || pflag) { 679 showvars( pflag ? argv[0] : 0, flag, pflag );679 showvars(psh, pflag ? argv[0] : 0, flag, pflag ); 680 680 return 0; 681 681 } … … 691 691 } 692 692 } 693 setvar( name, p, flag);693 setvar(psh, name, p, flag); 694 694 } 695 695 return 0; … … 709 709 error(psh, "Not in a function"); 710 710 while ((name = *argptr++) != NULL) { 711 mklocal( name, 0);711 mklocal(psh, name, 0); 712 712 } 713 713 return 0; … … 740 740 if (vp == NULL) { 741 741 if (strchr(name, '=')) 742 setvareq( savestr(name), VSTRFIXED|flags);742 setvareq(psh, savestr(name), VSTRFIXED|flags); 743 743 else 744 setvar( name, NULL, VSTRFIXED|flags);744 setvar(psh, name, NULL, VSTRFIXED|flags); 745 745 vp = *vpp; /* the new variable */ 746 746 lvp->text = NULL; … … 751 751 vp->flags |= VSTRFIXED|VTEXTFIXED; 752 752 if (name[vp->name_len] == '=') 753 setvareq( savestr(name), flags);753 setvareq(psh, savestr(name), flags); 754 754 } 755 755 } … … 779 779 ckfree(lvp->text); 780 780 } else if ((lvp->flags & (VUNSET|VSTRFIXED)) == VUNSET) { 781 (void)unsetvar( vp->text, 0);781 (void)unsetvar(psh, vp->text, 0); 782 782 } else { 783 783 if (vp->func && (vp->flags & VNOFUNC) == 0) … … 797 797 { 798 798 if (argc <= 2) 799 return unsetcmd( argc, argv);799 return unsetcmd(psh, argc, argv); 800 800 else if (argc == 3) 801 setvar( argv[1], argv[2], 0);801 setvar(psh, argv[1], argv[2], 0); 802 802 else 803 803 error(psh, "List assignment not implemented"); … … 821 821 int ret = 0; 822 822 823 while ((i = nextopt( "evf")) != '\0') {823 while ((i = nextopt(psh, "evf")) != '\0') { 824 824 if (i == 'f') 825 825 flg_func = 1; … … 862 862 } else { 863 863 if (vp->text[vp->name_len + 1] != '\0') 864 setvar( s, nullstr, 0);864 setvar(psh, s, nullstr, 0); 865 865 vp->flags &= ~VEXPORT; 866 866 vp->flags |= VUNSET; -
trunk/src/kash/var.h
r884 r1202 86 86 #ifdef _MSC_VER 87 87 extern struct var vpath2; 88 #endif 88 #endif 89 89 extern struct var vps1; 90 90 extern struct var vps2;
Note:
See TracChangeset
for help on using the changeset viewer.