Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
* [PATCH 0/2] shell fixes for gcore, gdb-add-index
@ 2025-03-28 18:58 Sam James
  2025-03-28 18:58 ` [PATCH 1/2] gcore: improve shell use Sam James
  2025-03-28 18:58 ` [PATCH 2/2] gdb-add-index: fix shellcheck warnings Sam James
  0 siblings, 2 replies; 13+ messages in thread
From: Sam James @ 2025-03-28 18:58 UTC (permalink / raw)
  To: gdb-patches; +Cc: Simon Marchi, Sam James

As suggested by Simon Marchi <simark@simark.ca>.

Sam James (2):
  gcore: improve shell use
  gdb-add-index: fix shellcheck warnings

 gdb/contrib/gdb-add-index.sh |  7 +++----
 gdb/gcore-1.in               | 22 +++++++++++-----------
 2 files changed, 14 insertions(+), 15 deletions(-)

-- 
2.49.0


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [PATCH 1/2] gcore: improve shell use
  2025-03-28 18:58 [PATCH 0/2] shell fixes for gcore, gdb-add-index Sam James
@ 2025-03-28 18:58 ` Sam James
  2025-03-29 23:42   ` Keith Seitz
  2025-04-01 13:39   ` Tom Tromey
  2025-03-28 18:58 ` [PATCH 2/2] gdb-add-index: fix shellcheck warnings Sam James
  1 sibling, 2 replies; 13+ messages in thread
From: Sam James @ 2025-03-28 18:58 UTC (permalink / raw)
  To: gdb-patches; +Cc: Simon Marchi, Sam James

* Use bash tests, i.e. '[[' and ']]', instead of POSIX '[' and ']' or
  'test' which have their own pitfalls, given gcore has a bash shebang already.

* Use $() subshell syntax rather than `backticks`.
---
 gdb/gcore-1.in | 22 +++++++++++-----------
 1 file changed, 11 insertions(+), 11 deletions(-)

diff --git a/gdb/gcore-1.in b/gdb/gcore-1.in
index c0979a51db3..edd807b86dc 100644
--- a/gdb/gcore-1.in
+++ b/gdb/gcore-1.in
@@ -1,6 +1,6 @@
 #!/usr/bin/env bash
 
-#   Copyright (C) 2003-2024 Free Software Foundation, Inc.
+#   Copyright (C) 2003-2025 Free Software Foundation, Inc.
 
 # 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
@@ -64,7 +64,7 @@ function print_version() {
 }
 
 while getopts vhao:d:-: OPT; do
-    if [ "$OPT" = "-" ]; then
+    if [[ "$OPT" = "-" ]]; then
 	OPT="${OPTARG%%=*}"
 	OPTARG="${OPTARG#'$OPT'}"
 	OPTARG="${OPTARG#=}"
@@ -111,7 +111,7 @@ done
 
 shift $((OPTIND-1))
 
-if [ "$#" -eq "0" ]
+if [[ "$#" -eq "0" ]]
 then
     print_usage 1>&2
     exit 1
@@ -119,19 +119,19 @@ fi
 
 # Attempt to fetch the absolute path to the gcore script that was
 # called.
-binary_path=`dirname "$0"`
+binary_path=$(dirname "$0")
 
-if test "x$binary_path" = x. ; then
+if [[ $binary_path == x. ]] ; then
   # We got "." back as a path.  This means the user executed
   # the gcore script locally (i.e. ./gcore) or called the
   # script via a shell interpreter (i.e. sh gcore).
-  binary_basename=`basename "$0"`
+  binary_basename=$(basename "$0")
 
   # If the gcore script was called like "sh gcore" and the script
   # lives in the current directory, "which" will not give us "gcore".
   # So first we check if the script is in the current directory
   # before using the output of "which".
-  if test -f "$binary_basename" ; then
+  if [[ -f "$binary_basename" ]]; then
     # We have a local gcore script in ".".  This covers the case of
     # doing "./gcore" or "sh gcore".
     binary_path="."
