autostart (start) when executable, not in loading - 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 072ff21c1e2c73df1a2b2ddc9eeedf7a561aab97
 (DIR) parent 6d56c6a8bd6e69ad1bda2c38c6b90f3540744a41
 (HTM) Author: Solene Rapenne <solene@perso.pw>
       Date:   Fri,  3 Nov 2017 17:04:15 +0000
       
       autostart (start) when executable, not in loading
       
       Diffstat:
         M clic.lisp                           |      42 ++++++++++++++++++-------------
       
       1 file changed, 24 insertions(+), 18 deletions(-)
       ---
 (DIR) diff --git a/clic.lisp b/clic.lisp
       @@ -1,7 +1,9 @@
       -#+sbcl
       -(require 'sb-bsd-sockets)
       -#+ecl
       -(require 'sockets)
       +;; let's hide the loading
       +(let ((*standard-output* (make-broadcast-stream)))
       +  #+sbcl
       +  (require 'sb-bsd-sockets)
       +  #+ecl
       +  (require 'sockets))
        
        (defun color(num1 num2)
          "generate string used to put ANSI color"
       @@ -34,12 +36,14 @@
                  counting char into count
                  when (char= char separator)
                  collect
       -          (subseq text
       -                  (let ((res (position separator text :from-end t :end (- count 1))))
       -                    (if res
       -                        (+ 1 res)
       -                      0))
       -                  (- count 1)))))
       +          
       +          ;; we look at the position of the left separator
       +          (let ((left-separator-position (position separator text :from-end t :end (- count 1))))
       +            (subseq text
       +                    ;; if we can't find a separator at the left of the current, then it's the start of
       +                    ;; the string
       +                    (if left-separator-position (+ 1 left-separator-position) 0) 
       +                    (- count 1))))))
        
        (defun formatted-output(line line-number)
          "Used to display gopher response with color one line at a time"
       @@ -171,12 +175,10 @@
          (format t "help   : show this help~%")
          (format t "x      : exit the shell, go back to REPL~%"))
        
       -(defun start()
       -  (getpage "bitreich.org" 70 "/")
       -  (shell))
       -
        (defun shell()
          "gNUM p h x"
       +  (format t "clic => ")
       +  (force-output)
          (loop for user-input = (format nil "~a" (read nil nil))
                while (not (string= "X" user-input))
                do
       @@ -187,8 +189,12 @@
                  (g 0))
                 (t
                  (when user-input
       -            (g (parse-integer user-input)))))))
       +            (g (parse-integer user-input)))))
       +        (format t "clic => ")
       +        (force-output)))
       +
       +(defun start()
       +  (getpage "bitreich.org" 70 "/")
       +  (shell))
       +
        
       -(help)
       -(help-shell)
       -(start)