;;; Scratchy gopher server
;;
-;; Requires Chicken 5.0.0.
+;; Requires Chicken 5
;;
;;; Imports
;;; Global constants
-(define scratchy-version "1.2.0")
+(define scratchy-version "1.2.1")
(define scratchy-footer
(conc "\n"
" on " (seconds->string)))
(condition-case
(let* ((line (read-line in-port))
- (selector (string-trim-both line)))
+ (selector-raw (string-trim-both line))
+ (selector (if (= (string-length selector-raw) 0)
+ "/"
+ selector-raw)))
(condition-case
(begin
(with-output-to-port out-port
(lambda ()
- (serve-selector (if (= (string-length selector) 0)
- "/"
- selector)
- config)))
+ (serve-selector selector config)))
(print "... served selector '" selector "'. Closing connection."))
(o (exn)
(print-error-message o out-port)
(selector (car selector-list))
(arguments (cdr selector-list)))
(if (string-contains selector "|")
- (let ((l (string-split selector "|")))
+ (let ((l (string-split selector "|" #t)))
(serve-script (car l) (cdr l) config))
(case (infer-selector-type selector)
((1) (serve-directory-file selector config))
- ((7) (let ((l (string-split selector "?")))
+ ((7) (let ((l (string-split selector "?" #t)))
(serve-script (car l) arguments config)))
((0) (serve-text-file selector config))
((h) (serve-url selector config))