ido uri handling without uri-common - holymoly - A tor enabled gopher client written in CHICKEN scheme Err vernunftzentrum.de 70 hgit clone git://vernunftzentrum.de/holymoly.git URL:git://vernunftzentrum.de/holymoly.git vernunftzentrum.de 70 1Log /ckeen/repos/holymoly/log.gph vernunftzentrum.de 70 1Files /ckeen/repos/holymoly/files.gph vernunftzentrum.de 70 1Refs /ckeen/repos/holymoly/refs.gph vernunftzentrum.de 70 1README /ckeen/repos/holymoly/file/README.gph vernunftzentrum.de 70 1LICENSE /ckeen/repos/holymoly/file/LICENSE.gph vernunftzentrum.de 70 i--- Err vernunftzentrum.de 70 1commit a9f5e6402e1e1de7edc549f54980f2ebc4e91ce5 /ckeen/repos/holymoly/commit/a9f5e6402e1e1de7edc549f54980f2ebc4e91ce5.gph vernunftzentrum.de 70 1parent bef86b5fc6c6f72808291feaf6bc2797537177bc /ckeen/repos/holymoly/commit/bef86b5fc6c6f72808291feaf6bc2797537177bc.gph vernunftzentrum.de 70 hAuthor: Christian Kellermann URL:mailto:ckeen@pestilenz.org vernunftzentrum.de 70 iDate: Wed, 15 Aug 2018 16:24:17 +0200 Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 ido uri handling without uri-common Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 iDiffstat: Err vernunftzentrum.de 70 i holymoly.egg | 2 +- Err vernunftzentrum.de 70 i holymoly.scm | 33 ++++++++++++++++++++----------- Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i2 files changed, 22 insertions(+), 13 deletions(-) Err vernunftzentrum.de 70 i--- Err vernunftzentrum.de 70 1diff --git a/holymoly.egg b/holymoly.egg /ckeen/repos/holymoly/file/holymoly.egg.gph vernunftzentrum.de 70 i@@ -1,5 +1,5 @@ Err vernunftzentrum.de 70 i ((author "Christian Kellermann") Err vernunftzentrum.de 70 i (license BSD) Err vernunftzentrum.de 70 i (synopsis "A gopher client using ncurses and supporting SOCKS proxies") Err vernunftzentrum.de 70 i- (dependencies miscmacros uri-common srfi-1 srfi-4 srfi-71 srfi-13 bitstring) Err vernunftzentrum.de 70 i+ (dependencies miscmacros srfi-1 srfi-4 srfi-71 srfi-13 bitstring) Err vernunftzentrum.de 70 i (components (program holymoly (linkage static) (files "holymoly.scm" "proxy.scm" "cursor.scm") (link-options "-Wl,-lncursesw")))) Err vernunftzentrum.de 70 i \ No newline at end of file Err vernunftzentrum.de 70 1diff --git a/holymoly.scm b/holymoly.scm /ckeen/repos/holymoly/file/holymoly.scm.gph vernunftzentrum.de 70 i@@ -25,8 +25,7 @@ Err vernunftzentrum.de 70 i srfi-1 Err vernunftzentrum.de 70 i srfi-13 Err vernunftzentrum.de 70 i srfi-4 Err vernunftzentrum.de 70 i- srfi-71 Err vernunftzentrum.de 70 i- uri-common) Err vernunftzentrum.de 70 i+ srfi-71) Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i (foreign-declare "#include ") Err vernunftzentrum.de 70 i (foreign-code "setlocale(LC_ALL, \"en_US.UTF-8\");") Err vernunftzentrum.de 70 i@@ -128,7 +127,7 @@ Err vernunftzentrum.de 70 i (prev-cursor! cursor) Err vernunftzentrum.de 70 i (adjust-cursor!)))))) ; backspace Err vernunftzentrum.de 70 i ((113) (k 'quit)) ; q Err vernunftzentrum.de 70 i- ((#x47 #x67) (k (uri->entry (get-user-input "New uri:" (entry->string (current-page))))) pos) ; G Err vernunftzentrum.de 70 i+ ((#x47 #x67) (k (uristring->entry (get-user-input "New uri:" (entry->string (current-page))))) pos) ; G Err vernunftzentrum.de 70 i (else pos))))))))) Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i (define (get-user-input #!optional (prompt "Enter query:") (suggestion "")) Err vernunftzentrum.de 70 i@@ -330,14 +329,24 @@ Err vernunftzentrum.de 70 i ((equal? next 'back) (select-entry (previous-page))) Err vernunftzentrum.de 70 i (else (select-entry next))))) Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i-(define (uri->entry uri-string) Err vernunftzentrum.de 70 i- (let* ((u (uri-reference uri-string)) Err vernunftzentrum.de 70 i- (server (or (uri-host u) (car (uri-path u)))) Err vernunftzentrum.de 70 i- (port (or (uri-port u) 70)) Err vernunftzentrum.de 70 i- (path (or (and (uri-host u) (uri-path u)) '("/" "1"))) Err vernunftzentrum.de 70 i- (type (string->type (second path) 'directory)) Err vernunftzentrum.de 70 i- (selector (string-intersperse (drop path 2) "/"))) Err vernunftzentrum.de 70 i- (make-entry type "" selector server port '()))) Err vernunftzentrum.de 70 i+(define (uristring->entry uri-string) Err vernunftzentrum.de 70 i+ (let* ((selector (if (string-prefix? "gopher://" uri-string) Err vernunftzentrum.de 70 i+ (string-drop uri-string 9) Err vernunftzentrum.de 70 i+ uri-string)) Err vernunftzentrum.de 70 i+ (split-selectors (string-split selector "/")) Err vernunftzentrum.de 70 i+ (host/port (string-split (car split-selectors) ":")) Err vernunftzentrum.de 70 i+ (host (car host/port)) ; always the first list entry Err vernunftzentrum.de 70 i+ (port (if (> (length host/port) 1) Err vernunftzentrum.de 70 i+ (string->number (second host/port)) Err vernunftzentrum.de 70 i+ 70)) Err vernunftzentrum.de 70 i+ (selector (string-join (cdr split-selectors) "/")) ;; without the host part Err vernunftzentrum.de 70 i+ (type (string->type (if (> (string-length selector) 1) Err vernunftzentrum.de 70 i+ (string-take selector 1) Err vernunftzentrum.de 70 i+ "1"))) Err vernunftzentrum.de 70 i+ (final-selector (if (> (string-length selector) 1) Err vernunftzentrum.de 70 i+ (string-drop selector 1) Err vernunftzentrum.de 70 i+ selector))) Err vernunftzentrum.de 70 i+ (make-entry type "" final-selector host port '()))) Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i (define (entry->string e) Err vernunftzentrum.de 70 i (sprintf "gopher://~a:~a/~a" Err vernunftzentrum.de 70 i@@ -360,7 +369,7 @@ Err vernunftzentrum.de 70 i (main-win (newwin (sub1 l) c 0 0)) Err vernunftzentrum.de 70 i (status-win (newwin 1 c (sub1 l) 0)) Err vernunftzentrum.de 70 i (new-status "Starting up!") Err vernunftzentrum.de 70 i- (select-entry (uri->entry (car args))) Err vernunftzentrum.de 70 i+ (select-entry (uristring->entry (car args))) Err vernunftzentrum.de 70 i (exit 0))) Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i ) ;;; end of module definition Err vernunftzentrum.de 70 .