From 2f3e3c3e4a9f0d6298073901e96353e4ab1e85b3 Mon Sep 17 00:00:00 2001 From: cage Date: Sat, 17 Apr 2021 12:14:53 +0200 Subject: [PATCH] - updated version, docs and configure scripts. --- ChangeLog | 5 +- NEWS.org | 7 + README.org | 2 +- README.txt | 438 ++++++++++++++++++++++++++++++++++++++++++++++++++- configure | 20 +-- configure.ac | 2 +- tinmop.asd | 2 +- 7 files changed, 460 insertions(+), 16 deletions(-) diff --git a/ChangeLog b/ChangeLog index cce1fc0..9224dec 100644 --- a/ChangeLog +++ b/ChangeLog @@ -4,8 +4,11 @@ * src/iri-parser.lisp, * src/package.lisp, * src/tests/iri-tests.lisp, - * src/gemini/client.lisp, + * src/text-utils.lisp, + * src/gemini/client.lisp: + - quote meta characters when matching for RE, searching for a common + prefix from a bag of strings. - [gemini] allowed to connect to host using IP address instead of hostname; - fixed 'make-gemini-iri', was building wrong IRI with IP6 address diff --git a/NEWS.org b/NEWS.org index 8717808..31ef5c8 100644 --- a/NEWS.org +++ b/NEWS.org @@ -1,3 +1,10 @@ +* 2021-04-17 version 0.6.2 + + - Bugfix + - completing a command argument with strings that contains special + characters (like, for example a square bracket) no more makes + the program crash. + * 2021-04-16 version 0.6.1 - Bugfix diff --git a/README.org b/README.org index d741aeb..872b4f8 100644 --- a/README.org +++ b/README.org @@ -323,7 +323,7 @@ manager of your distribution (~apt~, ~yum~ etc). * NO WARRANTY - tinmop: an humble mastodon client + tinmop: an humble gemini and pleroma client Copyright (C) 2020 cage This program is free software: you can redistribute it and/or modify diff --git a/README.txt b/README.txt index ecc68c2..e1fe980 100644 --- a/README.txt +++ b/README.txt @@ -6,8 +6,442 @@ Table of Contents ───────────────── +1. Introduction +2. Peculiar Features +.. 1. Important note +3. Dependency +.. 1. Programs +.. 2. Lisp Libraries +.. 3. Foreign (C language) library +4. Install +.. 1. Using guix +.. 2. From source +5. Usage +6. BUGS +7. Translations +8. License +9. Privacy +10. Contributing +11. FAQ +12. NO WARRANTY +13. Acknowledgment -][as -explained in the guix manual]]. + + +1 Introduction +══════════════ + + Tinmop is an opinionated client for [Pleroma] (using the mastodon API) + and [gemini protocol]. It offer a distraction free terminal + interface. + + The name is a recursive acronym: "Tinmop Is Not Mutt or Pine". The + older of us can remember that, in turn, Pine is sometimes considered + an acronym as well: "Pine Is Not Elm" and, finally, Elm means + (according to Wikipedia): "Electronic Mail". + + +[Pleroma] + +[gemini protocol] + + +2 Peculiar Features +═══════════════════ + + • tree structure of messages; + • subscriptions of hashtag; + • programmable and extensible; + • encrypted direct message (but see 11); + • no mentions notification, no knowledge of when or who favourited + your status; + • No blocking or muting, the client can be configured to ignore a list + of accounts. + + +2.1 Important note +────────────────── + + This is alpha quality software, many things are broken, some feature + are missing some works with unintended/unexpected side effects; this + software is for testing only and remember that there is [NO WARRANTY]. + + +[NO WARRANTY] See section 12 + + +3 Dependency +════════════ + +3.1 Programs +──────────── + + ⁃ to build the package: xgettext. + + ⁃ to install the package, including running the script to install lisp + libraries (`quick_quicklisp.sh'): + • AWK; + • BASH shell. + + ⁃ to run the program: + • SBCL compiler; + • xdg-open; + • openssl; + • your favourite editor (default: nano). + + All the dependencies above should be available using the package + manager of your distribution (`apt', `yum' etc). + + +3.2 Lisp Libraries +────────────────── + + • alexandria; + • cl-ppcre; + • tooter; + • croatoan; + • osicat; + • cl-spark; + • access; + • sqlite; + • sxql; + • sxql-composer; + • marshal; + • bordeaux-threads; + • log4cl; + • local-time; + • cl-colors2; + • cl-i18n; + • clunit2; + • esrap; + • ieee-floats; + • parse-number; + • cl-html5-parser; + • unix-opts; + • crypto-shortcuts; + • drakma. + + All these libraries will be downloaded, compiled and installed by the + script `quick_quicklisp.sh', see below. + + +3.3 Foreign (C language) library +──────────────────────────────── + + • libssl (TLS socket) + + The C library should be installed with their header (`*.h') files. + On Debian or derived system this means installing the library + package with the `-dev' suffix as shown below: + + ┌──── + │ # apt-get install libssl-dev + └──── + + +4 Install +═════════ + +4.1 Using guix +────────────── + + Using [guix] is the simpler way to install this software: + + ┌──── + │ $ guix install tinmop + └──── + + Guix can be installed on debian (testing or sid): + + ┌──── + │ $ apt-get install guix + └──── + + or using a shell script [as explained in the guix manual]. + + +[guix] + +[as explained in the guix manual] + + + +4.2 From source +─────────────── + + 1. optional step needed only if you have not already the configure + script, you will need `autotools' for that. + + ┌──── + │ $ autoreconf -fiv + └──── + + 2. run `configure' and resolve the missing dependencies (if any) + + ┌──── + │ $ ./configure + └──── + + 3. the script `quick-quicklisp.sh' will download and install the + library manager and the library on your home dir. + + ┌──── + │ $ ./quick_quicklisp.sh + └──── + + This step is optional if you have already installed quicklisp, in + this case just load the [dependencies] using the client installed + on your computer. + + 4. clone in `$HOME/quicklisp/local-projects/' the latest version of + croatoan, a library to wrap the ncurses TUI library. + + This step is temporary as this version will get into quicklisp + eventually. + ┌──── + │ $ cd $HOME/quicklisp/local-projects/ + │ $ git clone https://github.com/McParen/croatoan.git + └──── + + 5. build the executable: + + ┌──── + │ $ make + └──── + + 6. install on your system: + + ┌──── + │ # make install + └──── + + 7. take a look the manpage: + + ┌──── + │ $ man tinmop + └──── + + 8. run the software! + + ┌──── + │ $ tinmop + └──── + + 9. An error will be printed about a missing file place a simple + configuration file in one of the directory the software indicated. + See [the FAQ below]. + + +[dependencies] See section 3 + +[the FAQ below] See section 11 + + +5 Usage +═══════ + + See the command line options: + + ┌──── + │ $ tinmop -h + └──── + + To get instruction about configuration: + + ┌──── + │ $ man tinmop + └──── + + +6 BUGS +══════ + + Please file bug reports on the [notabug repository]. + + +[notabug repository] + + +7 Translations +══════════════ + + Only Italian translation is regularly updated. + + +8 License +═════════ + + This program is released under GNU General Public license version 3 or + later (see COPYING file). + + The program use data and code from other sources, please see + LICENSES.org for credits. + + Although any efforts has been put to make the list of credits + exhaustive, errors are always possible. Please send correction to + cage-dev at twistfold dot it. + + +9 Privacy +═════════ + + The author of this software collects no user data information with + this software. + + But this software is a client to connect and interact to one or more + remote computer. So potentially it could share a lot of information + with other actors but just after the user allowed it to do so. + + It is the user responsibility to checks the privacy conditions of the + instance this software connect to. + + Moreover launching `quick_quicklisp.sh' will contact + , check the [quicklisp sources] for + details. + + By default, pressing "!" will contact the remote service located at: + "gemini://houston.coder.town/search". + + +[quicklisp sources] + + +10 Contributing +═══════════════ + + Any help is appreciated. If you intend to contribute please point your + browser to the [issue tracker] or file a [pull request]. + + But, please take a minute to read the file <./CONTRIBUTING.org> + + +[issue tracker] + +[pull request] + + +11 FAQ +══════ + + • I just tried to start the program for the first time but it give me + a weird error, what's wrong? + + Did you wrote a configuration file before starting? + + Tinmop expects a configuration file in your config directory + (usually `$HOME/.config/tinmop/'). This file must contains at least + the username and the name of the instance you want to connect. + + Example : + ┌──── + │ # a line starting with a '#' is a comment + │ + │ # a file can be included in another with this directive: + │ # use "shared.conf" + │ + │ # The server instance name + │ server = server address + │ + │ # your username + │ username = username + └──── + + If this file does not exists or is invalid tinmop could be used just + as a gemini client. + + Please check the man page (tinmop(1)) for more information. + + • The `quick_quicklisp.sh' script failed and refuse to start again, + what can I do? + + If tinmop is the first Common lisp program you have ever installed + installed, try to rename the directory `$/HOME/quicklisp' and, then, + restart the script. + + If problem persists [contact me]. + + • Is tinmop compatible with mastodon servers? + + Unfortunately no, the way some API endpoint provide the toots is not + suitable for this client, for more information please go [here]. + + I hope this will change in the future but this depends entirely from + the people are developing the server. + + • OK the program is running but how can i use it? + + Press the key `?' to get a list of the available keys available. + + • Tinmop crashed! Where can i report that? + + The issue tracker is here: + + + + Please also, if possible, send the backtrace of the process. To + print a backtrace just write `backtrace' when the debugger has been + invoked. + + *Important note* + + The backtrace can contains sensitive and personal information, + please always *carefully checks* the backtrace contents before + making this information public! + + • Are the encrypted messages secure? + + *No*. First only a symmetric encryption scheme is implemented (so + there is a problem of secure key exchanging). Moreover i am not a + crypto expert and probably i made something wrong. Note that i am + not claiming that the algorithm (AES256) or the implementation of + such encrypting algorithm is flawed but that, likely, is flawed the + code i wrote to use the crypto library in this software. + + So, please do not consider the encrypted message secure at all. + + +[contact me] See section 6 + +[here] + + +12 NO WARRANTY +══════════════ + + tinmop: an humble gemini and pleroma client Copyright (C) 2020 cage + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or (at + your option) any later version. + + This program is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see [http://www.gnu.org/licenses/]. + + +[http://www.gnu.org/licenses/] + + +13 Acknowledgment +═════════════════ + + My deep thanks to the folks that provided us with wonderful SBCL and + Common lisp libraries. + + In particular i want to thanks the authors of the libraries Croatoan + and Tooter for their help when I started to develop this program. + + There are more people i borrowed code and data from, they are + mentioned in the file LINCENSES.org + + This program is was born also with the help of CCCP: "Collettivo + Computer Club Palermo". + + Also thanks to "barbar" for testing of the installation scripts. diff --git a/configure b/configure index bacb472..36dde7d 100755 --- a/configure +++ b/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for tinmop 0.6.1. +# Generated by GNU Autoconf 2.69 for tinmop 0.6.2. # # Report bugs to . # @@ -580,8 +580,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='tinmop' PACKAGE_TARNAME='tinmop' -PACKAGE_VERSION='0.6.1' -PACKAGE_STRING='tinmop 0.6.1' +PACKAGE_VERSION='0.6.2' +PACKAGE_STRING='tinmop 0.6.2' PACKAGE_BUGREPORT='https://notabug.org/cage/tinmop/' PACKAGE_URL='' @@ -1279,7 +1279,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures tinmop 0.6.1 to adapt to many kinds of systems. +\`configure' configures tinmop 0.6.2 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1350,7 +1350,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of tinmop 0.6.1:";; + short | recursive ) echo "Configuration of tinmop 0.6.2:";; esac cat <<\_ACEOF @@ -1454,7 +1454,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -tinmop configure 0.6.1 +tinmop configure 0.6.2 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -1634,7 +1634,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by tinmop $as_me 0.6.1, which was +It was created by tinmop $as_me 0.6.2, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2494,7 +2494,7 @@ fi # Define the identity of the package. PACKAGE='tinmop' - VERSION='0.6.1' + VERSION='0.6.2' cat >>confdefs.h <<_ACEOF @@ -7068,7 +7068,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by tinmop $as_me 0.6.1, which was +This file was extended by tinmop $as_me 0.6.2, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -7125,7 +7125,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -tinmop config.status 0.6.1 +tinmop config.status 0.6.2 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff --git a/configure.ac b/configure.ac index 8232450..f391fdf 100644 --- a/configure.ac +++ b/configure.ac @@ -15,7 +15,7 @@ dnl You should have received a copy of the GNU General Public License dnl along with this program. dnl If not, see [[http://www.gnu.org/licenses/][http://www.gnu.org/licenses/]]. -AC_INIT([tinmop],[0.6.1],[https://notabug.org/cage/tinmop/],[tinmop]) +AC_INIT([tinmop],[0.6.2],[https://notabug.org/cage/tinmop/],[tinmop]) AM_INIT_AUTOMAKE([-Wall foreign]) diff --git a/tinmop.asd b/tinmop.asd index bf561d3..289faa3 100644 --- a/tinmop.asd +++ b/tinmop.asd @@ -18,7 +18,7 @@ (defsystem :tinmop :author "cage" :license "GPLv3" - :version "0.6.1" + :version "0.6.2" :pathname "src" :serial t :depends-on (:alexandria