176 src += charLength;
177 }
178 }
179 if (prev == L'\\') {
180 for (i = 0; i < slashes; i++) {
181 dest += copyCh(prev, dest);
182 }
183 }
184 *dest = 0;
185 return done ? src : NULL;
186 }
187
188 int JLI_GetStdArgc() {
189 return stdargc;
190 }
191
192 StdArg* JLI_GetStdArgs() {
193 return stdargs;
194 }
195
196 void JLI_CmdToArgs(char* cmdline) {
197 int nargs = 0;
198 StdArg* argv = NULL;
199 jboolean wildcard = JNI_FALSE;
200 char* src = cmdline;
201
202 // allocate arg buffer with sufficient space to receive the largest arg
203 char* arg = JLI_StringDup(cmdline);
204
205 do {
206 src = next_arg(src, arg, &wildcard);
207 // resize to accommodate another Arg
208 argv = (StdArg*) JLI_MemRealloc(argv, (nargs+1) * sizeof(StdArg));
209 argv[nargs].arg = JLI_StringDup(arg);
210 argv[nargs].has_wildcard = wildcard;
211 *arg = '\0';
212 nargs++;
213 } while (src != NULL);
214
215 JLI_MemFree(arg);
216
217 stdargc = nargs;
218 stdargs = argv;
219 }
220
221 #ifdef IDE_STANDALONE
222 void doexit(int rv) {
223 printf("Hit any key to quit\n");
224 int c = getchar();
225 exit(rv);
226 }
227
228 void doabort() {
229 doexit(1);
230 }
231
232 class Vector {
|
176 src += charLength;
177 }
178 }
179 if (prev == L'\\') {
180 for (i = 0; i < slashes; i++) {
181 dest += copyCh(prev, dest);
182 }
183 }
184 *dest = 0;
185 return done ? src : NULL;
186 }
187
188 int JLI_GetStdArgc() {
189 return stdargc;
190 }
191
192 StdArg* JLI_GetStdArgs() {
193 return stdargs;
194 }
195
196 void JLI_CmdToArgs(char* cmdline, jboolean not_java) {
197 int nargs = 0;
198 StdArg* argv = NULL;
199 jboolean wildcard = JNI_FALSE;
200 char* src = cmdline;
201 JLI_List argsInFile;
202
203 // allocate arg buffer with sufficient space to receive the largest arg
204 char* arg = JLI_StringDup(cmdline);
205
206 do {
207 src = next_arg(src, arg, &wildcard);
208 argsInFile = JLI_ExpandArgFile(arg, not_java);
209 if (argsInFile != NULL) {
210 int cnt, i;
211 // resize to accommodate another Arg
212 cnt = argsInFile->size;
213 argv = (StdArg*) JLI_MemRealloc(argv, (nargs + cnt) * sizeof(StdArg));
214 for (i = 0; i < cnt; i++) {
215 argv[nargs].arg = argsInFile->elements[i];
216 // wildcard is not supported in argfile
217 argv[nargs].has_wildcard = JNI_FALSE;
218 nargs++;
219 }
220 // Shallow free, we reuse the string to avoid copy
221 JLI_MemFree(argsInFile->elements);
222 JLI_MemFree(argsInFile);
223 } else {
224 // resize to accommodate another Arg
225 argv = (StdArg*) JLI_MemRealloc(argv, (nargs+1) * sizeof(StdArg));
226 argv[nargs].arg = JLI_StringDup(arg);
227 argv[nargs].has_wildcard = wildcard;
228 *arg = '\0';
229 nargs++;
230 }
231 *arg = '\0';
232 } while (src != NULL);
233
234 JLI_MemFree(arg);
235
236 stdargc = nargs;
237 stdargs = argv;
238 }
239
240 #ifdef IDE_STANDALONE
241 void doexit(int rv) {
242 printf("Hit any key to quit\n");
243 int c = getchar();
244 exit(rv);
245 }
246
247 void doabort() {
248 doexit(1);
249 }
250
251 class Vector {
|