int parse_options(int argc, char *argv[]) { int c; while ((c = getopt(argc, argv, "+be:E:ip:ql:L:m:u:Vr:F:f:I:A:-")) >= 0) { switch (c) { case 'b': batch_mode = TRUE; break; case 'i': interactive_mode = TRUE; break; case 'q': load_initfile = FALSE; break; case 'V': version(); break; case 'f': further_options(optarg); break; case 'p': profiler_options(optarg); break; case 'F': feature_options(optarg); break; case 'm': main_module = Scm_Intern(SCM_STRING(SCM_MAKE_STR_COPYING(optarg))); break; case 'r': /*FALLTHROUGH*/; case 'u': /*FALLTHROUGH*/; case 'l': /*FALLTHROUGH*/; case 'L': /*FALLTHROUGH*/; case 'I': /*FALLTHROUGH*/; case 'A': /*FALLTHROUGH*/; case 'e': /*FALLTHROUGH*/; case 'E': /*FALLTHROUGH*/; pre_cmds = Scm_Acons(SCM_MAKE_CHAR(c), SCM_MAKE_STR_COPYING(optarg), pre_cmds); break; case '-': break; case '?': usage(); break; } } return optind; }
static void install_release_thunk(ScmVM *vm, ScmObj promise) { /* TODO: the before thunk must be something that prevents restarting the execution process. */ vm->handlers = Scm_Acons(Scm_NullProc(), Scm_MakeSubr(release_promise, (void*)promise, 0, 0, SCM_MAKE_STR("promise_release")), vm->handlers); }