From 2934ee80367ee9d50b99ed8d7f672d1a397b4ce0 Mon Sep 17 00:00:00 2001 From: Andre Noll Date: Tue, 12 Mar 2024 19:02:39 +0100 Subject: [PATCH 01/16] paraslash 0.7.3 --- NEWS.md | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/NEWS.md b/NEWS.md index 4b718d8a..d5812289 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,9 +1,24 @@ NEWS ==== ----------------------------------------------- -0.7.3 (to be announced) "weighted correctness" ----------------------------------------------- +--------------------------------------------- +0.7.4 (to be announced) "genetic contraction" +--------------------------------------------- + +Downloads: +[tarball](./releases/paraslash-git.tar.xz) + +----------------------------------------- +0.7.3 (2024-03-12) "weighted correctness" +----------------------------------------- + +The highlight of this release is the new "ls --admissible=m/foo" +feature described below. Other user-visible changes include minor +additions to the "ls" and "select" server commands. The release also +includes a fair number of cleanups for the crypto code and the file +descriptor utilities, both without visible effects. Old ssh keys +and outdated openssl library versions are now deprecated and cause +warnings. - Old style PEM keys are now deprecated. They still work but their use results in a run-time warning. The removal of PEM key support is @@ -23,7 +38,8 @@ NEWS - Cleanup of the openssl-specific code. Downloads: -[tarball](./releases/paraslash-git.tar.xz) +[tarball](./releases/paraslash-0.7.3.tar.xz), +[signature](./releases/paraslash-0.7.3.tar.xz.asc) ------------------------------------- 0.7.2 (2023-03-08) "optical friction" -- 2.39.2 From 0f8a8423c94cf0edba1e077a3b0e90f2b0b99edc Mon Sep 17 00:00:00 2001 From: Andre Noll Date: Wed, 20 Mar 2024 23:32:24 +0100 Subject: [PATCH 02/16] ipc: Remove pointless initialization in shm_get_shmmax(). The subsequent read() call overwrites the buffer. --- ipc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ipc.c b/ipc.c index 8e9dd51a..c245f690 100644 --- a/ipc.c +++ b/ipc.c @@ -218,7 +218,7 @@ size_t shm_get_shmmax(void) { int fd = open("/proc/sys/kernel/shmmax", O_RDONLY); if (fd >= 0) { - char buf[100] = ""; + char buf[100]; int ret = read(fd, buf, sizeof(buf) - 1); if (ret > 0) { buf[ret] = '\0'; -- 2.39.2 From 824809dcdf32f93aa841fadbd62e8b2475768d40 Mon Sep 17 00:00:00 2001 From: Andre Noll Date: Thu, 21 Mar 2024 12:39:06 +0100 Subject: [PATCH 03/16] client: Fix memory leak on exit. This triggers only if para_client is run interactively. The leak is harmless, but still.. --- client.c | 1 + 1 file changed, 1 insertion(+) diff --git a/client.c b/client.c index 84b7580c..d2d11fd3 100644 --- a/client.c +++ b/client.c @@ -549,6 +549,7 @@ __noreturn static void interactive_session(void) i9e_close(); para_log = stderr_log; out: + free(ici.history_file); if (ret < 0) PARA_ERROR_LOG("%s\n", para_strerror(-ret)); exit(ret < 0? EXIT_FAILURE : EXIT_SUCCESS); -- 2.39.2 From d024cd4ddcb71161f09693461a1c63cb36a8ca64 Mon Sep 17 00:00:00 2001 From: Andre Noll Date: Sun, 28 Apr 2024 21:34:27 +0200 Subject: [PATCH 04/16] manual: Fix local links. All local links broke after an upgrade of the discount markdown converter, because this changed the way the anchors of section headings are encoded. This commit should fix all broken URI fragments. Suggested-by: checklink(1) --- web/manual.md | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/web/manual.md b/web/manual.md index b5329ea0..136cd139 100644 --- a/web/manual.md +++ b/web/manual.md @@ -14,7 +14,7 @@ Introduction In this chapter we give an [overview](#Overview) of the interactions of the programs contained in the paraslash package, followed by -[brief descriptions](#The.paraslash.executables) of all executables. +[brief descriptions](#The-paraslash-executables) of all executables. Overview -------- @@ -135,7 +135,7 @@ fine-grained selection based on various properties of the audio file, including information found in (ID3) tags. Simple playlists are also supported. It is possible to store images (album covers) and lyrics in the database and associate these to the corresponding audio files. -The section on the [audio file selector](#The.audio.file.selector) +The section on the [audio file selector](#The-audio-file-selector) discusses this topic in more detail. Another component of para_server is the virtual streaming system, @@ -523,7 +523,7 @@ starts streaming. To activate streaming, execute Since no playlist has been specified yet, the "dummy" mode which selects all known audio files is activated automatically. See the -section on the [audio file selector](#The.audio.file.selector) for how +section on the [audio file selector](#The-audio-file-selector) for how to use playlists and moods to specify which files should be streamed in which order. @@ -555,12 +555,12 @@ authentication method. Authenticated connections are encrypted using the AES stream cipher in integer counter mode. In this chapter we briefly describe RSA and AES, and sketch the -[authentication handshake](#Client-server.authentication) +[authentication handshake](#Client-2d-server-authentication) between para_client and para_server. User management is discussed -in the section on [the user_list file](#The.user_list.file). +in the section on [the user_list file](#The-user_list-file). These sections are all about communication between the client and the server. Connecting para_audiod is a different matter and is described -in a [separate section](#Connecting.para_audiod). +in a [separate section](#Connecting-para_audiod). RSA and AES ----------- @@ -635,8 +635,8 @@ infeasibility to invert the hash function. Neither para_server or para_client create RSA keys on their own. This has to be done once for each user as sketched in -[Quick start](#Quick.start) and discussed in more detail -[below](#The.user_list.file). +[Quick start](#Quick-start) and discussed in more detail +[below](#The-user_list-file). The user_list file ------------------ @@ -708,12 +708,12 @@ maintains tables containing images (e.g. album cover art) and lyrics that can be associated with one or more audio files. In this chapter we sketch the setup of the [AFS -process](#The.AFS.process) during server startup and proceed with the -description of the [layout](#Database.layout) of the various database -tables. The section on [playlists and moods](#Playlists.and.moods) +process](#The-AFS-process) during server startup and proceed with the +description of the [layout](#Database-layout) of the various database +tables. The section on [playlists and moods](#Playlists-and-moods) explains these two audio file selection mechanisms in detail and contains practical examples. The way [file renames and content -changes](#File.renames.and.content.changes) are detected is discussed +changes](#File-renames-and-content-changes) are detected is discussed briefly before the [Troubleshooting](#Troubleshooting) section concludes the chapter. @@ -1349,12 +1349,12 @@ used. For these data connections, a variety of transports (UDP, DCCP, HTTP) can be chosen. The chapter starts with the [control -service](#The.paraslash.control.service), followed by a section -on the various [streaming protocols](#Streaming.protocols) +service](#The-paraslash-control-service), followed by a section +on the various [streaming protocols](#Streaming-protocols) in which the data connections are described. The way audio file headers are embedded into the stream is discussed -[briefly](#Streams.with.headers.and.headerless.streams) before the -[example section](#Networking.examples) which illustrates typical +[briefly](#Streams-with-headers-and-headerless-streams) before the +[example section](#Networking-examples) which illustrates typical commands for real-life scenarios. Both IPv4 and IPv6 are supported. @@ -1374,7 +1374,7 @@ is unaffected if the child dies or goes crazy for whatever reason. In fact, the child process can not change address space of server process. The section on [client-server -authentication](#Client-server.authentication) above described the +authentication](#Client-2d-server-authentication) above described the early connection establishment from the crypto point of view. Here it is described what happens after the connection (including crypto setup) has been established. There are four processes involved during @@ -1442,7 +1442,7 @@ only for Linux. - UDP. Recommended for multicast LAN streaming. -See the Appendix on [network protocols](#Network.protocols) +See the Appendix on [network protocols](#Network-protocols) for brief descriptions of the various protocols relevant for network audio streaming with paraslash. @@ -1513,7 +1513,7 @@ be configured via the FEC parameters which are dictated by server and may also be configured through the "sender" command. The FEC parameters are encoded in the header of each network packet, so no configuration is necessary on the receiver side. See the section on -[FEC](#Forward.error.correction) below. +[FEC](#Forward-error-correction) below. Streams with headers and headerless streams ------------------------------------------- @@ -1653,7 +1653,7 @@ executables. For example, the mp3dec filter depends on the mad library. Forward error correction ------------------------ -As already mentioned [earlier](#Streaming.protocols), paraslash +As already mentioned [earlier](#Streaming-protocols), paraslash uses forward error correction (FEC) for the unreliable UDP and DCCP transports. FEC is a technique which was invented already in 1960 by Reed and Solomon and which is widely used for the parity @@ -1954,7 +1954,7 @@ paraslash project, some additional tools should be installed on a developer machine. - [git](http://git.or.cz/). As described in more detail -[below](#Git.branches), the git source code management tool is used for +[below](#Git-branches), the git source code management tool is used for paraslash development. It is necessary for cloning the git repository and for getting updates. -- 2.39.2 From fc03c86ad07ee245f448898d4df7157c32af40e5 Mon Sep 17 00:00:00 2001 From: Andre Noll Date: Sun, 28 Apr 2024 21:39:01 +0200 Subject: [PATCH 05/16] manual: Remove xmms2 link. This link is broken (404). Suggested-by: checklink(1) --- web/manual.md | 1 - 1 file changed, 1 deletion(-) diff --git a/web/manual.md b/web/manual.md index 136cd139..b20168c0 100644 --- a/web/manual.md +++ b/web/manual.md @@ -2329,7 +2329,6 @@ Application web pages --------------------- - [paraslash](http://people.tuebingen.mpg.de/maan/paraslash/) -- [xmms](https://xmms2.org/wiki/Main_Page) - [mpg123](http://www.mpg123.de/) - [gstreamer](https://gstreamer.freedesktop.org/) - [icecast](http://www.icecast.org/) -- 2.39.2 From 23b5c7309eb3cab22e65dfcd1b6d4b60b861813d Mon Sep 17 00:00:00 2001 From: Andre Noll Date: Sun, 28 Apr 2024 21:40:50 +0200 Subject: [PATCH 06/16] manual: Replace broken git link. The link is forbidden (403). Use the link reported by "aptitude show git" (on debian systems) instead. Suggested-by: checklink(1) --- web/manual.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/manual.md b/web/manual.md index b20168c0..95936776 100644 --- a/web/manual.md +++ b/web/manual.md @@ -1953,7 +1953,7 @@ from tar balls) and for contributing non-trivial changes to the paraslash project, some additional tools should be installed on a developer machine. -- [git](http://git.or.cz/). As described in more detail +- [git](https://git-scm.com/). As described in more detail [below](#Git-branches), the git source code management tool is used for paraslash development. It is necessary for cloning the git repository and for getting updates. -- 2.39.2 From 07cf1981af26ec9b69b91b5c69da90e099cf4f6a Mon Sep 17 00:00:00 2001 From: Andre Noll Date: Sun, 28 Apr 2024 21:44:19 +0200 Subject: [PATCH 07/16] manual: Replace doxygen link. The link is forbidden (403). Use the link reported by "aptitude show doxygen" instead. Suggested-by: checklink(1) --- web/manual.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/manual.md b/web/manual.md index 95936776..e03ad3d3 100644 --- a/web/manual.md +++ b/web/manual.md @@ -1967,7 +1967,7 @@ HTML version of this manual and some of the paraslash web pages are written in the Markdown markup language and are translated into html with the converter of the *Discount* package. -- [doxygen](http://www.stack.nl/~dimitri/doxygen/). The documentation +- [doxygen](https://www.doxygen.nl/). The documentation of paraslash's C sources uses the doxygen documentation system. The conventions for documenting the source code is described in the [Doxygen section](#Doxygen). -- 2.39.2 From a599bc132e020e3d6f4f723c2ec075227e173a98 Mon Sep 17 00:00:00 2001 From: Andre Noll Date: Sun, 28 Apr 2024 21:46:35 +0200 Subject: [PATCH 08/16] manual: Remove Articles section. It only contained one link, and this link is broken (500). Suggested-by: checklink(1) --- web/manual.md | 7 ------- 1 file changed, 7 deletions(-) diff --git a/web/manual.md b/web/manual.md index e03ad3d3..3dfba712 100644 --- a/web/manual.md +++ b/web/manual.md @@ -2294,13 +2294,6 @@ and contributed significant improvements. References ========== -Articles --------- -- [Polynomial Codes over Certain Finite -Fields](http://kom.aau.dk/~heb/kurser/NOTER/KOFA01.PDF) by Reed, Irving -S.; Solomon, Gustave (1960), Journal of the Society for Industrial -and Applied Mathematics (SIAM) 8 (2): 300-304, doi:10.1137/0108018) - RFCs ---- -- 2.39.2 From 217149fecdc9053676aaaa929ace79e92135a34d Mon Sep 17 00:00:00 2001 From: Andre Noll Date: Sun, 28 Apr 2024 22:16:11 +0200 Subject: [PATCH 09/16] manual: Remove raid6 link. kernel.org returns 301 (Forbidden by robots.txt). Suggested-by: checklink(1) --- web/manual.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/web/manual.md b/web/manual.md index 3dfba712..ed880d89 100644 --- a/web/manual.md +++ b/web/manual.md @@ -2330,10 +2330,6 @@ Application web pages External documentation ---------------------- -- [The mathematics of -Raid6](https://www.kernel.org/pub/linux/kernel/people/hpa/raid6.pdf) -by H. Peter Anvin - - [Effective Erasure Codes for reliable Computer Communication Protocols](http://info.iet.unipi.it/~luigi/fec_ccr.ps.gz) by Luigi Rizzo -- 2.39.2 From 945339514d6f5ace549635537e4fab4cdbf4c71b Mon Sep 17 00:00:00 2001 From: Andre Noll Date: Wed, 8 May 2024 19:56:46 +0200 Subject: [PATCH 10/16] manual: Replace readline link. The old URL no longer works (error 504: host unreachable). The new gnu.org will hopefully stay. Suggested-by: checklink(1) --- web/manual.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/manual.md b/web/manual.md index ed880d89..d24563f6 100644 --- a/web/manual.md +++ b/web/manual.md @@ -385,7 +385,7 @@ the ao writer (ESD, PulseAudio,...). Debian package: `libao-dev`. para_gui. Debian package: `libncurses-dev`. - [GNU -Readline](http://cnswww.cns.cwru.edu/php/chet/readline/rltop.html). If +Readline](https://www.gnu.org/software/readline/). If this library (`libreadline-dev`) is installed, para_client, para_audioc and para_play support interactive sessions. -- 2.39.2 From 99e7b0d26b9535406bc0dc2c0114673f2d313838 Mon Sep 17 00:00:00 2001 From: Andre Noll Date: Sun, 28 Apr 2024 22:21:35 +0200 Subject: [PATCH 11/16] manual: Replace http:// links with https:// All of these return 301 -> 200 OK. --- web/manual.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/web/manual.md b/web/manual.md index d24563f6..3f0f41af 100644 --- a/web/manual.md +++ b/web/manual.md @@ -339,7 +339,7 @@ to install the development package (`libssl-dev` or `libgcrypt-dev` on debian systems) as well. - [flex](https://github.com/westes/flex) and -[bison](https://www.gnu.org/software/bison) are needed to build the +[bison](https://www.gnu.org/software/bison/) are needed to build the mood parser of para_server. The build system will skip para_server if these tools are not installed. @@ -2297,25 +2297,25 @@ References RFCs ---- -- [RFC 768](http://www.ietf.org/rfc/rfc768.txt) (1980): User Datagram +- [RFC 768](https://www.ietf.org/rfc/rfc768.txt) (1980): User Datagram Protocol -- [RFC 791](http://www.ietf.org/rfc/rfc791.txt) (1981): Internet +- [RFC 791](https://www.ietf.org/rfc/rfc791.txt) (1981): Internet Protocol -- [RFC 2437](http://www.ietf.org/rfc/rfc2437.txt) (1998): RSA +- [RFC 2437](https://www.ietf.org/rfc/rfc2437.txt) (1998): RSA Cryptography Specifications -- [RFC 4340](http://www.ietf.org/rfc/rfc4340.txt) (2006): Datagram +- [RFC 4340](https://www.ietf.org/rfc/rfc4340.txt) (2006): Datagram Congestion Control Protocol (DCCP) -- [RFC 4341](http://www.ietf.org/rfc/rfc4341.txt) (2006): Congestion +- [RFC 4341](https://www.ietf.org/rfc/rfc4341.txt) (2006): Congestion Control ID 2: TCP-like Congestion Control -- [RFC 4342](http://www.ietf.org/rfc/rfc4342.txt) (2006): Congestion +- [RFC 4342](https://www.ietf.org/rfc/rfc4342.txt) (2006): Congestion Control ID 3: TCP-Friendly Rate Control (TFRC) -- [RFC 6716](http://www.ietf.org/rfc/rfc6716.txt) (2012): Definition +- [RFC 6716](https://www.ietf.org/rfc/rfc6716.txt) (2012): Definition of the Opus Audio Codec Application web pages @@ -2324,8 +2324,8 @@ Application web pages - [paraslash](http://people.tuebingen.mpg.de/maan/paraslash/) - [mpg123](http://www.mpg123.de/) - [gstreamer](https://gstreamer.freedesktop.org/) -- [icecast](http://www.icecast.org/) -- [Audio Compress](https://beesbuzz.biz/code/audiocompress.php) +- [icecast](https://www.icecast.org/) +- [Audio Compress](https://github.com/fluffy-critter/audiocompress) External documentation ---------------------- -- 2.39.2 From a6b064380db178d4c25afcc3bbaab0a5ec751732 Mon Sep 17 00:00:00 2001 From: Andre Noll Date: Sun, 28 Apr 2024 23:09:35 +0200 Subject: [PATCH 12/16] manual: Avoid duplicate section headings. There exist two "Examples" and two "Troubleshooting" sections. Unfortunately the discount markdown converter is unable to create a working table of contents section in this situation: both links of the table of contents jump to the first Examples/Troubleshooting section. Fix this by renaming the sections. --- web/manual.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/web/manual.md b/web/manual.md index 3f0f41af..35769dce 100644 --- a/web/manual.md +++ b/web/manual.md @@ -714,7 +714,7 @@ tables. The section on [playlists and moods](#Playlists-and-moods) explains these two audio file selection mechanisms in detail and contains practical examples. The way [file renames and content changes](#File-renames-and-content-changes) are detected is discussed -briefly before the [Troubleshooting](#Troubleshooting) section +briefly before the [Troubleshooting](#Common-problems) section concludes the chapter. The AFS process @@ -1166,7 +1166,7 @@ data remains as before. It is possible to change the behaviour of the add command by using the "-l" (lazy add) or the "-f" (force add) option. -Troubleshooting +Common problems --------------- Use the debug loglevel (-l debug) to show debugging info. All paraslash @@ -1884,8 +1884,8 @@ shown by this theme. See gui_theme.c for examples. The "." and "," keys are used to switch between themes. -Examples --------- +Gui examples +------------ -> Show server info: -- 2.39.2 From 699395e7f65d1ca110ffbe5461ef25c5ab4aad40 Mon Sep 17 00:00:00 2001 From: Andre Noll Date: Sun, 28 Apr 2024 21:03:50 +0200 Subject: [PATCH 13/16] Prefer https:// for web pages and git URLs. The tuebingen.mpg.de git server now supports https, and so does the people.tuebingen.mpg.de page. Update all these links accordingly. This still leaves a lot of http:// links to external pages, but those can be adjusted in separate patches. --- INSTALL | 10 +++++----- README | 6 +++--- configure.ac | 4 ++-- web/about.in.html | 2 +- web/download.in.html | 4 ++-- web/manual.md | 14 +++++++------- 6 files changed, 20 insertions(+), 20 deletions(-) diff --git a/INSTALL b/INSTALL index 45676b7e..cabeb10f 100644 --- a/INSTALL +++ b/INSTALL @@ -2,15 +2,15 @@ Any knowledge of how to work with mouse and icons is not required. Installing lopsub ~~~~~~~~~~~~~~~~~ - git clone git://git.tuebingen.mpg.de/lopsub + git clone https://git.tuebingen.mpg.de/lopsub cd lopsub && make && sudo make install - (see http://people.tuebingen.mpg.de/maan/lopsub/) + (see https://people.tuebingen.mpg.de/maan/lopsub/) Installing osl ~~~~~~~~~~~~~~ - git clone git://git.tuebingen.mpg.de/osl + git clone https://git.tuebingen.mpg.de/osl cd osl && make && sudo make install - (see http://people.tuebingen.mpg.de/maan/osl/) + (see https://people.tuebingen.mpg.de/maan/osl/) Installing paraslash from tarball ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -37,4 +37,4 @@ Example for cross-compiling For details see the user manual: - http://people.tuebingen.mpg.de/maan/paraslash/manual.html + https://people.tuebingen.mpg.de/maan/paraslash/manual.html diff --git a/README b/README index d8a545fc..510c7e1f 100644 --- a/README +++ b/README @@ -5,9 +5,9 @@ audio files. See the user manual for details. Distribution of paraslash is covered by the GNU GPL, version 2 unless otherwise stated. See file COPYING. -Web page: http://people.tuebingen.mpg.de/maan/paraslash/ -Gitweb: http://git.tuebingen.mpg.de/paraslash.git/ -Git URL: git://git.tuebingen.mpg.de/paraslash.git +Web page: https://people.tuebingen.mpg.de/maan/paraslash/ +Gitweb: https://git.tuebingen.mpg.de/paraslash.git/ +Git URL: https://git.tuebingen.mpg.de/paraslash.git Email: Andre Noll Comments and bug reports are welcome. diff --git a/configure.ac b/configure.ac index 92560e00..b9ac3d0d 100644 --- a/configure.ac +++ b/configure.ac @@ -1,7 +1,7 @@ AC_PREREQ([2.61]) AC_INIT([paraslash], [m4_esyscmd_s(./GIT-VERSION-GEN)], - [maan@tuebingen.mpg.de], [], [http://people.tuebingen.mpg.de/maan/paraslash/]) + [maan@tuebingen.mpg.de], [], [https://people.tuebingen.mpg.de/maan/paraslash/]) AC_CONFIG_HEADERS([config.h]) AC_CONFIG_FILES([Makefile]) @@ -82,7 +82,7 @@ if test $HAVE_LOPSUB = no; then AC_MSG_ERROR([ The lopsub library is required to build this software, but the above checks indicate it is not installed on your system. Run the following command to download a copy. - git clone git://git.tuebingen.mpg.de/lopsub.git + git clone https://git.tuebingen.mpg.de/lopsub.git Install the library, then run this configure script again. ]) fi diff --git a/web/about.in.html b/web/about.in.html index f188ff25..452fa357 100644 --- a/web/about.in.html +++ b/web/about.in.html @@ -19,7 +19,7 @@ Unix systems. It is written in C and released under the GPLv2.

Author: Andre Noll, maan@tuebingen.mpg.de, Homepage: http://people.tuebingen.mpg.de/maan/ +href="https://people.tuebingen.mpg.de/maan/">https://people.tuebingen.mpg.de/maan/

Comments and bug reports are welcome. Please provide the version diff --git a/web/download.in.html b/web/download.in.html index 2b31e5d7..1287597e 100644 --- a/web/download.in.html +++ b/web/download.in.html @@ -11,7 +11,7 @@ source:

Clone the git repository by executing
 
-			git clone git://git.tuebingen.mpg.de/paraslash.git
+			git clone https://git.tuebingen.mpg.de/paraslash.git
 		 

The repository contains the full history of the @@ -66,7 +66,7 @@ source:

The - gitweb + gitweb page contains a snapshot link for each revision. This allows getting a specific revision without downloading diff --git a/web/manual.md b/web/manual.md index 35769dce..0db1e22c 100644 --- a/web/manual.md +++ b/web/manual.md @@ -287,9 +287,9 @@ Requirements ------------

For the impatient

- git clone git://git.tuebingen.mpg.de/lopsub + git clone https://git.tuebingen.mpg.de/lopsub cd lopsub && make && sudo make install - git clone git://git.tuebingen.mpg.de/osl + git clone https://git.tuebingen.mpg.de/osl cd osl && make && sudo make install && sudo ldconfig sudo apt-get install autoconf libssl-dev m4 \ libmad0-dev libid3tag0-dev libasound2-dev libvorbis-dev \ @@ -306,7 +306,7 @@ option parser for subcommands generates the command line and config file parsers for all paraslash executables. Clone the source code repository with - git clone git://git.tuebingen.mpg.de/lopsub + git clone https://git.tuebingen.mpg.de/lopsub - [gcc](ftp://ftp.gnu.org/pub/gnu/gcc) or [clang](http://clang.llvm.org). All gcc versions >= 5.4 are currently @@ -324,11 +324,11 @@ from templates by the m4 macro processor. Optional: -- [libosl](http://people.tuebingen.mpg.de/maan/osl/). The _object +- [libosl](https://people.tuebingen.mpg.de/maan/osl/). The _object storage layer_ library is used by para_server. To clone the source code repository, execute - git clone git://git.tuebingen.mpg.de/osl + git clone https://git.tuebingen.mpg.de/osl - [openssl](https://www.openssl.org/) or [libgcrypt](ftp://ftp.gnupg.org/gcrypt/libgcrypt/). At least one @@ -774,7 +774,7 @@ entry with metadata obtained from the audio format handler is added to the database. Note that AFS employs -[libosl](http://people.tuebingen.mpg.de/maan/osl/), the object +[libosl](https://people.tuebingen.mpg.de/maan/osl/), the object storage layer library, as the database backend. This library offers functionality similar to a relational database, but is much more lightweight than a full featured database management system. @@ -2321,7 +2321,7 @@ of the Opus Audio Codec Application web pages --------------------- -- [paraslash](http://people.tuebingen.mpg.de/maan/paraslash/) +- [paraslash](https://people.tuebingen.mpg.de/maan/paraslash/) - [mpg123](http://www.mpg123.de/) - [gstreamer](https://gstreamer.freedesktop.org/) - [icecast](https://www.icecast.org/) -- 2.39.2 From a5d317ab9ba0d75c1786c3fdc152bb7db1628942 Mon Sep 17 00:00:00 2001 From: Andre Noll Date: Sun, 28 Apr 2024 23:31:38 +0200 Subject: [PATCH 14/16] Prevent doxygen from generating invalid html. Doxygen is too stupid to grok the preprocessor tricks we are playing here, so don't generate documentation for these parts. --- command.c | 7 ++++++- mp4.c | 5 ++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/command.c b/command.c index 60c2aeba..bddb9cf0 100644 --- a/command.c +++ b/command.c @@ -32,12 +32,14 @@ #include "signal.h" #include "version.h" +/** \cond server_cmd_aux_info */ #define SERVER_CMD_AUX_INFO(_arg) _arg, static const unsigned server_command_perms[] = {LSG_SERVER_CMD_AUX_INFOS}; #undef SERVER_CMD_AUX_INFO #define SERVER_CMD_AUX_INFO(_arg) #_arg, static const char * const server_command_perms_txt[] = {LSG_SERVER_CMD_AUX_INFOS}; #undef SERVER_CMD_AUX_INFO +/** \endcond server_cmd_aux_info */ /** Commands including options must be shorter than this. */ #define MAX_COMMAND_LEN 32768 @@ -420,7 +422,8 @@ static int com_version(struct command_context *cc, struct lls_parse_result *lpr) } EXPORT_SERVER_CMD_HANDLER(version); -/** These status items are cleared if no audio file is currently open. */ +/** \cond empty_status_items */ +/* These status items are cleared if no audio file is currently open. */ #define EMPTY_STATUS_ITEMS \ ITEM(path) \ ITEM(directory) \ @@ -454,6 +457,8 @@ EXPORT_SERVER_CMD_HANDLER(version); ITEM(amplification) \ ITEM(play_time) \ +/** \endcond empty_status_items */ + /* * Create a set of audio-file related status items with empty values. These are * written to stat clients when no audio file is open. diff --git a/mp4.c b/mp4.c index 5ca1307f..fe9d4b37 100644 --- a/mp4.c +++ b/mp4.c @@ -131,7 +131,8 @@ static int read_int16(struct mp4 *f, uint16_t *result) return ret; } -/** A macro defining the atoms we care about. It gets expanded twice. */ +/** \cond atom_items */ +/* A macro defining the atoms we care about. It gets expanded twice. */ #define ATOM_ITEMS \ ATOM_ITEM(MOOV, 'm', 'o', 'o', 'v') /* movie (top-level container) */ \ ATOM_ITEM(TRAK, 't', 'r', 'a', 'k') /* container for a single track */ \ @@ -155,6 +156,8 @@ static int read_int16(struct mp4 *f, uint16_t *result) ATOM_ITEM(META, 'm', 'e', 't', 'a') /* iTunes Metadata box */ \ ATOM_ITEM(DATA, 'd', 'a', 't', 'a') /* iTunes Metadata data box */ \ +/** \endcond atom_items */ + /** For the C enumeration we concatenate ATOM_ with the first argument. */ #define ATOM_ITEM(_name, a, b, c, d) ATOM_ ## _name, /** The enumeration of interesting atoms. */ -- 2.39.2 From ad6236b4c0249c7800bc1601d1e36e8995042054 Mon Sep 17 00:00:00 2001 From: Andre Noll Date: Mon, 29 Apr 2024 00:52:21 +0200 Subject: [PATCH 15/16] Change color of signature and tar icons. These icons are currently black, which looks nice on the white background of the releases page. However, all other pages use a black background, and it would be nice to extend this to the releases page page as well (by teaching it to honor our para.css file). As a first step, switch to grey icon colors as these look nice on both a black and a white background. --- web/images/signature.png | Bin 10210 -> 6577 bytes web/images/tar-icon.png | Bin 1620 -> 545 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/web/images/signature.png b/web/images/signature.png index 9524182c292882b12c3efceccfc2a8e57da7a610..c52fd4a2fa2d580b46e7a4dad1d989509604b6c1 100644 GIT binary patch literal 6577 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 D#zpXr delta 1597 zcmZwHZ9EeQ9Ki9-tUNBItUIN;E0o0CFjMo8iLyE;&zjOaPdK9`v+}e)ZKiURhk2Z* zEs-!~jEY@Y$n#LMm9a&0B2FKjyLxl?xflP>_r?G7d-H$sFIFDZxOIs9g_6<30{{T3 zQBK}58#?_njxWMd0021K*}?8CQ8+i@i{CZ0o4?Q-KjNI92dk3U-T={K9;Rx)(rIwo zzND(cEn*$rn^GBK#AI!8EzD)He6lENStYIYn%5~Ot5dX~Rom>*YI{R=*sA#00;x=8 z?Y#oQB_Fo{^3`J`1!1h=@(4Xxzrb4%=^q!j9{h6k&9ya!}3r!Hgha zXFxweBmfK#i`EfAPxEmJwSo7(E~ROS}**- zAj&kfsjT*TaR;vdqqrlWA1)Diecbv^O$7FZPZDXX#ULstM7SVpXjiWd`E$V`2Tu+L znml#U*CkT*^y`v1zrTo!Q|JWtAD$8bP`ElJL=75RcZ$J9esm8jdt81@eCR3*kT;L7 z07Y^t!0Hpzg^es(NZWeQwb?d#ZD4=s=J!jvUxsaRsvAB1+1qs)VPJ02LRA@D$~(qn zdr#%EW_07F>OLpA`F-F1gM;nC!o^GrHV18=3qrzD3o3+k;&1f%3kfjVrNb7LbEOV^Jp7xaaXBGKaio?%Z{_ zsAa18q~WN%TZCR~xbU?3d_#C!N*vgiU}Y{nhJXfLz0>9B% zAk*XP^#hVoF1i*)xKd24A_zY3Oq%y>gXEP;&e5VH*_t~Slgy69x)00*Gd6YOX$4Ci zZMtpwlX!1sbbPjq8f;}E2Pf&^{%o(TiMt^2_ILePbv#z-6*R|Q)R=HBA+7Fp+;{~0 zGiY@E=}A8l80s${ Date: Tue, 7 May 2024 20:43:15 +0200 Subject: [PATCH 16/16] web: Generate left- and right-justified text. Larger pages such as the manual page look much nicer after this patch. --- web/para.css | 2 ++ 1 file changed, 2 insertions(+) diff --git a/web/para.css b/web/para.css index 2043fbb7..3a928c05 100644 --- a/web/para.css +++ b/web/para.css @@ -2,6 +2,8 @@ body { font-family: sans-serif; background-color: black; color: #bbbbbb; + text-align: justify; + padding: 0px 40px 40px 40px; margin: 20px; } -- 2.39.2