. ;;;; (define ellinika-document-root "/home/gray/public_html/ellinika") (define ellinika-dispatcher "disp.html") (define (get-file-name) (call-with-current-continuation (lambda (return) (for-each (lambda (lang) (let loop ((slang lang) (suff (list #\. #\_))) (let ((dir (string-append ellinika-document-root "/" slang))) (cond ((access? (string-append dir "/index.html") R_OK) (return (string-append dir "/index.html"))) ((not (null? suff)) (let ((p (let itr ((sl suff)) (if (null? sl) #f (let ((x (string-split slang (car sl)))) (if (null? (cdr x)) (itr (cdr sl)) (cons (car x) (cdr sl)))))))) (if p (loop (car p) (cdr p))))))))) (map (lambda (s) (cond ((string-split s #\;) => (lambda (l) (car l))) (else s))) (string-split (or (table:get (request-rec:subprocess-env Request) "HTTP_ACCEPT_LANGUAGE") "") #\,))) (string-append ellinika-document-root "/" ellinika-dispatcher)))) (with-input-from-file (get-file-name) (lambda () (do ((line (read-line) (read-line))) ((eof-object? line)) (display line) (newline)))) ?>