From 76bd596aba36dd13a64c5fd5c26b4f6b7d1d2e13 Mon Sep 17 00:00:00 2001 From: Masanori Ogino Date: Tue, 13 Jun 2017 22:21:08 +0900 Subject: [PATCH] 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 --- main.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/main.c b/main.c index b74513be..c20db326 100644 --- a/main.c +++ b/main.c @@ -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])) {