@@ -139,14 +139,14 @@ if test "x$binary_path" = x. ; then
     # The gcore script was not found in ".", which means the script
     # was called from somewhere else in $PATH by "sh gcore".
     # Extract the correct path now.
-    binary_path_from_env=`which "$0"`
-    binary_path=`dirname "$binary_path_from_env"`
+    binary_path_from_env=$(which "$0")
+    binary_path=$(dirname "$binary_path_from_env")
   fi
 fi
 
 # Check if the GDB binary is in the expected path.  If not, just
 # quit with a message.
-if [ ! -f "$binary_path/@GDB_TRANSFORM_NAME@" ]; then
+if [[ ! -f "$binary_path/@GDB_TRANSFORM_NAME@" ]]; then
   echo "gcore: GDB binary (${binary_path}/@GDB_TRANSFORM_NAME@) not found"
   exit 1
 fi
@@ -166,7 +166,7 @@ do
 	    "${dump_all_cmds[@]}" \
 	    -ex "attach $pid" -ex "gcore $prefix.$pid" -ex detach -ex quit
 
-	if [ -r "$prefix.$pid" ] ; then
+	if [[ -r "$prefix.$pid" ]] ; then
 	    rc=0
 	else
 	    echo "@GCORE_TRANSFORM_NAME@: failed to create $prefix.$pid"
-- 
2.49.0


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [PATCH 2/2] gdb-add-index: fix shellcheck warnings
  2025-03-28 18:58 [PATCH 0/2] shell fixes for gcore, gdb-add-index Sam James
  2025-03-28 18:58 ` [PATCH 1/2] gcore: improve shell use Sam James
@ 2025-03-28 18:58 ` Sam James
  2025-03-29 23:42   ` Keith Seitz
  1 sibling, 1 reply; 13+ messages in thread
From: Sam James @ 2025-03-28 18:58 UTC (permalink / raw)
  To: gdb-patches; +Cc: Simon Marchi, Sam James

* Drop useless echo
* Add missing quoting to rm argument (and use -- to delimit options)
* Fix quoting w/ trap to avoid expanding $tmp_files immediately
---
 gdb/contrib/gdb-add-index.sh | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/gdb/contrib/gdb-add-index.sh b/gdb/contrib/gdb-add-index.sh
index b299f830373..f727d28aac7 100755
--- a/gdb/contrib/gdb-add-index.sh
+++ b/gdb/contrib/gdb-add-index.sh
@@ -2,7 +2,7 @@
 
 # Add a .gdb_index section to a file.
 
-# Copyright (C) 2010-2024 Free Software Foundation, Inc.
+# Copyright (C) 2010-2025 Free Software Foundation, Inc.
 # 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
@@ -136,7 +136,6 @@ if $READELF -S "$file" | grep -q " \.gnu_debugaltlink "; then
 		   | grep -A1  "'\.gnu_debugaltlink':" \
 		   | tail -n +2 \
 		   | sed 's/.*]//')
-    dwz_file=$(echo $dwz_file)
     if $READELF -S "$dwz_file" | grep -E -q " \.(gdb_index|debug_names) "; then
 	# Already has an index, skip it.
 	dwz_file=""
@@ -163,10 +162,10 @@ for f in "$file" "$dwz_file"; do
     tmp_files="$tmp_files $index4 $index5 $debugstr $debugstrmerge $debugstrerr"
 done
 
-rm -f $tmp_files
+rm -f -- "$tmp_files"
 
 # Ensure intermediate index file is removed when we exit.
-trap "rm -f $tmp_files" 0
+trap 'rm -f $tmp_files' 0
 
 $GDB --batch -nx -iex 'set auto-load no' \
     -iex 'set debuginfod enabled off' \
-- 
2.49.0


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 1/2] gcore: improve shell use
  2025-03-28 18:58 ` [PATCH 1/2] gcore: improve shell use Sam James
