i[NEW] drop bookmarks, add local file - 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 97537fd28ac1ae938791dcacb09bb51180aaf9b8 /scm/clic/commit/97537fd28ac1ae938791dcacb09bb51180aaf9b8.gph bitreich.org 70 1parent 80f0989facc729b1b9aa9ae9a0a6d6a58ebbf3b8 /scm/clic/commit/80f0989facc729b1b9aa9ae9a0a6d6a58ebbf3b8.gph bitreich.org 70 hAuthor: Solene Rapenne URL:mailto:solene@perso.pw bitreich.org 70 iDate: Thu, 1 Feb 2018 19:21:05 +0100 Err bitreich.org 70 i Err bitreich.org 70 i[NEW] drop bookmarks, add local file Err bitreich.org 70 i Err bitreich.org 70 iDiffstat: Err bitreich.org 70 i M clic.lisp | 382 ++++++++++++++----------------- Err bitreich.org 70 i Err bitreich.org 70 i1 file changed, 176 insertions(+), 206 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@@ -51,15 +51,10 @@ Err bitreich.org 70 i ;;; a list containing the last viewed pages Err bitreich.org 70 i (defparameter *history* '()) Err bitreich.org 70 i Err bitreich.org 70 i-;;; a list containing the bookmarks Err bitreich.org 70 i-;;; altered by (add-bookmark) and (load-bookmark) Err bitreich.org 70 i-(defparameter *bookmarks* nil) Err bitreich.org 70 i- Err bitreich.org 70 i ;;; contain duration of the last request Err bitreich.org 70 i (defparameter *duration* 0) Err bitreich.org 70 i Err bitreich.org 70 i ;;; when clic loads a type 1 page, we store location structures here Err bitreich.org 70 i-;;; when clic display the bookmark, we store bookmarks locations here Err bitreich.org 70 i (defparameter *links* (make-hash-table)) Err bitreich.org 70 i Err bitreich.org 70 i ;;; Colors for use in the code Err bitreich.org 70 i@@ -70,11 +65,6 @@ Err bitreich.org 70 i (list "0" "1" "2" "3" "4" "5" "6" "i" Err bitreich.org 70 i "h" "7" "8" "9" "+" "T" "g" "I")) Err bitreich.org 70 i Err bitreich.org 70 i-;;;; BEGIN CUSTOMIZABLE Err bitreich.org 70 i-;;; name/location of the bookmark file Err bitreich.org 70 i-(defparameter *bookmark-file* "bookmark.lisp") Err bitreich.org 70 i-;;;; END CUSTOMIZABLE Err bitreich.org 70 i- Err bitreich.org 70 i ;;;; END GLOBAL VARIABLES Err bitreich.org 70 i Err bitreich.org 70 i ;;;; BEGIN ANSI colors Err bitreich.org 70 i@@ -158,103 +148,108 @@ Err bitreich.org 70 i Err bitreich.org 70 i (defun formatted-output(line) Err bitreich.org 70 i "Used to display gopher response with color one line at a time" Err bitreich.org 70 i- (let ((line-type (subseq line 0 1)) Err bitreich.org 70 i- (field (split (subseq line 1) #\Tab))) Err bitreich.org 70 i- Err bitreich.org 70 i- ;; if split worked Err bitreich.org 70 i- (when (= (length field) 4) Err bitreich.org 70 i- (let ((line-number (+ 1 (hash-table-count *links*))) Err bitreich.org 70 i- (text (car field)) Err bitreich.org 70 i- (uri (cadr field)) Err bitreich.org 70 i- (host (caddr field)) Err bitreich.org 70 i- (port (parse-integer (cadddr field)))) Err bitreich.org 70 i- Err bitreich.org 70 i- ;; see RFC 1436 Err bitreich.org 70 i- ;; section 3.8 Err bitreich.org 70 i- (if (member line-type *allowed-selectors* :test #'equal) Err bitreich.org 70 i- (progn Err bitreich.org 70 i- Err bitreich.org 70 i- ;; RFC, page 4 Err bitreich.org 70 i- (check "i" Err bitreich.org 70 i- (print-with-color text)) Err bitreich.org 70 i- Err bitreich.org 70 i- ;; 0 text file Err bitreich.org 70 i- (check "0" Err bitreich.org 70 i- (setf (gethash line-number *links*) Err bitreich.org 70 i- (make-location :host host :port port :uri uri :type line-type )) Err bitreich.org 70 i- (print-with-color text 'file line-number)) Err bitreich.org 70 i- Err bitreich.org 70 i- ;; 1 directory Err bitreich.org 70 i- (check "1" Err bitreich.org 70 i- (setf (gethash line-number *links*) Err bitreich.org 70 i- (make-location :host host :port port :uri uri :type line-type )) Err bitreich.org 70 i- (print-with-color text 'folder line-number)) Err bitreich.org 70 i- Err bitreich.org 70 i- ;; 2 CSO phone-book Err bitreich.org 70 i- ;; WE SKIP Err bitreich.org 70 i- (check "2") Err bitreich.org 70 i- Err bitreich.org 70 i- ;; 3 Error Err bitreich.org 70 i- (check "3" Err bitreich.org 70 i- (print-with-color "error" 'red line-number)) Err bitreich.org 70 i- Err bitreich.org 70 i- ;; 4 BinHexed Mac file Err bitreich.org 70 i- (check "4" Err bitreich.org 70 i- (print-with-color text)) Err bitreich.org 70 i- Err bitreich.org 70 i- ;; 5 DOS Binary archive Err bitreich.org 70 i- (check "5" Err bitreich.org 70 i- (print-with-color "selector 5 not implemented" 'red)) Err bitreich.org 70 i- Err bitreich.org 70 i- ;; 6 Unix uuencoded file Err bitreich.org 70 i- (check "6" Err bitreich.org 70 i- (print-with-color "selector 6 not implemented" 'red)) Err bitreich.org 70 i- Err bitreich.org 70 i- ;; 7 Index search server Err bitreich.org 70 i- (check "7" Err bitreich.org 70 i- (setf (gethash line-number *links*) Err bitreich.org 70 i- (make-location :host host :port port :uri uri :type line-type )) Err bitreich.org 70 i- (print-with-color text 'red line-number)) Err bitreich.org 70 i- Err bitreich.org 70 i- ;; 8 Telnet session Err bitreich.org 70 i- (check "8" Err bitreich.org 70 i- (print-with-color "selector 8 not implemented" 'red)) Err bitreich.org 70 i- Err bitreich.org 70 i- ;; 9 Binary Err bitreich.org 70 i- (check "9" Err bitreich.org 70 i- (setf (gethash line-number *links*) Err bitreich.org 70 i- (make-location :host host :port port :uri uri :type line-type )) Err bitreich.org 70 i- (print-with-color text 'red line-number)) Err bitreich.org 70 i- Err bitreich.org 70 i- ;; + redundant server Err bitreich.org 70 i- (check "+" Err bitreich.org 70 i- (print-with-color "selector + not implemented" 'red)) Err bitreich.org 70 i- Err bitreich.org 70 i- ;; T text based tn3270 session Err bitreich.org 70 i- (check "T" Err bitreich.org 70 i- (print-with-color "selector T not implemented" 'red)) Err bitreich.org 70 i- Err bitreich.org 70 i- ;; g GIF file Err bitreich.org 70 i- (check "g" Err bitreich.org 70 i- (setf (gethash line-number *links*) Err bitreich.org 70 i- (make-location :host host :port port :uri uri :type line-type)) Err bitreich.org 70 i- (print-with-color text 'red line-number)) Err bitreich.org 70 i- Err bitreich.org 70 i- ;; I image Err bitreich.org 70 i- (check "I" Err bitreich.org 70 i- (setf (gethash line-number *links*) Err bitreich.org 70 i- (make-location :host host :port port :uri uri :type line-type )) Err bitreich.org 70 i- (print-with-color text 'red line-number)) Err bitreich.org 70 i- Err bitreich.org 70 i- ;; h http link Err bitreich.org 70 i- (check "h" Err bitreich.org 70 i- (setf (gethash line-number *links*) uri) Err bitreich.org 70 i- (print-with-color text 'http line-number))) ;;;; end of known types Err bitreich.org 70 i- Err bitreich.org 70 i- ;; unknown type Err bitreich.org 70 i- (print-with-color (format nil Err bitreich.org 70 i- "invalid type ~a : ~a" line-type text) Err bitreich.org 70 i- 'red)))))) Err bitreich.org 70 i+ Err bitreich.org 70 i+ ;; we check that the line is longer than 1 char and that it has tabs Err bitreich.org 70 i+ (when (and Err bitreich.org 70 i+ (< 1 (length line)) Err bitreich.org 70 i+ (position #\Tab line)) Err bitreich.org 70 i+ (let ((line-type (subseq line 0 1)) Err bitreich.org 70 i+ (field (split (subseq line 1) #\Tab))) Err bitreich.org 70 i+ Err bitreich.org 70 i+ ;; if split worked Err bitreich.org 70 i+ (when (= (length field) 4) Err bitreich.org 70 i+ (let ((line-number (+ 1 (hash-table-count *links*))) Err bitreich.org 70 i+ (text (car field)) Err bitreich.org 70 i+ (uri (cadr field)) Err bitreich.org 70 i+ (host (caddr field)) Err bitreich.org 70 i+ (port (parse-integer (cadddr field)))) Err bitreich.org 70 i+ Err bitreich.org 70 i+ ;; see RFC 1436 Err bitreich.org 70 i+ ;; section 3.8 Err bitreich.org 70 i+ (if (member line-type *allowed-selectors* :test #'equal) Err bitreich.org 70 i+ (progn Err bitreich.org 70 i+ Err bitreich.org 70 i+ ;; RFC, page 4 Err bitreich.org 70 i+ (check "i" Err bitreich.org 70 i+ (print-with-color text)) Err bitreich.org 70 i+ Err bitreich.org 70 i+ ;; 0 text file Err bitreich.org 70 i+ (check "0" Err bitreich.org 70 i+ (setf (gethash line-number *links*) Err bitreich.org 70 i+ (make-location :host host :port port :uri uri :type line-type )) Err bitreich.org 70 i+ (print-with-color text 'file line-number)) Err bitreich.org 70 i+ Err bitreich.org 70 i+ ;; 1 directory Err bitreich.org 70 i+ (check "1" Err bitreich.org 70 i+ (setf (gethash line-number *links*) Err bitreich.org 70 i+ (make-location :host host :port port :uri uri :type line-type )) Err bitreich.org 70 i+ (print-with-color text 'folder line-number)) Err bitreich.org 70 i+ Err bitreich.org 70 i+ ;; 2 CSO phone-book Err bitreich.org 70 i+ ;; WE SKIP Err bitreich.org 70 i+ (check "2") Err bitreich.org 70 i+ Err bitreich.org 70 i+ ;; 3 Error Err bitreich.org 70 i+ (check "3" Err bitreich.org 70 i+ (print-with-color "error" 'red line-number)) Err bitreich.org 70 i+ Err bitreich.org 70 i+ ;; 4 BinHexed Mac file Err bitreich.org 70 i+ (check "4" Err bitreich.org 70 i+ (print-with-color text)) Err bitreich.org 70 i+ Err bitreich.org 70 i+ ;; 5 DOS Binary archive Err bitreich.org 70 i+ (check "5" Err bitreich.org 70 i+ (print-with-color "selector 5 not implemented" 'red)) Err bitreich.org 70 i+ Err bitreich.org 70 i+ ;; 6 Unix uuencoded file Err bitreich.org 70 i+ (check "6" Err bitreich.org 70 i+ (print-with-color "selector 6 not implemented" 'red)) Err bitreich.org 70 i+ Err bitreich.org 70 i+ ;; 7 Index search server Err bitreich.org 70 i+ (check "7" Err bitreich.org 70 i+ (setf (gethash line-number *links*) Err bitreich.org 70 i+ (make-location :host host :port port :uri uri :type line-type )) Err bitreich.org 70 i+ (print-with-color text 'red line-number)) Err bitreich.org 70 i+ Err bitreich.org 70 i+ ;; 8 Telnet session Err bitreich.org 70 i+ (check "8" Err bitreich.org 70 i+ (print-with-color "selector 8 not implemented" 'red)) Err bitreich.org 70 i+ Err bitreich.org 70 i+ ;; 9 Binary Err bitreich.org 70 i+ (check "9" Err bitreich.org 70 i+ (setf (gethash line-number *links*) Err bitreich.org 70 i+ (make-location :host host :port port :uri uri :type line-type )) Err bitreich.org 70 i+ (print-with-color text 'red line-number)) Err bitreich.org 70 i+ Err bitreich.org 70 i+ ;; + redundant server Err bitreich.org 70 i+ (check "+" Err bitreich.org 70 i+ (print-with-color "selector + not implemented" 'red)) Err bitreich.org 70 i+ Err bitreich.org 70 i+ ;; T text based tn3270 session Err bitreich.org 70 i+ (check "T" Err bitreich.org 70 i+ (print-with-color "selector T not implemented" 'red)) Err bitreich.org 70 i+ Err bitreich.org 70 i+ ;; g GIF file Err bitreich.org 70 i+ (check "g" Err bitreich.org 70 i+ (setf (gethash line-number *links*) Err bitreich.org 70 i+ (make-location :host host :port port :uri uri :type line-type)) Err bitreich.org 70 i+ (print-with-color text 'red line-number)) Err bitreich.org 70 i+ Err bitreich.org 70 i+ ;; I image Err bitreich.org 70 i+ (check "I" Err bitreich.org 70 i+ (setf (gethash line-number *links*) Err bitreich.org 70 i+ (make-location :host host :port port :uri uri :type line-type )) Err bitreich.org 70 i+ (print-with-color text 'red line-number)) Err bitreich.org 70 i+ Err bitreich.org 70 i+ ;; h http link Err bitreich.org 70 i+ (check "h" Err bitreich.org 70 i+ (setf (gethash line-number *links*) uri) Err bitreich.org 70 i+ (print-with-color text 'http line-number))) ;;;; end of known types Err bitreich.org 70 i+ Err bitreich.org 70 i+ ;; unknown type Err bitreich.org 70 i+ (print-with-color (format nil Err bitreich.org 70 i+ "invalid type ~a : ~a" line-type text) Err bitreich.org 70 i+ 'red))))))) Err bitreich.org 70 i Err bitreich.org 70 i (defun download-binary(host port uri) Err bitreich.org 70 i (easy-socket Err bitreich.org 70 i@@ -338,6 +333,22 @@ Err bitreich.org 70 i Err bitreich.org 70 i (display-interactive-menu)) Err bitreich.org 70 i Err bitreich.org 70 i+(defun load-file-menu(path) Err bitreich.org 70 i+ Err bitreich.org 70 i+ ;; we set the buffer Err bitreich.org 70 i+ (setf *buffer* Err bitreich.org 70 i+ (make-array 200 Err bitreich.org 70 i+ :fill-pointer 0 Err bitreich.org 70 i+ :initial-element nil Err bitreich.org 70 i+ :adjustable t)) Err bitreich.org 70 i+ Err bitreich.org 70 i+ (with-open-file (stream path Err bitreich.org 70 i+ :direction :input) Err bitreich.org 70 i+ (loop for line = (read-line stream nil nil) Err bitreich.org 70 i+ while line Err bitreich.org 70 i+ do Err bitreich.org 70 i+ (vector-push line *buffer*))) Err bitreich.org 70 i+ (display-interactive-menu)) Err bitreich.org 70 i Err bitreich.org 70 i (defun p() Err bitreich.org 70 i "browse to the previous link" Err bitreich.org 70 i@@ -350,51 +361,11 @@ Err bitreich.org 70 i (when (<= 1 (length *history*)) Err bitreich.org 70 i (visit (pop *history*)))) Err bitreich.org 70 i Err bitreich.org 70 i-(defun load-bookmark() Err bitreich.org 70 i- "Restore the bookmark from file" Err bitreich.org 70 i- (when (probe-file *bookmark-file*) Err bitreich.org 70 i- (with-open-file (x *bookmark-file* :direction :input) Err bitreich.org 70 i- (setf *bookmarks* (read x))))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun save-bookmark() Err bitreich.org 70 i- "Dump the bookmark to file" Err bitreich.org 70 i- (with-open-file (x *bookmark-file* Err bitreich.org 70 i- :direction :output Err bitreich.org 70 i- :if-does-not-exist :create Err bitreich.org 70 i- :if-exists :supersede) Err bitreich.org 70 i- (print *bookmarks* x))) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun add-bookmark() Err bitreich.org 70 i- "Add a new bookmark" Err bitreich.org 70 i- (push (car *history*) *bookmarks*) Err bitreich.org 70 i- (save-bookmark)) Err bitreich.org 70 i- Err bitreich.org 70 i-(defun show-bookmarks() Err bitreich.org 70 i- "display the bookmarks like a page" Err bitreich.org 70 i- (setf *links* (make-hash-table)) Err bitreich.org 70 i- Err bitreich.org 70 i- ;; for each bookmark we add it to *links* Err bitreich.org 70 i- ;; and display it Err bitreich.org 70 i- (loop for bookmark in *bookmarks* Err bitreich.org 70 i- counting bookmark into line-number Err bitreich.org 70 i- while bookmark Err bitreich.org 70 i- do Err bitreich.org 70 i- (progn Err bitreich.org 70 i- (setf (gethash line-number *links*) bookmark) Err bitreich.org 70 i- (print-with-color (concatenate 'string Err bitreich.org 70 i- (location-host bookmark) Err bitreich.org 70 i- " " Err bitreich.org 70 i- (location-type bookmark) Err bitreich.org 70 i- (location-uri bookmark)) Err bitreich.org 70 i- 'file line-number)))) Err bitreich.org 70 i- Err bitreich.org 70 i (defun help-shell() Err bitreich.org 70 i "show help for the shell" Err bitreich.org 70 i (format t "number : go to link n~%") Err bitreich.org 70 i (format t "p or / : go to previous page~%") Err bitreich.org 70 i (format t "h : display history~%") Err bitreich.org 70 i- (format t "b or - : display bookmarks and choose a link from it~%") Err bitreich.org 70 i- (format t "a or + : add a bookmark~%") Err bitreich.org 70 i (format t "r or * : reload the page~%") Err bitreich.org 70 i (format t "help : show this help~%") Err bitreich.org 70 i (format t "d : dump the raw reponse~%") Err bitreich.org 70 i@@ -403,29 +374,36 @@ 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- (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- 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+ (if (probe-file url) Err bitreich.org 70 i+ (progn Err bitreich.org 70 i+ (load-file-menu url) 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+ ;; 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 Err bitreich.org 70 i (defun get-argv() Err bitreich.org 70 i "Parse argv and return it" Err bitreich.org 70 i@@ -440,18 +418,6 @@ Err bitreich.org 70 i ((string= "help" input) Err bitreich.org 70 i (help-shell)) Err bitreich.org 70 i Err bitreich.org 70 i- ;; bookmark current link Err bitreich.org 70 i- ((or Err bitreich.org 70 i- (string= "a" input) Err bitreich.org 70 i- (string= "+" input)) Err bitreich.org 70 i- (add-bookmark)) Err bitreich.org 70 i- Err bitreich.org 70 i- ;; show bookmarks Err bitreich.org 70 i- ((or Err bitreich.org 70 i- (string= "b" input) Err bitreich.org 70 i- (string= "-" input)) Err bitreich.org 70 i- (show-bookmarks)) Err bitreich.org 70 i- Err bitreich.org 70 i ((or Err bitreich.org 70 i (string= "*" input) Err bitreich.org 70 i (string= "ls" input) Err bitreich.org 70 i@@ -619,9 +585,11 @@ Err bitreich.org 70 i Err bitreich.org 70 i ;; fetch a menu Err bitreich.org 70 i ((string= "1" (location-type destination)) Err bitreich.org 70 i- (getpage (location-host destination) Err bitreich.org 70 i- (location-port destination) Err bitreich.org 70 i- (location-uri destination)) Err bitreich.org 70 i+ (if (eql 'local-file (location-host destination)) Err bitreich.org 70 i+ 'menu Err bitreich.org 70 i+ (getpage (location-host destination) Err bitreich.org 70 i+ (location-port destination) Err bitreich.org 70 i+ (location-uri destination))) Err bitreich.org 70 i 'menu) Err bitreich.org 70 i Err bitreich.org 70 i ;; fetch a text file Err bitreich.org 70 i@@ -707,26 +675,28 @@ Err bitreich.org 70 i with a parameter not of type 1, so it will fetch the content, Err bitreich.org 70 i display it and exit and finally, the redirected case where clic will Err bitreich.org 70 i print to stdout and exit." Err bitreich.org 70 i- (let ((destination Err bitreich.org 70 i- (let ((argv (get-argv))) 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- (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 i- (if (ttyp) Err bitreich.org 70 i- ;; if we don't ask a menu, not going interactive Err bitreich.org 70 i- (if (not (string= "1" (location-type destination))) Err bitreich.org 70 i- ;; not interactive Err bitreich.org 70 i- (visit destination) Err bitreich.org 70 i- ;; if user want to drop from first page we need Err bitreich.org 70 i- ;; to look it here Err bitreich.org 70 i- (when (not (eq 'end (visit destination))) Err bitreich.org 70 i- ;; we continue to the shell if we are in a terminal Err bitreich.org 70 i- (shell))) Err bitreich.org 70 i- (pipe-to-stdout destination)))) Err bitreich.org 70 i+ Err bitreich.org 70 i+ (ignore-errors ;; lisp is magic Err bitreich.org 70 i+ (let ((destination Err bitreich.org 70 i+ (let ((argv (get-argv))) 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+ (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 i+ (if (ttyp) Err bitreich.org 70 i+ ;; if we don't ask a menu, not going interactive Err bitreich.org 70 i+ (if (not (string= "1" (location-type destination))) Err bitreich.org 70 i+ ;; not interactive Err bitreich.org 70 i+ (visit destination) Err bitreich.org 70 i+ ;; if user want to drop from first page we need Err bitreich.org 70 i+ ;; to look it here Err bitreich.org 70 i+ (when (not (eq 'end (visit destination))) Err bitreich.org 70 i+ ;; we continue to the shell if we are in a terminal Err bitreich.org 70 i+ (shell))) Err bitreich.org 70 i+ (pipe-to-stdout destination))))) Err bitreich.org 70 i Err bitreich.org 70 i ;; we allow ecl to use a new kind of argument Err bitreich.org 70 i ;; not sure how it works but that works Err bitreich.org 70 i@@ -734,4 +704,4 @@ Err bitreich.org 70 i (defconstant +uri-rules+ Err bitreich.org 70 i '(("*DEFAULT*" 1 "" :stop))) Err bitreich.org 70 i Err bitreich.org 70 i-(load-bookmark) Err bitreich.org 70 i+ Err bitreich.org 70 .