Using search links is now possible - 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 1a794d72260ef81d5053b8708dd06ebc65c209b8
 (DIR) parent c5ad93bd84b0e56df44e063c6871c587e98ef9c0
 (HTM) Author: Solene Rapenne <solene@perso.pw>
       Date:   Wed,  3 Jan 2018 15:41:43 +0100
       
       Using search links is now possible
       
       Diffstat:
         M clic.lisp                           |      29 +++++++++++++++++++++++++----
       
       1 file changed, 25 insertions(+), 4 deletions(-)
       ---
 (DIR) diff --git a/clic.lisp b/clic.lisp
       @@ -199,7 +199,9 @@
        
                      ;; 7 Index search server
                      (check "7"
       -                     (print-with-color "selector 7 not implemented" 'red))
       +                     (setf (gethash line-number *links*)
       +                           (make-location :host host :port port :uri uri :type line-type ))
       +                     (print-with-color text 'red line-number))
        
                      ;; 8 Telnet session
                      (check "8"
       @@ -241,7 +243,7 @@
                                              "invalid type ~a : ~a" line-type text)
                                      'red))))))
        
       -(defun getpage(host port uri &optional (binary nil))
       +(defun getpage(host port uri &optional (binary nil) (search nil))
          "send a request and store the answer (in *buffer* if text or save a file if binary)"
        
          ;; we reset the buffer
       @@ -264,7 +266,12 @@
                                                             :output t
                                                             :element-type :default)))
              ;; sending the request to the server
       -      (format stream "~a~%" uri)
       +      (if search
       +          (progn
       +            (format t "Input : ")
       +            (let ((user-input (read-line nil nil)))
       +              (format stream "~a?~a~%" uri user-input)))
       +          (format stream "~a~%" uri))
              (force-output stream)
        
              (if binary
       @@ -438,6 +445,12 @@
              (string= "p" input))
             (p))
        
       +    ;; dump raw informations
       +    ((string= "d" input)
       +     (loop for c across *buffer*
       +        do
       +          (format t "~a~%" c)))
       +
            ;; exit
            ((or
              (string= "." input)
       @@ -507,7 +520,9 @@
        
                ;;;; output is a menu ?
                ;;;; display the menu and split it in pages if needed
       -        ((string= "1" type)
       +        ((or
       +          (string= "1" type)
       +          (string= "7" type))
        
                 ;; we store the user input outside of the loop
                 ;; so if the user doesn't want to scroll
       @@ -561,6 +576,12 @@
                      (location-port destination)
                      (location-uri  destination)))
        
       +    ((string= "7" (location-type destination))
       +     (getpage (location-host destination)
       +              (location-port destination)
       +              (location-uri  destination)
       +              nil t))
       +
            (t
             (getpage (location-host destination)
                      (location-port destination)