@ 2025-03-29 23:42   ` Keith Seitz
  2025-03-31 18:26     ` Simon Marchi
  2025-04-01 13:39   ` Tom Tromey
  1 sibling, 1 reply; 13+ messages in thread
From: Keith Seitz @ 2025-03-29 23:42 UTC (permalink / raw)
  To: Sam James, gdb-patches

Hi,

On 3/28/25 11:58 AM, Sam James wrote:
> * Use bash tests, i.e. '[[' and ']]', instead of POSIX '[' and ']' or
>    'test' which have their own pitfalls, given gcore has a bash shebang already.
> 
> * Use $() subshell syntax rather than `backticks`.

Nice. I didn't actually know that '[['/']]' was preferred. I'll have
to remember that.

> ---
>   gdb/gcore-1.in | 22 +++++++++++-----------
>   1 file changed, 11 insertions(+), 11 deletions(-)
> 
> diff --git a/gdb/gcore-1.in b/gdb/gcore-1.in
> index c0979a51db3..edd807b86dc 100644
> --- a/gdb/gcore-1.in
> +++ b/gdb/gcore-1.in
> @@ -139,14 +139,14 @@ if test "x$binary_path" = x. ; then
>       # The gcore script was not found in ".", which means the script
>       # was called from somewhere else in $PATH by "sh gcore".
>       # Extract the correct path now.
> -    binary_path_from_env=`which "$0"`
> -    binary_path=`dirname "$binary_path_from_env"`
> +    binary_path_from_env=$(which "$0")
> +    binary_path=$(dirname "$binary_path_from_env")

This uses 'which', and we've (downstream distros) run into issues
with this and package dependencies. Since this strictly bash,
can we use "command -v" here instead?

Thank you for doing this.

Reviewed-By: Keith Seitz <keiths@redhat.com>

Keith

>     fi
>   fi
>   
>   # Check if the GDB binary is in the expected path.  If not, just
>   # quit with a message.
> -if [ ! -f "$binary_path/@GDB_TRANSFORM_NAME@" ]; then
> +if [[ ! -f "$binary_path/@GDB_TRANSFORM_NAME@" ]]; then
>     echo "gcore: GDB binary (${binary_path}/@GDB_TRANSFORM_NAME@) not found"
>     exit 1
>   fi


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 2/2] gdb-add-index: fix shellcheck warnings
  2025-03-28 18:58 ` [PATCH 2/2] gdb-add-index: fix shellcheck warnings Sam James
@ 2025-03-29 23:42   ` Keith Seitz
  2025-03-31 18:30     ` Simon Marchi
  0 siblings, 1 reply; 13+ messages in thread
From: Keith Seitz @ 2025-03-29 23:42 UTC (permalink / raw)
  To: Sam James, gdb-patches

Hi,

On 3/28/25 11:58 AM, Sam James wrote:
> * Drop useless echo
> * Add missing quoting to rm argument (and use -- to delimit options)
> * Fix quoting w/ trap to avoid expanding $tmp_files immediately

Again, thank you for doing this.

> ---
>   gdb/contrib/gdb-add-index.sh | 7 +++----
>   1 file changed, 3 insertions(+), 4 deletions(-)
> 
> diff --git a/gdb/contrib/gdb-add-index.sh b/gdb/contrib/gdb-add-index.sh
> index b299f830373..f727d28aac7 100755
> --- a/gdb/contrib/gdb-add-index.sh
> +++ b/gdb/contrib/gdb-add-index.sh
> @@ -163,10 +162,10 @@ for f in "$file" "$dwz_file"; do
>       tmp_files="$tmp_files $index4 $index5 $debugstr $debugstrmerge $debugstrerr"
>   done
>   
> -rm -f $tmp_files
> +rm -f -- "$tmp_files"

By preventing expansion, wouldn't this be attempting to
erase a single file whose name is a concatenation of all the
temporary files?

That is,
$ touch a b c
$ tmp="a b c"
$ rm -- "$tmp"
rm: cannot remove 'a b c': No such file or directory

