Treat scheme-r7rs command name as in SRFI 22.

When the interpreter is named `scheme-r7rs`, SRFI 22's semantics is
assumed, invoking `main` procedure regardless of `-r` option.

Fix #416.

Signed-off-by: Masanori Ogino <masanori.ogino@gmail.com>
This commit is contained in:
Masanori Ogino 2017-06-13 22:21:08 +09:00
parent 1a468244f1
commit 76bd596aba

11
main.c
View file

@ -304,6 +304,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])) {