Changeset 253

Show
Ignore:
Timestamp:
07/09/05 01:25:12 (3 years ago)
Author:
athomas
Message:
  • Trailing args are now expanded from the last numbered argument encountered. eg. with /bin/echo $1 $*, the $* will expand to arguments 2 and on.
Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • op/trunk/main.c

    r251 r253  
    11281128                } 
    11291129        } else { 
     1130        int consumed_args = 1; 
     1131 
    11301132                for (i = 0; i < cmd->nargs; i++) { 
    11311133                        np = cmd->args[i]; 
     
    11361138                                        if (curarg + argc >= MAXARG - 1) 
    11371139                                                fatal(1, "%s: argument length exceeded",cmd->name); 
    1138                                         for (j = 1; j < argc; j++) 
     1140                                        for (j = consumed_args; j < argc; j++) 
    11391141                                                new_argv[curarg++] = argv[j]; 
    11401142                                } else 
    11411143                                if (isdigit(np[1])) { 
    1142                                         if (atoi(np + 1) > argc) 
     1144                                int argi = atoi(np + 1); 
     1145 
     1146                                        if (argi > argc) 
    11431147                                                fatal(1, "%s Referenced argument out of range",cmd->name); 
    11441148                                        if (curarg >= MAXARG - 1) 
    11451149                                                fatal(1, "%s: argument length exceeded",cmd->name); 
    1146                                         new_argv[curarg++] = argv[atoi(np + 1)]; 
     1150                                        new_argv[curarg++] = argv[argi]; 
     1151                                        if (argi >= consumed_args) 
     1152                                                consumed_args = argi + 1; 
    11471153                                } 
    11481154                                continue;