iNew reload command and we can end at anytime properly - 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 fdffd2e4d1c02050fcf6f441b6e0029d560c1449 /scm/clic/commit/fdffd2e4d1c02050fcf6f441b6e0029d560c1449.gph bitreich.org 70 1parent 8ac8cdfbdce8d9159b195f1d1a15d9988033f29f /scm/clic/commit/8ac8cdfbdce8d9159b195f1d1a15d9988033f29f.gph bitreich.org 70 hAuthor: Solene Rapenne URL:mailto:solene@perso.pw bitreich.org 70 iDate: Thu, 16 Nov 2017 12:10:40 +0000 Err bitreich.org 70 i Err bitreich.org 70 iNew reload command and we can end at anytime properly Err bitreich.org 70 i Err bitreich.org 70 iDiffstat: Err bitreich.org 70 i M clic.lisp | 54 +++++++++++++++++++++---------- Err bitreich.org 70 i M make-binary.lisp | 6 +++--- Err bitreich.org 70 i Err bitreich.org 70 i2 files changed, 40 insertions(+), 20 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@@ -235,6 +235,12 @@ Err bitreich.org 70 i (pop *history*) Err bitreich.org 70 i (visit (pop *history*)))) Err bitreich.org 70 i Err bitreich.org 70 i+(defun r() Err bitreich.org 70 i+ "browse to the previous link" 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+ 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@@ -324,28 +330,37 @@ Err bitreich.org 70 i (defun user-input(input) Err bitreich.org 70 i (cond Err bitreich.org 70 i ;; show help Err bitreich.org 70 i- ((string= "HELP" input) 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- ((string= "A" input) Err bitreich.org 70 i+ ((string= "a" 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- ((string= "B" input) Err bitreich.org 70 i+ ((string= "b" 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= "ls" input) Err bitreich.org 70 i+ (string= "r" input)) Err bitreich.org 70 i+ (r)) Err bitreich.org 70 i+ Err bitreich.org 70 i ;; go to previous page Err bitreich.org 70 i- ((string= "P" input) Err bitreich.org 70 i+ ((or Err bitreich.org 70 i+ (string= "cd .." input) Err bitreich.org 70 i+ (string= "p" input)) Err bitreich.org 70 i (p)) Err bitreich.org 70 i Err bitreich.org 70 i ;; exit Err bitreich.org 70 i- ((or (string= "X" input) Err bitreich.org 70 i- (string= "Q" input)) Err bitreich.org 70 i- (quit)) Err bitreich.org 70 i+ ((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+ 'end) Err bitreich.org 70 i Err bitreich.org 70 i ;; show history Err bitreich.org 70 i- ((string= "H" input) Err bitreich.org 70 i+ ((string= "h" input) Err bitreich.org 70 i (format t "~{~a~%~}" *history*)) Err bitreich.org 70 i Err bitreich.org 70 i ;; follow a link Err bitreich.org 70 i@@ -423,12 +438,14 @@ Err bitreich.org 70 i (force-output) Err bitreich.org 70 i 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 nil nil)) 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= "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- (user-input input) Err bitreich.org 70 i+ (when (eq 'end (user-input input)) 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@@ -439,11 +456,14 @@ 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 "bitreich.org" :port 70 :uri "/" :type "1"))))) Err bitreich.org 70 i- (visit destination) Err bitreich.org 70 i- (when (string= "1" (location-type destination)) Err bitreich.org 70 i- (shell)))) Err bitreich.org 70 i+ ;; default url Err bitreich.org 70 i+ (make-location :host "bitreich.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+ (when (not (eq 'end (visit destination))) Err bitreich.org 70 i+ (when (string= "1" (location-type destination)) 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 1diff --git a/make-binary.lisp b/make-binary.lisp /scm/clic/file/make-binary.lisp.gph bitreich.org 70 i@@ -1,5 +1,5 @@ Err bitreich.org 70 i-;; ecl produces a linked binary Err bitreich.org 70 i-;; while sbcl produces a static binary (but huge ~ 10Mb) Err bitreich.org 70 i+;; ecl produces a linked binary to ecl shared library Err bitreich.org 70 i+;; sbcl produces a static binary (~ 10Mb with compression / 70Mb without) Err bitreich.org 70 i Err bitreich.org 70 i #+ecl Err bitreich.org 70 i (require 'cmp) Err bitreich.org 70 i@@ -24,5 +24,5 @@ Err bitreich.org 70 i :executable t Err bitreich.org 70 i :toplevel 'main)) Err bitreich.org 70 i Err bitreich.org 70 i-(format t "INFO => Compilation done (or at least it should)~%") Err bitreich.org 70 i+(format t "INFO => Compilation done (or at least it should be)~%") Err bitreich.org 70 i (quit) Err bitreich.org 70 .