Keith


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 1/2] gcore: improve shell use
  2025-03-29 23:42   ` Keith Seitz
@ 2025-03-31 18:26     ` Simon Marchi
  2025-03-31 18:44       ` Andreas Schwab
  0 siblings, 1 reply; 13+ messages in thread
From: Simon Marchi @ 2025-03-31 18:26 UTC (permalink / raw)
  To: Keith Seitz, Sam James, gdb-patches

On 3/29/25 7:42 PM, Keith Seitz wrote:
> Hi,
> 
> On 3/28/25 11:58 AM, Sam James wrote:
>> * Use bash tests, i.e. '[[' and ']]', instead of POSIX '[' and ']' or
>>    'test' which have their own pitfalls, given gcore has a bash shebang already.
>>
>> * Use $() subshell syntax rather than `backticks`.
> 
> Nice. I didn't actually know that '[['/']]' was preferred. I'll have
> to remember that.
> 
>> ---
>>   gdb/gcore-1.in | 22 +++++++++++-----------
>>   1 file changed, 11 insertions(+), 11 deletions(-)
>>
>> diff --git a/gdb/gcore-1.in b/gdb/gcore-1.in
>> index c0979a51db3..edd807b86dc 100644
>> --- a/gdb/gcore-1.in
>> +++ b/gdb/gcore-1.in
>> @@ -139,14 +139,14 @@ if test "x$binary_path" = x. ; then
>>       # The gcore script was not found in ".", which means the script
>>       # was called from somewhere else in $PATH by "sh gcore".
>>       # Extract the correct path now.
>> -    binary_path_from_env=`which "$0"`
>> -    binary_path=`dirname "$binary_path_from_env"`
>> +    binary_path_from_env=$(which "$0")
>> +    binary_path=$(dirname "$binary_path_from_env")
> 
> This uses 'which', and we've (downstream distros) run into issues
> with this and package dependencies. Since this strictly bash,
> can we use "command -v" here instead?

Can you clarify what kind of issues?  Do you mean that `which` may not
be available?

shellcheck points out this:

In gcore line 69:
        OPTARG="${OPTARG#'$OPT'}"
                         ^----^ SC2016 (info): Expressions don't expand in single quotes, use double quotes for that.

I actually can't figure out what this "if" does:

    if [[ "$OPT" = "-" ]]; then
	OPT="${OPTARG%%=*}"
	OPTARG="${OPTARG#'$OPT'}"
	OPTARG="${OPTARG#=}"
    fi

Any idea?

Simon

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 2/2] gdb-add-index: fix shellcheck warnings
  2025-03-29 23:42   ` Keith Seitz
@ 2025-03-31 18:30     ` Simon Marchi
  0 siblings, 0 replies; 13+ messages in thread
From: Simon Marchi @ 2025-03-31 18:30 UTC (permalink / raw)
  To: Keith Seitz, Sam James, gdb-patches

On 3/29/25 7:42 PM, Keith Seitz wrote:
> Hi,
> 
> On 3/28/25 11:58 AM, Sam James wrote:
>> * Drop useless echo
>> * Add missing quoting to rm argument (and use -- to delimit options)
>> * Fix quoting w/ trap to avoid expanding $tmp_files immediately
> 
> Again, thank you for doing this.
> 
>> ---
>>   gdb/contrib/gdb-add-index.sh | 7 +++----
>>   1 file changed, 3 insertions(+), 4 deletions(-)
>>
>> diff --git a/gdb/contrib/gdb-add-index.sh b/gdb/contrib/gdb-add-index.sh
>> index b299f830373..f727d28aac7 100755
>> --- a/gdb/contrib/gdb-add-index.sh
>> +++ b/gdb/contrib/gdb-add-index.sh
>> @@ -163,10 +162,10 @@ for f in "$file" "$dwz_file"; do
>>       tmp_files="$tmp_files $index4 $index5 $debugstr $debugstrmerge $debugstrerr"
>>   done
>>   -rm -f $tmp_files
>> +rm -f -- "$tmp_files"
> 
> By preventing expansion, wouldn't this be attempting to
> erase a single file whose name is a concatenation of all the
> temporary files?
> 
> That is,
> $ touch a b c
> $ tmp="a b c"
> $ rm -- "$tmp"
> rm: cannot remove 'a b c': No such file or directory
> 
> Keith
> 

Indeed, this looks wrong.  But not quoting it is also a problem if there
are spaces in the paths.  I think a sane way to handle this would be to
require bash and use arrays [1].

Simon

[1] https://www.gnu.org/software/bash/manual/html_node/Arrays.html

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 1/2] gcore: improve shell use
  2025-03-31 18:26     ` Simon Marchi
