1 /******************************************************************************
2 * Copyright (c) 2004, 2008 IBM Corporation
4 * This program and the accompanying materials
5 * are made available under the terms of the BSD License
6 * which accompanies this distribution, and is available at
7 * http://www.opensource.org/licenses/bsd-license.php
10 * IBM Corporation - initial implementation
11 *****************************************************************************/
16 extern int main (int, char**);
17 extern int callback (int, char **);
19 int _start(char *arg_string, long len);
20 unsigned long callback_entry(void *base, unsigned long len);
25 gen_argv(const char *arg_string, int len, char* argv[])
27 const char *str, *str_end, *arg_string_end = arg_string + len;
31 for (i = 0; i < MAX_ARGV; i++)
35 while((*str_end++ != ' ') && (str_end <= arg_string_end));
37 argv[i] = malloc(str_end-str);
39 memcpy (argv[i], str, str_end-str-1);
40 argv[i][str_end-str-1] = '\0';
42 while(*(++str) == ' ');
43 if (str >= arg_string_end)
52 _start(char * arg_string, long len)
58 argc = gen_argv(arg_string, len, argv);
60 rc = main(argc, argv);
66 * Takes a Forth representation of a string and generates an argument array,
67 * then calls callback().
70 callback_entry(void *base, unsigned long len) {
74 argc = gen_argv(base, len, argv);
76 return (callback(argc, argv));