Simplified server server-loop
[scratchy.git] / scratchy.scm
index 6914fb6..0b81523 100644 (file)
@@ -1,6 +1,6 @@
 ;;; Scratchy gopher server
 ;;
-;; Requires Chicken 5.0.0.
+;; Requires Chicken 5
 ;;
 
 ;;; Imports
@@ -20,7 +20,7 @@
 
 ;;; 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))