| Use the C function getTerminalHeight instead of termsize for getting the termin… | |
| git clone git://bitreich.org/clic/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65… | |
| Log | |
| Files | |
| Refs | |
| Tags | |
| README | |
| LICENSE | |
| --- | |
| commit 1272da9d52dd55f3de944489c2314728f99099ee | |
| parent 40244f6eac457069e60611709cda1851aae1eb08 | |
| Author: killruana <[email protected]> | |
| Date: Sat, 11 Nov 2017 13:31:31 +0100 | |
| Use the C function getTerminalHeight instead of termsize for getting the termin… | |
| Diffstat: | |
| M clic.lisp | 78 ++++++++++++++++-------------… | |
| 1 file changed, 39 insertions(+), 39 deletions(-) | |
| --- | |
| diff --git a/clic.lisp b/clic.lisp | |
| @@ -10,11 +10,11 @@ | |
| #+sbcl | |
| (progn | |
| (load-shared-object "./extension.so") | |
| - (declaim (inline termsize)) | |
| - (sb-alien:define-alien-routine "termsize" int) | |
| + (declaim (inline getTerminalHeight)) | |
| + (sb-alien:define-alien-routine "getTerminalHeight" unsigned-int) | |
| (defun c-termsize () | |
| "return terminal height" | |
| - (sb-alien:with-alien ((res int (termsize)))))) | |
| + (sb-alien:with-alien ((res unsigned-int (getTerminalHeight)))))) | |
| #+ecl | |
| (progn | |
| @@ -96,7 +96,7 @@ | |
| (subseq text | |
| ;; if we can't find a separator at the left of the current… | |
| ;; the string | |
| - (if left-separator-position (+ 1 left-separator-position) … | |
| + (if left-separator-position (+ 1 left-separator-position) … | |
| (- count 1)))))) | |
| (defun formatted-output(line) | |
| @@ -109,71 +109,71 @@ | |
| (when (and | |
| (= (length infos) 4) | |
| (member line-type *allowed-selectors* :test #'equal)) | |
| - | |
| + | |
| (let ((line-number (+ 1 (hash-table-count *links*))) | |
| (text (car infos)) | |
| (uri (cadr infos)) | |
| (host (caddr infos)) | |
| (port (parse-integer (cadddr infos)))) | |
| - | |
| + | |
| ;; RFC, page 4 | |
| (check "i" | |
| (print-with-color text)) | |
| - | |
| + | |
| ;; 0 text file | |
| (check "0" | |
| (setf (gethash line-number *links*) | |
| (make-location :host host :port port :uri uri :type line-… | |
| (print-with-color text 'file line-number)) | |
| - | |
| + | |
| ;; 1 directory | |
| (check "1" | |
| (setf (gethash line-number *links*) | |
| (make-location :host host :port port :uri uri :type line-… | |
| (print-with-color text 'folder line-number)) | |
| - | |
| + | |
| ;; 2 CSO phone-book | |
| ;; WE SKIP | |
| (check "2") | |
| - | |
| + | |
| ;; 3 Error | |
| (check "3" | |
| (print-with-color "error" 'red line-number)) | |
| - | |
| + | |
| ;; 4 BinHexed Mac file | |
| (check "4" | |
| (print-with-color text)) | |
| - | |
| + | |
| ;; 5 DOS Binary archive | |
| (check "5" 'unimplemented) | |
| - | |
| + | |
| ;; 6 Unix uuencoded file | |
| (check "6" 'unimplemented) | |
| - | |
| + | |
| ;; 7 Index search server | |
| (check "7" 'unimplemented) | |
| - | |
| + | |
| ;; 8 Telnet session | |
| (check "8" 'unimplemented) | |
| - | |
| + | |
| ;; 9 Binary | |
| (check "9" 'unimplemented) | |
| - | |
| + | |
| ;; + redundant server | |
| (check "+" 'unimplemented) | |
| - | |
| + | |
| ;; T text based tn3270 session | |
| (check "T" 'unimplemented) | |
| - | |
| + | |
| ;; g GIF file | |
| (check "g" 'unimplemented) | |
| - | |
| + | |
| ;; h http link | |
| (check "h" | |
| (print-with-color (concatenate 'string | |
| text " " uri) | |
| 'http "url")) | |
| - | |
| + | |
| ;; I image | |
| (check "I" 'unimplemented))))) | |
| @@ -187,22 +187,22 @@ | |
| :fill-pointer 0 | |
| :initial-element nil | |
| :adjustable t)) | |
| - | |
| + | |
| ;; we prepare informations about the connection | |
| (let* ((address (sb-bsd-sockets:get-host-by-name host)) | |
| (host (car (sb-bsd-sockets:host-ent-addresses address))) | |
| (socket (make-instance 'sb-bsd-sockets:inet-socket :type :stream :pro… | |
| - | |
| + | |
| (sb-bsd-sockets:socket-connect socket host port) | |
| - | |
| + | |
| ;; we open a stream for input/output | |
| (let ((stream (sb-bsd-sockets:socket-make-stream socket :input t :output t… | |
| - | |
| + | |
| ;; sending the request here | |
| ;; if the selector is 1 we omit it | |
| (format stream "~a~%" uri) | |
| (force-output stream) | |
| - | |
| + | |
| ;; for each line we receive we display it | |
| (loop for line = (read-line stream nil nil) | |
| while line | |
| @@ -243,7 +243,7 @@ | |
| (defun show-bookmarks() | |
| "display the bookmarks like a page" | |
| (setf *links* (make-hash-table)) | |
| - | |
| + | |
| ;; for each bookmark we add it to *links* | |
| ;; and display it | |
| (loop for bookmark in *bookmarks* | |
| @@ -306,21 +306,21 @@ | |
| (cadr *posix-argv*) | |
| #+ecl | |
| (car (last (cdr (si::command-args))))) | |
| - | |
| + | |
| (defun user-input(input) | |
| (cond | |
| ;; show help | |
| ((string= "HELP" input) | |
| (help-shell)) | |
| - | |
| + | |
| ;; bookmark current link | |
| ((string= "A" input) | |
| (add-bookmark)) | |
| - | |
| + | |
| ;; show bookmarks | |
| ((string= "B" input) | |
| (show-bookmarks)) | |
| - | |
| + | |
| ;; go to previous page | |
| ((string= "P" input) | |
| (p)) | |
| @@ -329,11 +329,11 @@ | |
| ((or (string= "X" input) | |
| (string= "Q" input)) | |
| (quit)) | |
| - | |
| + | |
| ;; show history | |
| ((string= "H" input) | |
| (format t "~{~a~%~}" *history*)) | |
| - | |
| + | |
| ;; follow a link | |
| (t | |
| ;; we ignore error in case of bad input | |
| @@ -370,7 +370,7 @@ | |
| (defun visit(destination) | |
| "visit a location" | |
| - | |
| + | |
| (getpage (location-host destination) | |
| (location-port destination) | |
| (location-uri destination)) | |
| @@ -378,26 +378,26 @@ | |
| ;; we reset the links table ONLY if we have a new folder | |
| (when (string= "1" (location-type destination)) | |
| (setf *links* (make-hash-table))) | |
| - | |
| + | |
| ;; goes to the history ! | |
| (push destination *history*) | |
| (display-buffer (location-type destination)) | |
| - | |
| + | |
| (when *offline* | |
| (let ((path (concatenate 'string | |
| "history/" (location-host destination) | |
| "/" (location-uri destination) "/"))) | |
| (ensure-directories-exist path) | |
| - | |
| + | |
| (with-open-file | |
| (save-offline (concatenate | |
| 'string path (location-type destination)) | |
| :direction :output | |
| :if-does-not-exist :create | |
| :if-exists :supersede) | |
| - | |
| + | |
| (loop for line in *buffer* | |
| while line | |
| do | |
| @@ -420,7 +420,7 @@ | |
| (defun main() | |
| "fetch argument, display page and go to shell if type is 1" | |
| - (let ((destination | |
| + (let ((destination | |
| (let ((argv (get-argv))) | |
| (if argv | |
| ;; url as argument |