@ 2025-03-31 18:44       ` Andreas Schwab
  2025-03-31 18:54         ` Simon Marchi
  0 siblings, 1 reply; 13+ messages in thread
From: Andreas Schwab @ 2025-03-31 18:44 UTC (permalink / raw)
  To: Simon Marchi; +Cc: Keith Seitz, Sam James, gdb-patches

On Mär 31 2025, Simon Marchi wrote:

> I actually can't figure out what this "if" does:
>
>     if [[ "$OPT" = "-" ]]; then
> 	OPT="${OPTARG%%=*}"
> 	OPTARG="${OPTARG#'$OPT'}"
> 	OPTARG="${OPTARG#=}"
>     fi
>
> Any idea?

I think this is supposed to handle the long options --help and
--version.

-- 
Andreas Schwab, schwab@linux-m68k.org
GPG Key fingerprint = 7578 EB47 D4E5 4D69 2510  2552 DF73 E780 A9DA AEC1
"And now for something completely different."

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 1/2] gcore: improve shell use
  2025-03-31 18:44       ` Andreas Schwab
@ 2025-03-31 18:54         ` Simon Marchi
  2025-04-02 16:08           ` Keith Seitz
  0 siblings, 1 reply; 13+ messages in thread
From: Simon Marchi @ 2025-03-31 18:54 UTC (permalink / raw)
  To: Andreas Schwab; +Cc: Keith Seitz, Sam James, gdb-patches

On 3/31/25 2:44 PM, Andreas Schwab wrote:
> On Mär 31 2025, Simon Marchi wrote:
> 
>> I actually can't figure out what this "if" does:
>>
>>     if [[ "$OPT" = "-" ]]; then
>> 	OPT="${OPTARG%%=*}"
>> 	OPTARG="${OPTARG#'$OPT'}"
>> 	OPTARG="${OPTARG#=}"
>>     fi
>>
>> Any idea?
> 
> I think this is supposed to handle the long options --help and
> --version.

Oh, right, looks like a nice hack to support long options, which getopts
doesn't appear to support officially.

I think that indeed the line doesn't work as intended then.  I hacked
gcore to print OPT and OPTARG.  I get:

    $ ./gcore --version
    OPT: version
    OPTARG: version

OPTARG should be empty here.  If I change

    OPTARG="${OPTARG#'$OPT'}"

to

    OPTARG="${OPTARG#"$OPT"}"

then I get:

    $ ./gcore --version
    OPT: version                                                                                             │
    OPTARG:

There is not long option that uses OPTARG, so this bug has no impact,
but we might as well fix it in this patch.

Simon

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 1/2] gcore: improve shell use
  2025-03-28 18:58 ` [PATCH 1/2] gcore: improve shell use Sam James
  2025-03-29 23:42   ` Keith Seitz
@ 2025-04-01 13:39   ` Tom Tromey
  2025-04-02 16:15     ` Simon Marchi
  1 sibling, 1 reply; 13+ messages in thread
From: Tom Tromey @ 2025-04-01 13:39 UTC (permalink / raw)
  To: Sam James; +Cc: gdb-patches, Simon Marchi

>>>>> "Sam" == Sam James <sam@gentoo.org> writes:

Sam> * Use bash tests, i.e. '[[' and ']]', instead of POSIX '[' and ']' or
Sam>   'test' which have their own pitfalls, given gcore has a bash shebang already.

Do we want this to require bash or should it instead just use sh?

Tom

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 1/2] gcore: improve shell use
  2025-03-31 18:54         ` Simon Marchi
