From 9f0ed1a869ac987151c7469081fdf6a7d2ca86cb Mon Sep 17 00:00:00 2001 From: Alex Shinn Date: Sun, 24 Jan 2021 19:57:55 +0900 Subject: [PATCH] Revert "Implement SRFI 193: Command lines" --- lib/srfi/193.sld | 23 ----------------------- main.c | 32 ++++++++------------------------ tests/srfi-193-test.scm | 13 ------------- 3 files changed, 8 insertions(+), 60 deletions(-) delete mode 100644 lib/srfi/193.sld delete mode 100755 tests/srfi-193-test.scm diff --git a/lib/srfi/193.sld b/lib/srfi/193.sld deleted file mode 100644 index 9e4610ea..00000000 --- a/lib/srfi/193.sld +++ /dev/null @@ -1,23 +0,0 @@ - -(define-library (srfi 193) - (export command-line command-name command-args script-file script-directory) - (import (scheme base) (chibi filesystem) (chibi pathname) - (only (meta) command-line raw-script-file)) - (begin - - (define (command-name) - (let ((filename (car (command-line)))) - (and (not (= 0 (string-length filename))) - (path-strip-extension (path-strip-directory filename))))) - - (define (command-args) - (cdr (command-line))) - - (define (script-file) - (and raw-script-file - (path-normalize - (path-resolve raw-script-file (current-directory))))) - - (define (script-directory) - (let ((filename (script-file))) - (and filename (string-append (path-directory filename) "/")))))) diff --git a/main.c b/main.c index 81581560..1374d45e 100644 --- a/main.c +++ b/main.c @@ -9,8 +9,7 @@ #include "chibi/eval.h" #include "chibi/gc_heap.h" -#define sexp_command_line_symbol "command-line" -#define sexp_raw_script_file_symbol "raw-script-file" +#define sexp_argv_symbol "command-line" #define sexp_import_prefix "(import (" #define sexp_import_suffix "))" @@ -283,14 +282,6 @@ static void do_init_context (sexp* ctx, sexp* env, sexp_uint_t heap_size, #define init_context() if (! ctx) do { \ do_init_context(&ctx, &env, heap_size, heap_max_size, fold_case); \ sexp_gc_preserve4(ctx, tmp, sym, args, env); \ - sexp_set_parameter( \ - ctx, sexp_meta_env(ctx), \ - sym=sexp_intern(ctx, sexp_command_line_symbol, -1), \ - args=sexp_cons(ctx, sexp_c_string(ctx,"",-1), SEXP_NULL)); \ - sexp_env_define( \ - ctx, sexp_meta_env(ctx), \ - sym=sexp_intern(ctx, sexp_raw_script_file_symbol, -1), \ - SEXP_FALSE); \ } while (0) #define load_init(bootp) if (! init_loaded++) do { \ @@ -315,7 +306,7 @@ sexp run_main (int argc, char **argv) { sexp_uint_t heap_size=0, heap_max_size=SEXP_MAXIMUM_HEAP_SIZE; sexp out=SEXP_FALSE, ctx=NULL, ls; sexp_gc_var4(tmp, sym, args, env); - args = NULL; + args = SEXP_NULL; env = NULL; /* SRFI 22: invoke `main` procedure by default if the interpreter is */ @@ -554,22 +545,15 @@ sexp run_main (int argc, char **argv) { done_options: if (!quit || main_symbol != NULL) { init_context(); - load_init(i < argc || main_symbol != NULL); /* build argument list */ - if (i < argc) { - args = SEXP_NULL; + if (i < argc) for (j=argc-1; j>=i; j--) args = sexp_cons(ctx, tmp=sexp_c_string(ctx,argv[j],-1), args); - sexp_set_parameter( - ctx, sexp_meta_env(ctx), - sym=sexp_intern(ctx, sexp_command_line_symbol, -1), - args); - sexp_env_define( - ctx, sexp_meta_env(ctx), - sym=sexp_intern(ctx, sexp_raw_script_file_symbol, -1), - sexp_c_string(ctx,argv[i],-1)); - } - + /* if no script name, use interpreter name */ + if (i >= argc || main_module != NULL) + args = sexp_cons(ctx, tmp=sexp_c_string(ctx,argv[0],-1), args); + load_init(i < argc || main_symbol != NULL); + sexp_set_parameter(ctx, sexp_meta_env(ctx), sym=sexp_intern(ctx, sexp_argv_symbol, -1), args); if (i >= argc && main_symbol == NULL) { /* no script or main, run interactively */ repl(ctx, env); diff --git a/tests/srfi-193-test.scm b/tests/srfi-193-test.scm deleted file mode 100755 index 7490dc75..00000000 --- a/tests/srfi-193-test.scm +++ /dev/null @@ -1,13 +0,0 @@ -#! /usr/bin/env chibi-scheme - -(import (scheme base) (scheme write) (srfi 193)) - -(define-syntax pp - (syntax-rules () - ((_ expr) (begin (write 'expr) (display " => ") (write expr) (newline))))) - -(pp (command-line)) -(pp (command-name)) -(pp (command-args)) -(pp (script-file)) -(pp (script-directory))