[BETTER CODE] links are stored in structures now instead of plain lists - clic - Clic is an command line interactive client for gopher written in Common LISP
HTML git clone git://bitreich.org/clic/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/clic/
DIR Log
DIR Files
DIR Refs
DIR Tags
DIR README
DIR LICENSE
---
DIR commit 79b490169672f05baa3b5fab99f834e8fb7e47a9
DIR parent 7a532434a3f0949890ddb0b231a11f7eb3c597f0
HTML Author: Solene Rapenne <solene@perso.pw>
Date: Fri, 3 Nov 2017 19:19:16 +0000
[BETTER CODE] links are stored in structures now instead of plain lists
Diffstat:
M clic.lisp | 23 +++++++++++++++--------
1 file changed, 15 insertions(+), 8 deletions(-)
---
DIR diff --git a/clic.lisp b/clic.lisp
@@ -5,6 +5,8 @@
#+ecl
(require 'sockets))
+(defstruct location host port uri type)
+
(defun color(num1 num2)
"generate string used to put ANSI color"
(format nil "~a[~a;~am" #\Escape num1 num2))
@@ -68,13 +70,14 @@
;; 0 file
(check "0"
- (setf (gethash line-number *links*) (list host port uri line-type ))
+ (setf (gethash line-number *links*)
+ (make-location :host host :port port :uri uri :type line-type ))
(print-with-color text *color-file* line-number))
;; 1 directory
(check "1"
- (setf (gethash line-number *links*) (list host port uri line-type))
-
+ (setf (gethash line-number *links*)
+ (make-location :host host :port port :uri uri :type line-type ))
(print-with-color text *color-folder* line-number))
;; 2 CSO phone-book
@@ -123,13 +126,14 @@
(defun getpage(host port uri &optional (type "1"))
"connect and display"
- (format t "Asking gopher://~a:~a/~a~a~%" host port type uri)
+
;; we reset the links table
;; if we have a new folder
(when (string= "1" type)
(setf *links* (make-hash-table))
- (setf (gethash 0 *links*) (list host port uri type)))
+ (setf (gethash 0 *links*)
+ (make-location :host host :port port :uri uri :type type)))
;; we prepare informations about the connection
(let* ((address (sb-bsd-sockets:get-host-by-name host))
@@ -155,12 +159,15 @@
((string= "0" type)
(format t "~a~%" line))))))
- (format t " ~a~80a~a~%" *cyan* " " *white*))
+ (format t "~aRequested gopher://~a:~a/~a~a~a~%" *cyan* host port type uri *white*))
(defun g(key)
"browse to the N-th link"
- (let ((infos (gethash key *links*)))
- (apply 'getpage infos)))
+ (let ((destination (gethash key *links*)))
+ (getpage (location-host destination)
+ (location-port destination)
+ (location-uri destination)
+ (location-type destination))))
(defun help()
"show help"