@ 2025-04-02 16:08           ` Keith Seitz
  0 siblings, 0 replies; 13+ messages in thread
From: Keith Seitz @ 2025-04-02 16:08 UTC (permalink / raw)
  To: Simon Marchi; +Cc: gdb-patches

On 3/31/25 11:54 AM, Simon Marchi wrote:
> I think that indeed the line doesn't work as intended then.  I hacked
> gcore to print OPT and OPTARG.  I get:
> 
>      $ ./gcore --version
>      OPT: version
>      OPTARG: version
> 
> OPTARG should be empty here.  If I change
> 
>      OPTARG="${OPTARG#'$OPT'}"
> 
> to
> 
>      OPTARG="${OPTARG#"$OPT"}"
> 
> then I get:
> 
>      $ ./gcore --version
>      OPT: version                                                                                             │
>      OPTARG:
> 
> There is not long option that uses OPTARG, so this bug has no impact,
> but we might as well fix it in this patch.

Yes, I agree. My darn fingers still get confused between python quoting
and shell quoting.

Thank you for pursuing this,
Keith


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 1/2] gcore: improve shell use
  2025-04-01 13:39   ` Tom Tromey
@ 2025-04-02 16:15     ` Simon Marchi
  2025-04-02 20:31       ` Tom Tromey
  0 siblings, 1 reply; 13+ messages in thread
From: Simon Marchi @ 2025-04-02 16:15 UTC (permalink / raw)
  To: Tom Tromey, Sam James; +Cc: gdb-patches

On 4/1/25 9:39 AM, Tom Tromey wrote:
>>>>>> "Sam" == Sam James <sam@gentoo.org> writes:
> 
> Sam> * Use bash tests, i.e. '[[' and ']]', instead of POSIX '[' and ']' or
> Sam>   'test' which have their own pitfalls, given gcore has a bash shebang already.
> 
> Do we want this to require bash or should it instead just use sh?
> 
> Tom

gcore already requires bash as we speak, which IMO is reasonable.

Simon

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 1/2] gcore: improve shell use
  2025-04-02 16:15     ` Simon Marchi
@ 2025-04-02 20:31       ` Tom Tromey
  0 siblings, 0 replies; 13+ messages in thread
From: Tom Tromey @ 2025-04-02 20:31 UTC (permalink / raw)
  To: Simon Marchi; +Cc: Tom Tromey, Sam James, gdb-patches

>>>>> "Simon" == Simon Marchi <simark@simark.ca> writes:

Simon> On 4/1/25 9:39 AM, Tom Tromey wrote:
>>>>>>> "Sam" == Sam James <sam@gentoo.org> writes:
>> 
Sam> * Use bash tests, i.e. '[[' and ']]', instead of POSIX '[' and ']' or
Sam> 'test' which have their own pitfalls, given gcore has a bash shebang already.
>> 
>> Do we want this to require bash or should it instead just use sh?

Simon> gcore already requires bash as we speak, which IMO is reasonable.

I understand that it requires it presently.  I'm asking whether the
script should require bash.

I tend to think requiring bash is an artifact of its history, coming
from a Linux vendor.  But perhaps bash isn't really required and we
could make it portable.

thanks,
Tom

^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2025-04-02 20:31 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-03-28 18:58 [PATCH 0/2] shell fixes for gcore, gdb-add-index Sam James
2025-03-28 18:58 ` [PATCH 1/2] gcore: improve shell use Sam James
2025-03-29 23:42   ` Keith Seitz
2025-03-31 18:26     ` Simon Marchi
2025-03-31 18:44       ` Andreas Schwab
2025-03-31 18:54         ` Simon Marchi
2025-04-02 16:08           ` Keith Seitz
2025-04-01 13:39   ` Tom Tromey
2025-04-02 16:15     ` Simon Marchi
2025-04-02 20:31       ` Tom Tromey
2025-03-28 18:58 ` [PATCH 2/2] gdb-add-index: fix shellcheck warnings Sam James
2025-03-29 23:42   ` Keith Seitz
2025-03-31 18:30     ` Simon Marchi

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox