Changeset 2654 in kBuild
- Timestamp:
- Sep 9, 2012 6:16:28 PM (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/kash/eval.c
r2653 r2654 677 677 int argc; 678 678 char **envp; 679 int varflag;679 int numvars; 680 680 struct strlist *sp; 681 681 int mode; … … 706 706 psh->back_exitstatus = 0; 707 707 708 /** @todo r=bird: Why is arguments and envvars expanded in this709 * particular order? It would be both faster and simpler to do the710 * envvars first and then continue with the arguments... */711 708 arglist.lastp = &arglist.list; 712 varflag = 1;713 709 /* Expand arguments, ignoring the initial 'name=value' ones */ 714 for (argp = cmd->ncmd.args ; argp ; argp = argp->narg.next) { 715 char *p = argp->narg.text; 716 if (varflag && is_name(*p)) { 717 do { 718 p++; 719 } while (is_in_name(*p)); 720 if (*p == '=') 721 continue; 722 } 710 for (argp = cmd->ncmd.args, numvars = 0 ; argp ; argp = argp->narg.next, numvars++) { 711 char *p = argp->narg.text; 712 char ch = *p; 713 if (is_name(ch)) { 714 do ch = *++p; 715 while (is_in_name(ch)); 716 if (ch == '=') 717 continue; 718 } 719 break; 720 } 721 for (/*continue on argp from above. */ ; argp ; argp = argp->narg.next) 723 722 expandarg(psh, argp, &arglist, EXP_FULL | EXP_TILDE); 724 varflag = 0;725 }726 723 *arglist.lastp = NULL; 727 724 … … 730 727 /* Now do the initial 'name=value' ones we skipped above */ 731 728 varlist.lastp = &varlist.list; 732 for (argp = cmd->ncmd.args ; argp ; argp = argp->narg.next) { 733 char *p = argp->narg.text; 734 if (!is_name(*p)) 735 break; 736 do 737 p++; 738 while (is_in_name(*p)); 739 if (*p != '=') 740 break; 729 for (argp = cmd->ncmd.args ; numvars > 0 && argp ; argp = argp->narg.next, numvars--) 741 730 expandarg(psh, argp, &varlist, EXP_VARTILDE); 742 }743 731 *varlist.lastp = NULL; 744 732
Note:
See TracChangeset
for help on using the changeset viewer.