diff --git a/main.c b/main.c index 2639181a..71e21053 100644 --- a/main.c +++ b/main.c @@ -307,6 +307,17 @@ sexp run_main (int argc, char **argv) { args = SEXP_NULL; env = NULL; + /* SRFI 22: invoke `main` procedure by default if the interpreter is invoked */ + /* as `scheme-r7rs`. */ + if (strncmp(basename(argv[0]), "scheme-r7rs", strlen("scheme-r7rs")) == 0) { + main_symbol = "main"; + /* skip option parsing since we can't pass `--` before the name of script */ + /* to avoid misinterpret the name as options when the interpreter is */ + /* executed via `#!/usr/env/bin scheme-r7rs` shebang. */ + i = 1; + goto done_options; + } + /* parse options */ for (i=1; i < argc && argv[i][0] == '-'; i++) { switch ((c=argv[i][1])) {