static void init_stack (char *args) { int argc = 0; char *argv[MAX_ARGS]; char *a; char *args_str = str_copy (args); /* Destructively modify string */ while (*args_str != '\0') { /* Skip leading blanks */ while (*args_str == ' ' || *args_str == '\t') args_str++; a = args_str; /* First non-blank char */ /* Find last non-blank, non-null char */ while (*args_str != ' ' && *args_str != '\t' && *args_str != '\0') args_str++; /* Null terminate word */ if (a != args_str) { if (*args_str != '\0') *args_str++ = '\0'; argv [argc++] = a; /* Set next argument to word */ if (MAX_ARGS == argc) { break; /* If too many, ignore rest of list */ } } } initialize_run_stack (argc, argv); }
void initialize_stack(const char *command_line) { //FIXME: eventually run for both or neither int context = 0; reg_image_t ®_image = reg_images[context]; int argc = 0; char *argv[MAX_ARGS]; char *a; char *args = str_copy((char*)command_line); /* Destructively modify string */ char *orig_args = args; while (*args != '\0') { /* Skip leading blanks */ while (*args == ' ' || *args == '\t') args++; /* First non-blank char */ a = args; /* Last non-blank, non-null char */ while (*args != ' ' && *args != '\t' && *args != '\0') args++; /* Terminate word */ if (a != args) { if (*args != '\0') *args++ = '\0'; /* Null terminate */ argv[argc++] = a; if (MAX_ARGS == argc) { break; /* If too many, ignore rest of list */ } } } initialize_run_stack (argc, argv); free (orig_args); }