[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
 (HTM) git clone git://bitreich.org/clic/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/clic/
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) Tags
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit 4332912d5ab40a15082d89f2da2a5ee3370d2000
 (DIR) parent 7d40a9089da4643942a3181a54ce80bd12bcfad4
 (HTM) 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"