[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
guile-scsh: `command-line-arguments' needs nil check
From: |
William Xu |
Subject: |
guile-scsh: `command-line-arguments' needs nil check |
Date: |
Sat, 04 Feb 2006 13:00:24 +0800 |
User-agent: |
Gnus/5.110004 (No Gnus v0.4) Emacs/22.0.50 (gnu/linux) |
Hi, there
Guile Version: 1.6.7-2, on debian unstable. (I noticed cvs guile-scsh on
savannah hasn't got updated for years..)
In file `scsh.scm', line 670,
;;; Some globals.
;;(define %command-line '()) ; Includes program.
(define command-line-arguments ; Doesn't include program.
(cdr (command-line)))
Seems nil check for (command-line) is needed. When i call guile scripts
from C, i.e.,
scm_c_primitive_load("script.scm");
in the script, i simply load guile-scsh lib,
(load-from-path "scsh/init")
Following is the backtrace, and a patch at end.
---------------------------------8<-------------------------------------
williamxu:~/studio/my_repo/qq/src$ ./qq
Backtrace:
In unknown file:
?: 40 (let ((full-name #)) (let (#) (if already # #)))
...
?: 41 (begin (if # #) (make-modules-in # full-name))
?: 42* (if (or # #) (try-load-module name))
?: 43 [try-load-module (scsh scsh)]
?: 44 (or (begin (try-module-linked name)) (try-module-autoload name) ...)
?: 45* [try-module-autoload (scsh scsh)]
?: 46 (let* (# # # #) (resolve-module dir-hint-module-name #f) (and # #))
...
?: 47 (letrec ((load-file #)) (dynamic-wind (lambda () #) (lambda () #)
...) ...)
?: 48* [dynamic-wind #<procedure #f ()> #<procedure #f ()> #<procedure #f
()>]
?: 49* [#<procedure #f ()>]
?: 50* (let ((file #)) (cond (# => #) (# => #)))
?: 51 [#<procedure #f (full)>
"/home/william/share/guile/site/scsh/scsh.scm"]
?: 52 [load-file #<primitive-procedure primitive-load> ...]
?: 53* [save-module-excursion #<procedure #f ()>]
?: 54 (let (# #) (dynamic-wind # thunk #))
?: 55 [dynamic-wind #<procedure #f ()> #<procedure #f ()> #<procedure #f
()>]
?: 56* [#<procedure #f ()>]
?: 57* [primitive-load "/home/william/share/guile/site/scsh/scsh.scm"]
In /home/william/share/guile/site/scsh/scsh.scm:
667: 58* (define command-line-arguments (cdr (command-line)))
670: 59* [cdr #f]
/home/william/share/guile/site/scsh/scsh.scm:670:5: In procedure cdr in
expression (cdr (command-line)):
/home/william/share/guile/site/scsh/scsh.scm:670:5: Wrong type argument in
position 1: #f
williamxu:~/studio/my_repo/qq/src$ ./qq
---------------------------------8<-------------------------------------
The patch,
williamxu:~/share/guile/site/scsh$ diff -u scsh.scm.old scsh.scm
--- scsh.scm.old 2006-02-04 12:42:24.000000000 +0800
+++ scsh.scm 2006-02-04 12:44:42.872000000 +0800
@@ -665,7 +665,10 @@
;;; Some globals.
;;(define %command-line '()) ; Includes program.
(define command-line-arguments ; Doesn't include program.
- (cdr (command-line)))
+ ;; Add nil check. (xwl)
+ (let ((args (command-line)))
+ (if args
+ (cdr args))))
;; not implemented in Guile.
;;(define (set-command-line-args! args)
williamxu:~/share/guile/site/scsh$
--
William
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- guile-scsh: `command-line-arguments' needs nil check,
William Xu <=