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