iChange local file support code - clic - Clic is an command line interactive client for gopher written in Common LISP Err bitreich.org 70 hgit clone git://bitreich.org/clic/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/clic/ URL:git://bitreich.org/clic/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/clic/ bitreich.org 70 1Log /scm/clic/log.gph bitreich.org 70 1Files /scm/clic/files.gph bitreich.org 70 1Refs /scm/clic/refs.gph bitreich.org 70 1Tags /scm/clic/tag bitreich.org 70 1README /scm/clic/file/README.md.gph bitreich.org 70 1LICENSE /scm/clic/file/LICENSE.gph bitreich.org 70 i--- Err bitreich.org 70 1commit 04aea88d00b8330bdbde6e6fca0b926821d9f1f1 /scm/clic/commit/04aea88d00b8330bdbde6e6fca0b926821d9f1f1.gph bitreich.org 70 1parent bb2be59d780c8ba98921bdd20ea3383a1c87fb93 /scm/clic/commit/bb2be59d780c8ba98921bdd20ea3383a1c87fb93.gph bitreich.org 70 hAuthor: Solene Rapenne URL:mailto:solene@perso.pw bitreich.org 70 iDate: Thu, 1 Feb 2018 19:54:29 +0100 Err bitreich.org 70 i Err bitreich.org 70 iChange local file support code Err bitreich.org 70 i Err bitreich.org 70 iDiffstat: Err bitreich.org 70 i M clic.lisp | 61 ++++++++++++++++--------------- Err bitreich.org 70 i Err bitreich.org 70 i1 file changed, 32 insertions(+), 29 deletions(-) Err bitreich.org 70 i--- Err bitreich.org 70 1diff --git a/clic.lisp b/clic.lisp /scm/clic/file/clic.lisp.gph bitreich.org 70 i@@ -378,36 +378,30 @@ Err bitreich.org 70 i Err bitreich.org 70 i (defun parse-url(url) Err bitreich.org 70 i "parse a gopher url and return a location" Err bitreich.org 70 i- (if (= 0 (search "file://" url)) Err bitreich.org 70 i- (progn Err bitreich.org 70 i- (load-file-menu (subseq url 7)) Err bitreich.org 70 i- (make-location :host 'local-file Err bitreich.org 70 i- :port nil Err bitreich.org 70 i- :type "1" Err bitreich.org 70 i- :uri url)) Err bitreich.org 70 i- (let ((url (if (search "gopher://" url) Err bitreich.org 70 i- (subseq url 9) Err bitreich.org 70 i- url))) Err bitreich.org 70 i- Err bitreich.org 70 i- ;; splitting with / to get host:port and uri Err bitreich.org 70 i- ;; splitting host and port to get them Err bitreich.org 70 i- (let* ((infos (split url #\/)) Err bitreich.org 70 i- (host-port (split (pop infos) #\:))) Err bitreich.org 70 i- Err bitreich.org 70 i- ;; create the location to visit Err bitreich.org 70 i- (make-location :host (pop host-port) Err bitreich.org 70 i+ Err bitreich.org 70 i+ (let ((url (if (search "gopher://" url) Err bitreich.org 70 i+ (subseq url 9) Err bitreich.org 70 i+ url))) Err bitreich.org 70 i+ Err bitreich.org 70 i+ ;; splitting with / to get host:port and uri Err bitreich.org 70 i+ ;; splitting host and port to get them Err bitreich.org 70 i+ (let* ((infos (split url #\/)) Err bitreich.org 70 i+ (host-port (split (pop infos) #\:))) Err bitreich.org 70 i+ Err bitreich.org 70 i+ ;; create the location to visit Err bitreich.org 70 i+ (make-location :host (pop host-port) Err bitreich.org 70 i Err bitreich.org 70 i- ;; default to port 70 if not supplied Err bitreich.org 70 i- :port (if host-port ;; <- empty if no port given Err bitreich.org 70 i- (parse-integer (car host-port)) Err bitreich.org 70 i- 70) Err bitreich.org 70 i- Err bitreich.org 70 i- ;; if type is empty we default to "1" Err bitreich.org 70 i- :type (let ((type (pop infos))) Err bitreich.org 70 i- (if (< 0 (length type)) type "1")) Err bitreich.org 70 i+ ;; default to port 70 if not supplied Err bitreich.org 70 i+ :port (if host-port ;; <- empty if no port given Err bitreich.org 70 i+ (parse-integer (car host-port)) Err bitreich.org 70 i+ 70) Err bitreich.org 70 i+ Err bitreich.org 70 i+ ;; if type is empty we default to "1" Err bitreich.org 70 i+ :type (let ((type (pop infos))) Err bitreich.org 70 i+ (if (< 0 (length type)) type "1")) Err bitreich.org 70 i Err bitreich.org 70 i- ;; glue remaining args between them Err bitreich.org 70 i- :uri (format nil "~{/~a~}" infos)))))) Err bitreich.org 70 i+ ;; glue remaining args between them Err bitreich.org 70 i+ :uri (format nil "~{/~a~}" infos))))) Err bitreich.org 70 i Err bitreich.org 70 i (defun get-argv() Err bitreich.org 70 i "Parse argv and return it" Err bitreich.org 70 i@@ -682,7 +676,16 @@ Err bitreich.org 70 i ;; parsing command line parameter Err bitreich.org 70 i ;; if not empty we use it or we will use a default url Err bitreich.org 70 i (if argv Err bitreich.org 70 i- (parse-url argv) Err bitreich.org 70 i+ ;; is it a file ? Err bitreich.org 70 i+ (if (= 0 (search "file://" argv)) Err bitreich.org 70 i+ (progn Err bitreich.org 70 i+ (load-file-menu (subseq argv 7)) Err bitreich.org 70 i+ (make-location :host 'local-file Err bitreich.org 70 i+ :port nil Err bitreich.org 70 i+ :type "1" Err bitreich.org 70 i+ :uri argv)) Err bitreich.org 70 i+ ;; it's not a file, create a location Err bitreich.org 70 i+ (parse-url argv)) Err bitreich.org 70 i (make-location :host "gopherproject.org" :port 70 :uri "/" :type "1"))))) Err bitreich.org 70 i Err bitreich.org 70 i ;; is there an output redirection ? Err bitreich.org 70 .