iAdd kiosk mode and drop SBCL - clic - Clic is an command line interactive client for gopher written in Common LISP Err bitreich.org 70 hgit clone git://bitreich.org/clic/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/clic/ URL:git://bitreich.org/clic/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/clic/ bitreich.org 70 1Log /scm/clic/log.gph bitreich.org 70 1Files /scm/clic/files.gph bitreich.org 70 1Refs /scm/clic/refs.gph bitreich.org 70 1Tags /scm/clic/tag bitreich.org 70 1README /scm/clic/file/README.md.gph bitreich.org 70 1LICENSE /scm/clic/file/LICENSE.gph bitreich.org 70 i--- Err bitreich.org 70 1commit fb5155bf84450fec31f6b69a49fbdc07aee5aa70 /scm/clic/commit/fb5155bf84450fec31f6b69a49fbdc07aee5aa70.gph bitreich.org 70 1parent b76072a5f201bed263c85b2776dff7ed10b6aac1 /scm/clic/commit/b76072a5f201bed263c85b2776dff7ed10b6aac1.gph bitreich.org 70 hAuthor: Solene Rapenne URL:mailto:solene@perso.pw bitreich.org 70 iDate: Fri, 6 Apr 2018 10:08:01 +0200 Err bitreich.org 70 i Err bitreich.org 70 iAdd kiosk mode and drop SBCL Err bitreich.org 70 i Err bitreich.org 70 iDiffstat: Err bitreich.org 70 i M Makefile | 17 +++++------------ Err bitreich.org 70 i M README.md | 38 +++++++++---------------------- Err bitreich.org 70 i D TODO | 14 -------------- Err bitreich.org 70 i M clic.1 | 2 +- Err bitreich.org 70 i M clic.lisp | 88 ++++++++++++++++--------------- Err bitreich.org 70 i D extension.c | 17 ----------------- Err bitreich.org 70 i D interactive-test.exp | 116 ------------------------------ Err bitreich.org 70 i M make-binary.lisp | 16 ---------------- Err bitreich.org 70 i D run-test.sh | 14 -------------- Err bitreich.org 70 i D test.lisp | 35 ------------------------------- Err bitreich.org 70 i Err bitreich.org 70 i10 files changed, 62 insertions(+), 295 deletions(-) Err bitreich.org 70 i--- Err bitreich.org 70 1diff --git a/Makefile b/Makefile /scm/clic/file/Makefile.gph bitreich.org 70 i@@ -2,7 +2,7 @@ Err bitreich.org 70 i # See the LICENSE file for copyright and license details. Err bitreich.org 70 i .POSIX: Err bitreich.org 70 i Err bitreich.org 70 i-VERSION = 0.1 Err bitreich.org 70 i+VERSION = 0.2 Err bitreich.org 70 i Err bitreich.org 70 i BIN = clic Err bitreich.org 70 i LISP = ecl Err bitreich.org 70 i@@ -10,17 +10,10 @@ PREFIX = /usr Err bitreich.org 70 i BINDIR = ${PREFIX}/bin Err bitreich.org 70 i MANDIR = ${PREFIX}/share/man Err bitreich.org 70 i Err bitreich.org 70 i-all: extension.so ${BIN} Err bitreich.org 70 i+all: ${BIN} Err bitreich.org 70 i Err bitreich.org 70 i-${BIN}: clic.lisp make-binary.lisp Err bitreich.org 70 i- ${LISP} --load make-binary.lisp Err bitreich.org 70 i- Err bitreich.org 70 i-standalone: clic.lisp extension.so make-binary.lisp Err bitreich.org 70 i- ${MAKE} -e LISP=sbcl Err bitreich.org 70 i- Err bitreich.org 70 i-extension.so: extension.c Err bitreich.org 70 i- ${CC} -Wall -fPIC -c extension.c Err bitreich.org 70 i- ${LD} -shared -o extension.so extension.o Err bitreich.org 70 i+${BIN}: clic.lisp make-binary.lisp Err bitreich.org 70 i+ ecl -load make-binary.lisp Err bitreich.org 70 i Err bitreich.org 70 i install: ${BIN} Err bitreich.org 70 i @echo installing executable to "${DESTDIR}${PREFIX}/bin" Err bitreich.org 70 i@@ -39,7 +32,7 @@ uninstall: Err bitreich.org 70 i @rm -f ${DESTDIR}${MANDIR}/man1/clic.1 Err bitreich.org 70 i Err bitreich.org 70 i clean: Err bitreich.org 70 i- rm -f "${BIN}" clic.o clic.eclh clic.cxx bookmark-test extension.so Err bitreich.org 70 i+ rm -f "${BIN}" clic.o clic.eclh clic.cxx Err bitreich.org 70 i Err bitreich.org 70 i test: clean all Err bitreich.org 70 i @sh run-test.sh ${LISP} Err bitreich.org 70 1diff --git a/README.md b/README.md /scm/clic/file/README.md.gph bitreich.org 70 i@@ -12,46 +12,25 @@ Requirements Err bitreich.org 70 i clic requires a few dependencies : Err bitreich.org 70 i Err bitreich.org 70 i + ANSI compatible terminal emulator Err bitreich.org 70 i- + a Common LISP interpreter Err bitreich.org 70 i+ + ecl common lisp interpreter Err bitreich.org 70 i + C compiler Err bitreich.org 70 i + Linux/OpenBSD/FreeBSD/NetBSD Err bitreich.org 70 i Err bitreich.org 70 i-Both **ecl** and **sbcl** Common LISP compilers are supported. Err bitreich.org 70 i- Err bitreich.org 70 i Err bitreich.org 70 i How to build Err bitreich.org 70 i ============ Err bitreich.org 70 i Err bitreich.org 70 i `clic` binary must be compiled. Err bitreich.org 70 i Err bitreich.org 70 i-To compile it with **ecl** : Err bitreich.org 70 i+To compile it with **ecl**, it's really easy type the following Err bitreich.org 70 i+command : Err bitreich.org 70 i Err bitreich.org 70 i make Err bitreich.org 70 i Err bitreich.org 70 i-To compile it with **sbcl** : Err bitreich.org 70 i- Err bitreich.org 70 i- make LISP=sbcl Err bitreich.org 70 i- Err bitreich.org 70 i then you can use `make install` to deploy it in `/usr/bin/`. Err bitreich.org 70 i Err bitreich.org 70 i-Note : when using sbcl, a shared library extension.o is created and Err bitreich.org 70 i-then sbcl creates a binary linked against the library. But ecl will Err bitreich.org 70 i-translate the whole lisp code to C and then compile it, but linking Err bitreich.org 70 i-against ecl. Err bitreich.org 70 i- Err bitreich.org 70 i-**I (the author) recommend using ecl**. Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-Information about the binary Err bitreich.org 70 i----------------------------- Err bitreich.org 70 i-If you compile clic with ecl, you will need ecl library installed on Err bitreich.org 70 i-the computer, the startup time is really fast. While compiling clic Err bitreich.org 70 i-with SBCL will provide a standalone binary embedding the whole SBCL Err bitreich.org 70 i-compiler, weighting approximately 10 Mb with a slower startup time. Err bitreich.org 70 i- Err bitreich.org 70 i-If you use OpenBSD and SBCL, you will need wxallowed mountflag on the Err bitreich.org 70 i-partition from where you try to start clic standalone because sbcl has Err bitreich.org 70 i-a W^X issue. Err bitreich.org 70 i+The binary will be linked to ecl shared library. You need to install Err bitreich.org 70 i+ecl if you want to deploy clic binary on others systems. Err bitreich.org 70 i Err bitreich.org 70 i Err bitreich.org 70 i How to use clic Err bitreich.org 70 i@@ -87,7 +66,12 @@ permitting to use clic with the numpad with only one hand : Err bitreich.org 70 i Command line usage Err bitreich.org 70 i ================== Err bitreich.org 70 i Err bitreich.org 70 i-clic [url|file] Err bitreich.org 70 i+clic [-k] [url|file] Err bitreich.org 70 i+ Err bitreich.org 70 i+If you start clic with -k parameter, then kiosk mode is enabled, which Err bitreich.org 70 i+mean it won't call any external program or save any data on the Err bitreich.org 70 i+disk. Texts (type 0) will be shown as-this in the output. It only Err bitreich.org 70 i+allow to use texts, menus and searches. Err bitreich.org 70 i Err bitreich.org 70 i If you pass a gopher url to clic (gopher:// isn't mandatory for the Err bitreich.org 70 i url), the behavor will change depending on two parameters : Err bitreich.org 70 1diff --git a/TODO b/TODO /scm/clic/file/TODO.gph bitreich.org 70 i@@ -1,14 +0,0 @@ Err bitreich.org 70 i-* FEATURE Err bitreich.org 70 i- Err bitreich.org 70 i-- DONE add a bookmark "a" function to store the current page location Err bitreich.org 70 i-- DONE add a bookmark "b" function to display the bookmarks Err bitreich.org 70 i-- TODO add a dump "d" function to display the raw response Err bitreich.org 70 i-- DONE history mode which save every file into a filesystem tree to preserve data if gopherhole go offline Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-* CODE Err bitreich.org 70 i- Err bitreich.org 70 i-- TODO remove the pagination if using stdout or not in shell Err bitreich.org 70 i-- TODO make the c-termsize working on ecl Err bitreich.org 70 i-- DONE use CLOS to store data Err bitreich.org 70 i-- DONE store the whole page and deal with it later Err bitreich.org 70 1diff --git a/clic.1 b/clic.1 /scm/clic/file/clic.1.gph bitreich.org 70 i@@ -3,7 +3,7 @@ Err bitreich.org 70 i clic \- a terminal gopher client Err bitreich.org 70 i .SH SYNOPSIS Err bitreich.org 70 i .B clic Err bitreich.org 70 i-.IR [URL] Err bitreich.org 70 i+.IR [-k] [URL] Err bitreich.org 70 i .PP Err bitreich.org 70 i .SH DESCRIPTION Err bitreich.org 70 i .B clic Err bitreich.org 70 1diff --git a/clic.lisp b/clic.lisp /scm/clic/file/clic.lisp.gph bitreich.org 70 i@@ -1,23 +1,10 @@ Err bitreich.org 70 i ;;; let's hide the loading Err bitreich.org 70 i (let ((*standard-output* (make-broadcast-stream))) Err bitreich.org 70 i (require 'asdf) Err bitreich.org 70 i- #+sbcl Err bitreich.org 70 i- (require 'sb-bsd-sockets) Err bitreich.org 70 i #+ecl Err bitreich.org 70 i (require 'sockets)) Err bitreich.org 70 i Err bitreich.org 70 i ;;;; C binding to get terminal informations Err bitreich.org 70 i-;;;; SBCL only Err bitreich.org 70 i-#+sbcl Err bitreich.org 70 i-(progn Err bitreich.org 70 i- (load-shared-object #p"./extension.so") Err bitreich.org 70 i- ;; getTerminalHeight Err bitreich.org 70 i- (declaim (inline getTerminalHeight)) Err bitreich.org 70 i- (sb-alien:define-alien-routine "getTerminalHeight" unsigned-int) Err bitreich.org 70 i- (defun c-termsize () Err bitreich.org 70 i- "return terminal height" Err bitreich.org 70 i- (sb-alien:with-alien ((res unsigned-int (getTerminalHeight)))))) Err bitreich.org 70 i- Err bitreich.org 70 i #+ecl Err bitreich.org 70 i (progn Err bitreich.org 70 i (ffi:clines " Err bitreich.org 70 i@@ -41,7 +28,7 @@ Err bitreich.org 70 i (defstruct location host port type uri Err bitreich.org 70 i :predicate) Err bitreich.org 70 i Err bitreich.org 70 i-;;;; kiosk mode on/off Err bitreich.org 70 i+;;;; kiosk mode Err bitreich.org 70 i (defparameter *kiosk-mode* nil) Err bitreich.org 70 i Err bitreich.org 70 i (defmacro kiosk-mode(&body code) Err bitreich.org 70 i@@ -98,8 +85,6 @@ Err bitreich.org 70 i "return t if the output is a terminal" Err bitreich.org 70 i ;; we use this variable in case we don't want to be interactive Err bitreich.org 70 i ;; like when we use a cmd arg to get an image Err bitreich.org 70 i- #+sbcl Err bitreich.org 70 i- (interactive-stream-p *standard-output*) Err bitreich.org 70 i #+ecl Err bitreich.org 70 i (if (= 1 (c-ttyp)) Err bitreich.org 70 i t Err bitreich.org 70 i@@ -387,36 +372,44 @@ Err bitreich.org 70 i (defun parse-url(url) Err bitreich.org 70 i "parse a gopher url and return a location" Err bitreich.org 70 i Err bitreich.org 70 i- (let ((url (if (search "gopher://" url) Err bitreich.org 70 i- (subseq url 9) Err bitreich.org 70 i- url))) Err bitreich.org 70 i+ (cond ((or Err bitreich.org 70 i+ (string= "--help" url) Err bitreich.org 70 i+ (string= "-h" url)) Err bitreich.org 70 i+ (help-shell) Err bitreich.org 70 i+ (quit)) Err bitreich.org 70 i Err bitreich.org 70 i- ;; splitting with / to get host:port and uri Err bitreich.org 70 i- ;; splitting host and port to get them Err bitreich.org 70 i- (let* ((infos (split url #\/)) Err bitreich.org 70 i- (host-port (split (pop infos) #\:))) Err bitreich.org 70 i+ ((string= "-k" url) Err bitreich.org 70 i+ (setf *kiosk-mode* t)) Err bitreich.org 70 i Err bitreich.org 70 i- ;; create the location to visit Err bitreich.org 70 i- (make-location :host (pop host-port) Err bitreich.org 70 i- Err bitreich.org 70 i- ;; default to port 70 if not supplied Err bitreich.org 70 i- :port (if host-port ;; <- empty if no port given Err bitreich.org 70 i- (parse-integer (car host-port)) Err bitreich.org 70 i- 70) Err bitreich.org 70 i- Err bitreich.org 70 i- ;; if type is empty we default to "1" Err bitreich.org 70 i- :type (let ((type (pop infos))) Err bitreich.org 70 i- (if (< 0 (length type)) type "1")) Err bitreich.org 70 i+ (t Err bitreich.org 70 i+ Err bitreich.org 70 i+ (let ((url (if (search "gopher://" url) Err bitreich.org 70 i+ (subseq url 9) Err bitreich.org 70 i+ url))) Err bitreich.org 70 i+ Err bitreich.org 70 i+ ;; splitting with / to get host:port and uri Err bitreich.org 70 i+ ;; splitting host and port to get them Err bitreich.org 70 i+ (let* ((infos (split url #\/)) Err bitreich.org 70 i+ (host-port (split (pop infos) #\:))) Err bitreich.org 70 i+ Err bitreich.org 70 i+ ;; create the location to visit Err bitreich.org 70 i+ (make-location :host (pop host-port) Err bitreich.org 70 i+ ;; default to port 70 if not supplied Err bitreich.org 70 i+ :port (if host-port ;; <- empty if no port given Err bitreich.org 70 i+ (parse-integer (car host-port)) Err bitreich.org 70 i+ 70) Err bitreich.org 70 i+ Err bitreich.org 70 i+ ;; if type is empty we default to "1" Err bitreich.org 70 i+ :type (let ((type (pop infos))) Err bitreich.org 70 i+ (if (< 0 (length type)) type "1")) Err bitreich.org 70 i Err bitreich.org 70 i- ;; glue remaining args between them Err bitreich.org 70 i- :uri (format nil "~{/~a~}" infos))))) Err bitreich.org 70 i+ ;; glue remaining args between them Err bitreich.org 70 i+ :uri (format nil "~{/~a~}" infos))))))) Err bitreich.org 70 i Err bitreich.org 70 i (defun get-argv() Err bitreich.org 70 i "Parse argv and return it" Err bitreich.org 70 i- #+sbcl Err bitreich.org 70 i- (cadr *posix-argv*) Err bitreich.org 70 i #+ecl Err bitreich.org 70 i- (car (last (cdr (si::command-args))))) Err bitreich.org 70 i+ (cdr (si::command-args))) Err bitreich.org 70 i Err bitreich.org 70 i (defun user-input(input) Err bitreich.org 70 i (cond Err bitreich.org 70 i@@ -526,11 +519,13 @@ Err bitreich.org 70 i do Err bitreich.org 70 i (formatted-output line) Err bitreich.org 70 i Err bitreich.org 70 i+ Err bitreich.org 70 i ;; split and ask to scroll or to type a command Err bitreich.org 70 i (when (= row rows) Err bitreich.org 70 i (setf row 0) Err bitreich.org 70 i- (format t "~a press enter or a shell command ~a : " Err bitreich.org 70 i+ (format t "~a~a press enter or a shell command ~a : " Err bitreich.org 70 i (get-color 'bg-black) Err bitreich.org 70 i+ (if *kiosk-mode* "KIOSK" "") Err bitreich.org 70 i (get-color 'reset)) Err bitreich.org 70 i (force-output) Err bitreich.org 70 i (let ((first-input (read-char *standard-input* nil nil t))) Err bitreich.org 70 i@@ -659,7 +654,8 @@ Err bitreich.org 70 i Err bitreich.org 70 i (defun display-prompt() Err bitreich.org 70 i (let ((last-page (car *history*))) Err bitreich.org 70 i- (format t "gopher://~a:~a/~a~a (~as) / (p)rev (r)edisplay (h)istory : " Err bitreich.org 70 i+ (format t "~agopher://~a:~a/~a~a (~as) / (p)rev (r)edisplay (h)istory : " Err bitreich.org 70 i+ (if *kiosk-mode* "KIOSK " "") Err bitreich.org 70 i (location-host last-page) Err bitreich.org 70 i (location-port last-page) Err bitreich.org 70 i (location-type last-page) Err bitreich.org 70 i@@ -707,8 +703,14 @@ Err bitreich.org 70 i :type "1" Err bitreich.org 70 i :uri argv)) Err bitreich.org 70 i ;; it's not a file, create a location Err bitreich.org 70 i- (parse-url argv)) Err bitreich.org 70 i- (make-location :host "gopherproject.org" :port 70 :uri "/" :type "1"))))) Err bitreich.org 70 i+ ;; it's either a list with parameters or a location Err bitreich.org 70 i+ (if (listp argv) Err bitreich.org 70 i+ (car (last (loop for element in argv collect (parse-url element)))) Err bitreich.org 70 i+ (parse-url argv))))))) Err bitreich.org 70 i+ Err bitreich.org 70 i+ ;; if we didn't passed a url as parameter, use a default Err bitreich.org 70 i+ (if (not (location-p destination)) Err bitreich.org 70 i+ (setf destination (make-location :host "gopherproject.org" :port 70 :uri "/" :type "1"))) Err bitreich.org 70 i Err bitreich.org 70 i ;; is there an output redirection ? Err bitreich.org 70 i (if (ttyp) Err bitreich.org 70 1diff --git a/extension.c b/extension.c /scm/clic/file/extension.c.gph bitreich.org 70 i@@ -1,17 +0,0 @@ Err bitreich.org 70 i-#include Err bitreich.org 70 i-#include Err bitreich.org 70 i-#include Err bitreich.org 70 i- Err bitreich.org 70 i-/** Err bitreich.org 70 i- * @brief Get the height of the terminal in term of visible lines Err bitreich.org 70 i- * @return the height of the terminal or UINT_MAX in case of error Err bitreich.org 70 i- */ Err bitreich.org 70 i-unsigned int getTerminalHeight() Err bitreich.org 70 i-{ Err bitreich.org 70 i- struct winsize w; Err bitreich.org 70 i- if (ioctl(STDOUT_FILENO, TIOCGWINSZ, &w) < 0) { Err bitreich.org 70 i- return UINT_MAX; Err bitreich.org 70 i- } Err bitreich.org 70 i- Err bitreich.org 70 i- return w.ws_row; Err bitreich.org 70 i-} Err bitreich.org 70 1diff --git a/interactive-test.exp b/interactive-test.exp /scm/clic/file/interactive-test.exp.gph bitreich.org 70 i@@ -1,116 +0,0 @@ Err bitreich.org 70 i-proc user_input {} { Err bitreich.org 70 i- Err bitreich.org 70 i- expect "clic => " Err bitreich.org 70 i- Err bitreich.org 70 i- send "garbage\n" Err bitreich.org 70 i- expect "clic => " Err bitreich.org 70 i- send ". . ~. ~ .\n" Err bitreich.org 70 i- expect "clic => " Err bitreich.org 70 i- Err bitreich.org 70 i- send "r\n" Err bitreich.org 70 i- expect "clic => " Err bitreich.org 70 i- Err bitreich.org 70 i- send "help\n" Err bitreich.org 70 i- expect "clic => " Err bitreich.org 70 i- Err bitreich.org 70 i- send "5\n" Err bitreich.org 70 i- expect "clic => " Err bitreich.org 70 i- Err bitreich.org 70 i- send "p\n" Err bitreich.org 70 i- expect "clic => " Err bitreich.org 70 i- Err bitreich.org 70 i- send "19\n" Err bitreich.org 70 i- expect " : " Err bitreich.org 70 i- send "\nr\n" Err bitreich.org 70 i- expect " : " Err bitreich.org 70 i- Err bitreich.org 70 i- send "p\n" Err bitreich.org 70 i- expect "clic => " Err bitreich.org 70 i- Err bitreich.org 70 i- send "r\n" Err bitreich.org 70 i- expect "clic => " Err bitreich.org 70 i- Err bitreich.org 70 i- send "h\n" Err bitreich.org 70 i- expect "clic => " Err bitreich.org 70 i- Err bitreich.org 70 i- send "a\n" Err bitreich.org 70 i- expect "clic => " Err bitreich.org 70 i- Err bitreich.org 70 i- send "b\n" Err bitreich.org 70 i- expect "clic => " Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-spawn ./clic gopher://bitreich.org Err bitreich.org 70 i-set running [user_input] Err bitreich.org 70 i-send "x\n" Err bitreich.org 70 i-expect eof Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-spawn sbcl Err bitreich.org 70 i-expect "* " Err bitreich.org 70 i- Err bitreich.org 70 i-send "(require :sb-cover) (require :sb-bsd-sockets)\n" Err bitreich.org 70 i-expect "* " Err bitreich.org 70 i- Err bitreich.org 70 i-send "(declaim (optimize sb-cover:store-coverage-data))\n" Err bitreich.org 70 i-expect "* " Err bitreich.org 70 i- Err bitreich.org 70 i-send "(compile-file \"clic.lisp\")\n" Err bitreich.org 70 i-expect "* " Err bitreich.org 70 i- Err bitreich.org 70 i-send "(load \"clic.fasl\")\n" Err bitreich.org 70 i-expect "* " Err bitreich.org 70 i- Err bitreich.org 70 i-send "(setf *offline* t)\n" Err bitreich.org 70 i-expect "* " Err bitreich.org 70 i- Err bitreich.org 70 i-send "(main)\n" Err bitreich.org 70 i-set running [user_input] Err bitreich.org 70 i-send "(pop *history*) (p) (r)\n" Err bitreich.org 70 i-expect "* " Err bitreich.org 70 i- Err bitreich.org 70 i-send "19\n" Err bitreich.org 70 i-expect " : " Err bitreich.org 70 i-send "q\n" Err bitreich.org 70 i-expect "* " Err bitreich.org 70 i- Err bitreich.org 70 i-send "(main)\n" Err bitreich.org 70 i-expect "clic => " Err bitreich.org 70 i- Err bitreich.org 70 i-send "exit\n" Err bitreich.org 70 i-expect "* " Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-# add an argv to test argv parsing Err bitreich.org 70 i-send "(setf *posix-argv* '(\"sbcl\" \"gopher://bitreich.org/0/documents/bitreich-manifesto.md\"))\n" Err bitreich.org 70 i-expect "* " Err bitreich.org 70 i- Err bitreich.org 70 i-send "(main)\n" Err bitreich.org 70 i-expect " : " Err bitreich.org 70 i-send "q\n" Err bitreich.org 70 i-expect "* " Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-# add an argv to test argv parsing Err bitreich.org 70 i-send "(setf *posix-argv* '(\"sbcl\" \"bitreich.org/1/usr/solene/\"))\n" Err bitreich.org 70 i-expect "* " Err bitreich.org 70 i-send "(main)\n" Err bitreich.org 70 i-expect "clic => " Err bitreich.org 70 i-send "q\n" Err bitreich.org 70 i-expect "* " Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-# add an argv to test argv parsing Err bitreich.org 70 i-send "(setf *posix-argv* '(\"sbcl\" \"bitreich.org:70/\"))\n" Err bitreich.org 70 i-expect "* " Err bitreich.org 70 i-send "(main)\n" Err bitreich.org 70 i-expect "clic => " Err bitreich.org 70 i-send "q\n" Err bitreich.org 70 i-expect "* " Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-send "(sb-cover:report \"report/\")\n" Err bitreich.org 70 i-expect "* " Err bitreich.org 70 i- Err bitreich.org 70 i-send "(quit)\n" Err bitreich.org 70 i-expect eof Err bitreich.org 70 1diff --git a/make-binary.lisp b/make-binary.lisp /scm/clic/file/make-binary.lisp.gph bitreich.org 70 i@@ -1,6 +1,4 @@ Err bitreich.org 70 i ;; ecl produces a linked binary to ecl shared library Err bitreich.org 70 i-;; sbcl produces a static binary (~ 10Mb with compression / 70Mb without) Err bitreich.org 70 i- Err bitreich.org 70 i (require 'asdf) Err bitreich.org 70 i #+ecl Err bitreich.org 70 i (require 'cmp) Err bitreich.org 70 i@@ -10,20 +8,6 @@ Err bitreich.org 70 i (progn Err bitreich.org 70 i (compile-file "clic.lisp" :system-p t) Err bitreich.org 70 i (c:build-program "clic" :epilogue-code '(progn (handler-case (main) (condition () (quit)))) :lisp-files '("clic.o"))) Err bitreich.org 70 i-#+sbcl Err bitreich.org 70 i-(progn Err bitreich.org 70 i- (require 'sb-bsd-sockets) Err bitreich.org 70 i- (sb-ext:disable-debugger) Err bitreich.org 70 i- (load "clic.lisp") Err bitreich.org 70 i- #+sb-core-compression Err bitreich.org 70 i- (sb-ext:save-lisp-and-die "clic" Err bitreich.org 70 i- :executable t Err bitreich.org 70 i- :compression 5 Err bitreich.org 70 i- :toplevel 'main) Err bitreich.org 70 i- #-sb-core-compression Err bitreich.org 70 i- (sb-ext:save-lisp-and-die "clic" Err bitreich.org 70 i- :executable t Err bitreich.org 70 i- :toplevel 'main)) Err bitreich.org 70 i Err bitreich.org 70 i (format t "INFO => Compilation done (or at least it should be)~%") Err bitreich.org 70 i (quit) Err bitreich.org 70 1diff --git a/run-test.sh b/run-test.sh /scm/clic/file/run-test.sh.gph bitreich.org 70 i@@ -1,14 +0,0 @@ Err bitreich.org 70 i-#!/bin/sh Err bitreich.org 70 i- Err bitreich.org 70 i-LISP=$1 Err bitreich.org 70 i- Err bitreich.org 70 i-expect -f interactive-test.exp Err bitreich.org 70 i- Err bitreich.org 70 i-${LISP} --load clic.lisp --load test.lisp Err bitreich.org 70 i- Err bitreich.org 70 i-./clic gopher://bitreich.org:70/0/ | md5sum - Err bitreich.org 70 i-./clic bitreich.org:70/0/ | md5sum - Err bitreich.org 70 i-./clic bitreich.org/0/ | md5sum - Err bitreich.org 70 i-echo "/" | nc bitreich.org 70 | md5sum - Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 1diff --git a/test.lisp b/test.lisp /scm/clic/file/test.lisp.gph bitreich.org 70 i@@ -1,35 +0,0 @@ Err bitreich.org 70 i-;; we can write scenario here Err bitreich.org 70 i- Err bitreich.org 70 i-(print (parse-url "gopher://perso.pw:70/0/")) Err bitreich.org 70 i-(print (parse-url "gopher://perso.pw/0/a")) Err bitreich.org 70 i-(print (parse-url "perso.pw/0/some/uri.txt")) Err bitreich.org 70 i-(print (parse-url "perso.pw")) Err bitreich.org 70 i-(print (parse-url "perso.pw:70")) Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-(setf *bookmark-file* "bookmark-test") Err bitreich.org 70 i-(load-bookmark) Err bitreich.org 70 i-(p) Err bitreich.org 70 i-(g 1) Err bitreich.org 70 i-(add-bookmark) Err bitreich.org 70 i-(getpage "bitreich.org" 70 "/") Err bitreich.org 70 i-(display-buffer "1") Err bitreich.org 70 i-(g 7) ;; going to radio Err bitreich.org 70 i-(g 1) ;; going back Err bitreich.org 70 i-(g 21) ;; banana ! Err bitreich.org 70 i-(p) ;; going back Err bitreich.org 70 i-(g 15) Err bitreich.org 70 i-(g 1) Err bitreich.org 70 i-(p) Err bitreich.org 70 i-(p) Err bitreich.org 70 i-(add-bookmark) Err bitreich.org 70 i-(show-bookmarks) Err bitreich.org 70 i-(g 1) Err bitreich.org 70 i- Err bitreich.org 70 i-(print *links*) Err bitreich.org 70 i- Err bitreich.org 70 i-(print *history*) Err bitreich.org 70 i-(format t "~%") Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-(quit) Err bitreich.org 70 .