iUse the C function getTerminalHeight instead of termsize for getting the terminal height - 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 1272da9d52dd55f3de944489c2314728f99099ee /scm/clic/commit/1272da9d52dd55f3de944489c2314728f99099ee.gph bitreich.org 70 1parent 40244f6eac457069e60611709cda1851aae1eb08 /scm/clic/commit/40244f6eac457069e60611709cda1851aae1eb08.gph bitreich.org 70 hAuthor: killruana URL:mailto:killruana@gmail.com bitreich.org 70 iDate: Sat, 11 Nov 2017 13:31:31 +0100 Err bitreich.org 70 i Err bitreich.org 70 iUse the C function getTerminalHeight instead of termsize for getting the terminal height Err bitreich.org 70 i Err bitreich.org 70 iDiffstat: Err bitreich.org 70 i M clic.lisp | 78 ++++++++++++++++---------------- Err bitreich.org 70 i Err bitreich.org 70 i1 file changed, 39 insertions(+), 39 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@@ -10,11 +10,11 @@ Err bitreich.org 70 i #+sbcl Err bitreich.org 70 i (progn Err bitreich.org 70 i (load-shared-object "./extension.so") Err bitreich.org 70 i- (declaim (inline termsize)) Err bitreich.org 70 i- (sb-alien:define-alien-routine "termsize" int) Err bitreich.org 70 i+ (declaim (inline getTerminalHeight)) Err bitreich.org 70 i+ (sb-alien:define-alien-routine "getTerminalHeight" unsigned-int) Err bitreich.org 70 i (defun c-termsize () Err bitreich.org 70 i "return terminal height" Err bitreich.org 70 i- (sb-alien:with-alien ((res int (termsize)))))) Err bitreich.org 70 i+ (sb-alien:with-alien ((res unsigned-int (getTerminalHeight)))))) Err bitreich.org 70 i Err bitreich.org 70 i #+ecl Err bitreich.org 70 i (progn Err bitreich.org 70 i@@ -96,7 +96,7 @@ 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+ (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@@ -109,71 +109,71 @@ 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- 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+ 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+ 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+ 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+ 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+ 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+ 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+ Err bitreich.org 70 i ;; 5 DOS Binary archive Err bitreich.org 70 i (check "5" 'unimplemented) Err bitreich.org 70 i- Err bitreich.org 70 i+ Err bitreich.org 70 i ;; 6 Unix uuencoded file Err bitreich.org 70 i (check "6" 'unimplemented) Err bitreich.org 70 i- Err bitreich.org 70 i+ Err bitreich.org 70 i ;; 7 Index search server Err bitreich.org 70 i (check "7" 'unimplemented) Err bitreich.org 70 i- Err bitreich.org 70 i+ Err bitreich.org 70 i ;; 8 Telnet session Err bitreich.org 70 i (check "8" 'unimplemented) Err bitreich.org 70 i- Err bitreich.org 70 i+ Err bitreich.org 70 i ;; 9 Binary Err bitreich.org 70 i (check "9" 'unimplemented) Err bitreich.org 70 i- Err bitreich.org 70 i+ Err bitreich.org 70 i ;; + redundant server Err bitreich.org 70 i (check "+" 'unimplemented) Err bitreich.org 70 i- Err bitreich.org 70 i+ Err bitreich.org 70 i ;; T text based tn3270 session Err bitreich.org 70 i (check "T" 'unimplemented) Err bitreich.org 70 i- Err bitreich.org 70 i+ Err bitreich.org 70 i ;; g GIF file Err bitreich.org 70 i (check "g" 'unimplemented) Err bitreich.org 70 i- 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- Err bitreich.org 70 i+ Err bitreich.org 70 i ;; I image Err bitreich.org 70 i (check "I" 'unimplemented))))) Err bitreich.org 70 i Err bitreich.org 70 i@@ -187,22 +187,22 @@ 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+ 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- 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+ Err bitreich.org 70 i ;; we open a stream for input/output Err bitreich.org 70 i (let ((stream (sb-bsd-sockets:socket-make-stream socket :input t :output t))) Err bitreich.org 70 i- Err bitreich.org 70 i+ Err bitreich.org 70 i ;; sending the request here Err bitreich.org 70 i ;; if the selector is 1 we omit it Err bitreich.org 70 i (format stream "~a~%" uri) Err bitreich.org 70 i (force-output stream) Err bitreich.org 70 i- 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@@ -243,7 +243,7 @@ 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+ 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@@ -306,21 +306,21 @@ Err bitreich.org 70 i (cadr *posix-argv*) Err bitreich.org 70 i #+ecl Err bitreich.org 70 i (car (last (cdr (si::command-args))))) Err bitreich.org 70 i- Err bitreich.org 70 i+ 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 (help-shell)) Err bitreich.org 70 i- 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 (add-bookmark)) Err bitreich.org 70 i- 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 (show-bookmarks)) Err bitreich.org 70 i- 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 (p)) Err bitreich.org 70 i@@ -329,11 +329,11 @@ 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- 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 (format t "~{~a~%~}" *history*)) Err bitreich.org 70 i- Err bitreich.org 70 i+ Err bitreich.org 70 i ;; follow a link Err bitreich.org 70 i (t Err bitreich.org 70 i ;; we ignore error in case of bad input Err bitreich.org 70 i@@ -370,7 +370,7 @@ Err bitreich.org 70 i Err bitreich.org 70 i (defun visit(destination) Err bitreich.org 70 i "visit a location" Err bitreich.org 70 i- 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@@ -378,26 +378,26 @@ 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 (setf *links* (make-hash-table))) Err bitreich.org 70 i- Err bitreich.org 70 i+ Err bitreich.org 70 i ;; goes to the history ! Err bitreich.org 70 i (push destination *history*) 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+ 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 (ensure-directories-exist path) Err bitreich.org 70 i- 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- Err bitreich.org 70 i+ Err bitreich.org 70 i (loop for line in *buffer* Err bitreich.org 70 i while line Err bitreich.org 70 i do Err bitreich.org 70 i@@ -420,7 +420,7 @@ 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 ((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 .