@@ -133,7 +133,8 @@ - (char **) makeargs:(NSMutableArray*) listArgv argc:(int*) argc
133133 // Operations on individual arguments
134134 NSString *argument = [listArgv objectAtIndex: i];
135135 // 1b) expand environment variables, + "~" (not wildcards ? and *)
136- while ([argument containsString: @" $" ]) {
136+ bool stopParsing = false ;
137+ while (([argument containsString: @" $" ]) && !stopParsing) {
137138 // It has environment variables inside. Work on them one by one.
138139 // position of first "$" sign:
139140 NSRange r1 = [argument rangeOfString: @" $" ];
@@ -152,7 +153,7 @@ - (char **) makeargs:(NSMutableArray*) listArgv argc:(int*) argc
152153 NSString * replacement_string = [NSString stringWithCString: variable encoding: NSASCIIStringEncoding];
153154 variable_string = [[NSString stringWithCString: " $" encoding: NSASCIIStringEncoding] stringByAppendingString: variable_string];
154155 argument = [argument stringByReplacingOccurrencesOfString: variable_string withString: replacement_string];
155- }
156+ } else stopParsing = true ;
156157 }
157158 // Bash spec: only convert "~" if: at the beginning of argument, after a ":" or the first "="
158159 // ("=" scenario for export, but we use setenv, so no "=").
@@ -325,6 +326,7 @@ - (bool)executeCommand:(int)argc argv:(char **)argv {
325326 free (cmd);
326327 stdout = saved_out;
327328 stderr = saved_err;
329+ stdin = _stream.in ;
328330 }
329331 }
330332 return false ;
@@ -341,7 +343,7 @@ - (BOOL)executeCommand:(NSMutableArray*) listArgv {
341343}
342344
343345// This is a superset of all commands available. We check at runtime whether they are actually available (using ios_executable)
344- char * commandList[] = {" ls" , " touch" , " rm" , " cp" , " ln" , " link" , " mv" , " mkdir" , " chown" , " chgrp" , " chflags" , " chmod" , " du" , " df" , " chksum" , " sum" , " stat" , " readlink" , " compress" , " uncompress" , " gzip" , " gunzip" , " tar" , " printenv" , " pwd" , " uname" , " date" , " env" , " id" , " groups" , " whoami" , " uptime" , " w" , " cat" , " wc" , " grep" , " egrep" , " fgrep" , " curl" , " python" , " lua" , " luac" , " amstex" , " cslatex" , " csplain" , " eplain" , " etex" , " jadetex" , " latex" , " mex" , " mllatex" , " mltex" , " pdflatex" , " pdftex" , " pdfcslatex" , " pdfcstex" , " pdfcsplain" , " pdfetex" , " pdfjadetex" , " pdfmex" , " pdfxmltex" , " texsis" , " utf8mex" , " xmltex" , " lualatex" , " luatex" , " texlua" , " texluac" , " dviluatex" , " dvilualatex" , " bibtex" , " setenv" , " unsetenv" , " cd" ,
346+ char * commandList[] = {" ls" , " touch" , " rm" , " cp" , " ln" , " link" , " mv" , " mkdir" , " chown" , " chgrp" , " chflags" , " chmod" , " du" , " df" , " chksum" , " sum" , " stat" , " readlink" , " compress" , " uncompress" , " gzip" , " gunzip" , " tar" , " printenv" , " pwd" , " uname" , " date" , " env" , " id" , " groups" , " whoami" , " uptime" , " w" , " cat" , " wc" , " grep" , " egrep" , " fgrep" , " curl" , " python" , " lua" , " luac" , " amstex" , " cslatex" , " csplain" , " eplain" , " etex" , " jadetex" , " latex" , " mex" , " mllatex" , " mltex" , " pdflatex" , " pdftex" , " pdfcslatex" , " pdfcstex" , " pdfcsplain" , " pdfetex" , " pdfjadetex" , " pdfmex" , " pdfxmltex" , " texsis" , " utf8mex" , " xmltex" , " lualatex" , " luatex" , " texlua" , " texluac" , " dviluatex" , " dvilualatex" , " bibtex" , " setenv" , " unsetenv" , " cd" ,
345347 NULL }; // must end with NULL pointer
346348
347349// Commands defined outside of ios_executable:
0 commit comments