iDisplay unknown types. Replace tab with spaces - 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 25487c3c561873fda304042df02ed8c68575ce20 /scm/clic/commit/25487c3c561873fda304042df02ed8c68575ce20.gph bitreich.org 70 1parent 165bb9a2db7f522d83e612c35b24a19d5b673517 /scm/clic/commit/165bb9a2db7f522d83e612c35b24a19d5b673517.gph bitreich.org 70 hAuthor: Solene Rapenne URL:mailto:solene@perso.pw bitreich.org 70 iDate: Thu, 28 Dec 2017 11:45:34 +0100 Err bitreich.org 70 i Err bitreich.org 70 iDisplay unknown types. Replace tab with spaces Err bitreich.org 70 i Err bitreich.org 70 iDiffstat: Err bitreich.org 70 i M clic.lisp | 314 ++++++++++++++++--------------- Err bitreich.org 70 i Err bitreich.org 70 i1 file changed, 160 insertions(+), 154 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@@ -62,7 +62,7 @@ Err bitreich.org 70 i ;;; List of allowed item types Err bitreich.org 70 i (defparameter *allowed-selectors* 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+ "h" "7" "8" "9" "+" "T" "g" "I")) Err bitreich.org 70 i Err bitreich.org 70 i ;;;; BEGIN CUSTOMIZABLE Err bitreich.org 70 i ;;; keep files visited on disk when t Err bitreich.org 70 i@@ -78,7 +78,7 @@ Err bitreich.org 70 i (defun add-color(name type hue) Err bitreich.org 70 i "Storing a ANSI color string into *colors*" Err bitreich.org 70 i (setf (gethash name *colors*) Err bitreich.org 70 i- (format nil "~a[~a;~am" #\Escape type hue))) Err bitreich.org 70 i+ (format nil "~a[~a;~am" #\Escape type hue))) Err bitreich.org 70 i Err bitreich.org 70 i (defun get-color(name) (gethash name *colors*)) Err bitreich.org 70 i (add-color 'red 1 31) Err bitreich.org 70 i@@ -112,118 +112,124 @@ Err bitreich.org 70 i "this function split a string with separator and return a list" Err bitreich.org 70 i (let ((text (concatenate 'string text (string separator)))) Err bitreich.org 70 i (loop for char across text Err bitreich.org 70 i- counting char into count Err bitreich.org 70 i- when (char= char separator) Err bitreich.org 70 i- collect Err bitreich.org 70 i- ;; we look at the position of the left separator from right to left Err bitreich.org 70 i- (let ((left-separator-position (position separator text :from-end t :end (- count 1)))) Err bitreich.org 70 i- (subseq text Err bitreich.org 70 i- ;; if we can't find a separator at the left of the current, then it's the start of Err bitreich.org 70 i- ;; the string Err bitreich.org 70 i- (if left-separator-position (+ 1 left-separator-position) 0) Err bitreich.org 70 i- (- count 1)))))) Err bitreich.org 70 i+ counting char into count Err bitreich.org 70 i+ when (char= char separator) Err bitreich.org 70 i+ collect Err bitreich.org 70 i+ ;; we look at the position of the left separator from right to left Err bitreich.org 70 i+ (let ((left-separator-position (position separator text :from-end t :end (- count 1)))) Err bitreich.org 70 i+ (subseq text Err bitreich.org 70 i+ ;; if we can't find a separator at the left of the current, then it's the start of Err bitreich.org 70 i+ ;; the string Err bitreich.org 70 i+ (if left-separator-position (+ 1 left-separator-position) 0) Err bitreich.org 70 i+ (- count 1)))))) 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- (infos (split (subseq line 1) #\Tab))) Err bitreich.org 70 i+ (infos (split (subseq line 1) #\Tab))) 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- (when (and Err bitreich.org 70 i- (= (length infos) 4) Err bitreich.org 70 i- (member line-type *allowed-selectors* :test #'equal)) Err bitreich.org 70 i+ ;; if split worked Err bitreich.org 70 i+ (when (= (length infos) 4) Err bitreich.org 70 i Err bitreich.org 70 i (let ((line-number (+ 1 (hash-table-count *links*))) Err bitreich.org 70 i- (text (car infos)) Err bitreich.org 70 i- (uri (cadr infos)) Err bitreich.org 70 i- (host (caddr infos)) Err bitreich.org 70 i- (port (parse-integer (cadddr infos)))) 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- (print-with-color "selector 7 not implemented" 'red)) 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- (print-with-color "selector 9 not implemented" 'red)) 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- (print-with-color "selector g not implemented" 'red)) Err bitreich.org 70 i- Err bitreich.org 70 i- ;; I image Err bitreich.org 70 i- (check "I" Err bitreich.org 70 i- (print-with-color "selector I not implemented" 'red)) 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- (print-with-color (concatenate 'string Err bitreich.org 70 i- text " " uri) Err bitreich.org 70 i- 'http "url")))))) Err bitreich.org 70 i+ (text (car infos)) Err bitreich.org 70 i+ (uri (cadr infos)) Err bitreich.org 70 i+ (host (caddr infos)) Err bitreich.org 70 i+ (port (parse-integer (cadddr infos)))) 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+ (print-with-color "selector 7 not implemented" 'red)) 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+ (print-with-color "selector 9 not implemented" 'red)) 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+ (print-with-color "selector g not implemented" 'red)) Err bitreich.org 70 i+ Err bitreich.org 70 i+ ;; I image Err bitreich.org 70 i+ (check "I" Err bitreich.org 70 i+ (print-with-color "selector I not implemented" 'red)) 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+ (print-with-color (concatenate 'string Err bitreich.org 70 i+ text " " uri) Err bitreich.org 70 i+ 'http "url"))) 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 getpage(host port uri) Err bitreich.org 70 i "connect and display" Err bitreich.org 70 i Err bitreich.org 70 i ;; we reset 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+ (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 ;; we prepare informations about the connection Err bitreich.org 70 i (let* ((address (sb-bsd-sockets:get-host-by-name host)) Err bitreich.org 70 i- (host (car (sb-bsd-sockets:host-ent-addresses address))) Err bitreich.org 70 i- (socket (make-instance 'sb-bsd-sockets:inet-socket :type :stream :protocol :tcp))) Err bitreich.org 70 i+ (host (car (sb-bsd-sockets:host-ent-addresses address))) Err bitreich.org 70 i+ (socket (make-instance 'sb-bsd-sockets:inet-socket :type :stream :protocol :tcp))) Err bitreich.org 70 i Err bitreich.org 70 i (sb-bsd-sockets:socket-connect socket host port) Err bitreich.org 70 i Err bitreich.org 70 i@@ -237,9 +243,9 @@ Err bitreich.org 70 i Err bitreich.org 70 i ;; for each line we receive we display it 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+ while line Err bitreich.org 70 i+ do Err bitreich.org 70 i+ (vector-push line *buffer*))))) Err bitreich.org 70 i Err bitreich.org 70 i (defun g(key) Err bitreich.org 70 i "browse to the N-th link" Err bitreich.org 70 i@@ -263,14 +269,14 @@ 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+ (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+ :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@@ -289,13 +295,13 @@ 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+ (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 (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@@ -310,13 +316,13 @@ 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 (and Err bitreich.org 70 i- ;; if it contains more chars than gopher:// Err bitreich.org 70 i- (<= (length "gopher://") (length url)) Err bitreich.org 70 i- ;; if it starts with gopher// with return without it Err bitreich.org 70 i- (string= "gopher://" (subseq url 0 9))) Err bitreich.org 70 i- ;; we keep the url as is Err bitreich.org 70 i- (subseq url 9) Err bitreich.org 70 i- url))) Err bitreich.org 70 i+ ;; if it contains more chars than gopher:// Err bitreich.org 70 i+ (<= (length "gopher://") (length url)) Err bitreich.org 70 i+ ;; if it starts with gopher// with return without it Err bitreich.org 70 i+ (string= "gopher://" (subseq url 0 9))) Err bitreich.org 70 i+ ;; we keep the url as is 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 by / to get host:port and uri Err bitreich.org 70 i (let ((infos (split url #\/))) Err bitreich.org 70 i@@ -324,20 +330,20 @@ Err bitreich.org 70 i ;; splitting host and port to get them Err bitreich.org 70 i (let ((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+ ;; 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 Err bitreich.org 70 i- (parse-integer (car host-port)) Err bitreich.org 70 i- 70) Err bitreich.org 70 i+ ;; default to port 70 if not supplied Err bitreich.org 70 i+ :port (if host-port 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 use "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+ ;; if type is empty we use "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 Err bitreich.org 70 i (defun get-argv() Err bitreich.org 70 i@@ -450,8 +456,8 @@ Err bitreich.org 70 i "visit a location" Err bitreich.org 70 i 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+ (location-port destination) Err bitreich.org 70 i+ (location-uri destination)) Err bitreich.org 70 i Err bitreich.org 70 i ;; we reset the links table ONLY if we have a new folder Err bitreich.org 70 i (when (string= "1" (location-type destination)) Err bitreich.org 70 i@@ -462,21 +468,21 @@ Err bitreich.org 70 i Err bitreich.org 70 i (when *offline* Err bitreich.org 70 i (let ((path (concatenate 'string Err bitreich.org 70 i- "history/" (location-host destination) Err bitreich.org 70 i- "/" (location-uri destination) "/"))) Err bitreich.org 70 i+ "history/" (location-host destination) Err bitreich.org 70 i+ "/" (location-uri destination) "/"))) Err bitreich.org 70 i (ensure-directories-exist path) Err bitreich.org 70 i Err bitreich.org 70 i (with-open-file Err bitreich.org 70 i- (save-offline (concatenate Err bitreich.org 70 i- 'string path (location-type destination)) 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+ (save-offline (concatenate Err bitreich.org 70 i+ 'string path (location-type destination)) 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 Err bitreich.org 70 i- (loop for line across *buffer* Err bitreich.org 70 i- while line Err bitreich.org 70 i- do Err bitreich.org 70 i- (format save-offline "~a~%" line))))) Err bitreich.org 70 i+ (loop for line across *buffer* Err bitreich.org 70 i+ while line Err bitreich.org 70 i+ do Err bitreich.org 70 i+ (format save-offline "~a~%" line))))) Err bitreich.org 70 i Err bitreich.org 70 i (display-buffer (location-type destination))) Err bitreich.org 70 i Err bitreich.org 70 i@@ -489,24 +495,24 @@ Err bitreich.org 70 i ;; we loop until X or Q is typed Err bitreich.org 70 i (loop for input = (format nil "~a" (read-line nil nil)) Err bitreich.org 70 i while (not (or Err bitreich.org 70 i- (string= "exit" input) Err bitreich.org 70 i- (string= "x" input) Err bitreich.org 70 i- (string= "q" input))) Err bitreich.org 70 i+ (string= "exit" input) Err bitreich.org 70 i+ (string= "x" input) Err bitreich.org 70 i+ (string= "q" input))) Err bitreich.org 70 i do Err bitreich.org 70 i (when (eq 'end (user-input input)) Err bitreich.org 70 i- (loop-finish)) Err bitreich.org 70 i+ (loop-finish)) Err bitreich.org 70 i (format t "clic => ") Err bitreich.org 70 i (force-output))) Err bitreich.org 70 i Err bitreich.org 70 i (defun main() Err bitreich.org 70 i "fetch argument, display page and go to shell if type is 1" Err bitreich.org 70 i (let ((destination Err bitreich.org 70 i- (let ((argv (get-argv))) Err bitreich.org 70 i- (if argv Err bitreich.org 70 i- ;; url as argument Err bitreich.org 70 i- (parse-url argv) Err bitreich.org 70 i- ;; default url Err bitreich.org 70 i- (make-location :host "gopherproject.org" :port 70 :uri "/" :type "1"))))) Err bitreich.org 70 i+ (let ((argv (get-argv))) Err bitreich.org 70 i+ (if argv Err bitreich.org 70 i+ ;; url as argument Err bitreich.org 70 i+ (parse-url argv) Err bitreich.org 70 i+ ;; default url 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 ;; if user want to drop from first page we need Err bitreich.org 70 i ;; to look it here Err bitreich.org 70 i@@ -514,7 +520,7 @@ Err bitreich.org 70 i ;; we continue to the shell if the type was 1 and we are in a terminal Err bitreich.org 70 i (when (and (ttyp) Err bitreich.org 70 i (string= "1" (location-type destination))) Err bitreich.org 70 i- (shell))))) Err bitreich.org 70 i+ (shell))))) 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 .