This commit is contained in:
Alex Shinn 2017-06-17 21:53:39 +09:00
commit dc4559d692
5 changed files with 19 additions and 18 deletions

2
.gitignore vendored
View file

@ -48,9 +48,11 @@ lib/chibi/process.c
lib/chibi/stty.c lib/chibi/stty.c
lib/chibi/system.c lib/chibi/system.c
lib/chibi/time.c lib/chibi/time.c
lib/srfi/144/math.c
*.tgz *.tgz
*.html *.html
*.img *.img
*.err
*.fasl *.fasl
!index.html !index.html

View file

@ -522,4 +522,4 @@
(verbose? boolean (#\v "verbose")))) (verbose? boolean (#\v "verbose"))))
,run-app)) ,run-app))
(define (main args) (run-application app-spec args)) (define (main args) (run-application app-spec))

View file

@ -280,18 +280,17 @@
res)))) res))))
(define (main args) (define (main args)
(let ((args (cdr args))) (cond
(cond ((equal? "t" (car args))
((equal? "t" (car args)) (for-each (lambda (f) (write-string f) (newline)) (tar-files (cadr args))))
(for-each (lambda (f) (write-string f) (newline)) (tar-files (cadr args)))) ((equal? "x" (car args))
((equal? "x" (car args)) (if (tar-safe? (cadr args))
(if (tar-safe? (cadr args)) (tar-extract (cadr args))
(tar-extract (cadr args)) (error "tar file not a single relative directory" (cadr args))))
(error "tar file not a single relative directory" (cadr args)))) ((equal? "c" (car args))
((equal? "c" (car args)) (tar-create (cadr args) (cddr args)))
(tar-create (cadr args) (cddr args))) ((equal? "f" (car args))
((equal? "f" (car args)) (write-string
(write-string
(utf8->string (tar-extract-file (cadr args) (car (cddr args)))))) (utf8->string (tar-extract-file (cadr args) (car (cddr args))))))
(else (else
(error "unknown tar command" (car args)))))) (error "unknown tar command" (car args)))))

2
main.c
View file

@ -597,7 +597,7 @@ sexp run_main (int argc, char **argv) {
sym = sexp_intern(ctx, main_symbol, -1); sym = sexp_intern(ctx, main_symbol, -1);
tmp = sexp_env_ref(ctx, env, sym, SEXP_FALSE); tmp = sexp_env_ref(ctx, env, sym, SEXP_FALSE);
if (sexp_procedurep(tmp)) { if (sexp_procedurep(tmp)) {
args = sexp_list1(ctx, args); args = sexp_list1(ctx, sexp_cdr(args));
check_exception(ctx, sexp_apply(ctx, tmp, args)); check_exception(ctx, sexp_apply(ctx, tmp, args));
} else { } else {
fprintf(stderr, "couldn't find main binding: %s in %s\n", main_symbol, main_module ? main_module : argv[i]); fprintf(stderr, "couldn't find main binding: %s in %s\n", main_symbol, main_module ? main_module : argv[i]);

View file

@ -3,9 +3,9 @@
(begin (begin
(define (main args) (define (main args)
(write-string "Hello, ") (write-string "Hello, ")
(write-string (if (pair? (cdr args)) (cadr args) "world!")) (write-string (if (pair? args) (car args) "world!"))
(newline)) (newline))
(define (bye args) (define (bye args)
(write-string "Goodbye, ") (write-string "Goodbye, ")
(write-string (if (pair? (cdr args)) (cadr args) "world!")) (write-string (if (pair? args) (car args) "world!"))
(newline)))) (newline))))