Hi Karl,

Karl Berry <k...@freefriends.org> writes:

> Hi Collin, Dmitry, and all,
>
>     The first patch removes a K&R declaration which are removed by C23, and
>     likely to be removed by compilers in the future. I assume all compilers
>     support ANSI C declarations nowadays.
>     ...
>          mips:*:*:UMIPS | mips:*:*:RISCos)
>
> But the question is not what compilers support "nowadays", but what the
> compiler on the system in your patch supports. Which is ancient
> MIPS. And as far as Wikipedia knows, MIPS/UMIPS and MIPS/RISCos have
> been discontinued for a long, long time.  I suspect that some versions
> of their compiler don't support ANSI C declaration. In any case, I see
> no advantage to taking out the K&R declaration.

Ah, right, you are correct. It is 4.3BSD or Unix System V apparently
[1].

Thanks for correcting me, I have gotten used to deleting K&R
declarations out of instinct...

Therefore, ignore the first patch. The second is unrelated though, so
that is fine.

> It's the same reason why config.* should not be updated to use shell
> features that almost(*) every shell "nowadays" supports, like
> $(...). The scripts have to run on systems that definitely don't support
> that. Maybe in 50 years all those systems will be gone, though I
> wouldn't count on it.  (Not that it'll matter to me one way or
> another. :)
> [...]
> (*) Last I checked, $(...) and other POSIX shell features are not
> supported by Solaris 10 /bin/sh, which is still widely, widely, used,
> and will continue to be for the foreseeable future.

Yep, Bruno tested shell portability a while ago [2]. Copying the results
from his tests:

    ====================== Results ======================
    1 - accepted by configure (generated by autoconf 2.72)
    2 - $(...) syntax for command substitution
    3 - ${var#...} syntax for removing a prefix
    4 - ${var%...} syntax for removing a suffix
    5 - printf builtin supports octal escapes correctly
    6 - local variables with non-surprising semantics
    7 - sane tracing (set -x)
    8 - locally bound shell options
    9 - append operator
    10 - associative arrays
    
                        1 2 3 4 5 6 7 8 9 10
    bash 1.14.7         Y Y Y Y Y Y Y - - -
    bash 2.05b          Y Y Y Y Y Y Y - - -
    bash 3.2.57         Y Y Y Y Y Y Y - Y -
    bash 4.4.18         Y Y Y Y Y Y Y Y Y Y
    bash 5.2.21         Y Y Y Y Y Y Y Y Y Y
    dash 0.5.11         Y Y Y Y Y Y Y Y - -
    zsh 5.8.11          Y Y Y Y Y Y Y Y Y Y
    busybox sh          Y Y Y Y Y Y Y Y - -
    macOS 10.5 sh       Y Y Y Y Y Y Y - Y -
    macOS 12 sh         Y Y Y Y Y Y Y - Y -
    FreeBSD 5.2.1 sh    Y Y Y Y Y - Y Y - -
    FreeBSD 14.0 sh     Y Y Y Y Y Y Y Y - -
    NetBSD 10.0 sh      Y Y Y Y Y - Y Y - -
    OpenBSD 7.5 sh      Y Y Y Y Y Y - Y - -
    AIX 7.1 sh          Y Y Y Y ? Y - Y - -
    Solaris 10 sh       - - - - Y - - - - -
    Solaris 11 sh       Y Y Y Y Y - - - Y -

Therefore, if one wants to test their shell script is portable they
should test it with Solaris 10 /bin/sh.

I already complained about that platform when you made changes to
mdate-sh, so I will not do it more here. :)

Collin

[1] https://umips.net/riscos/
[2] 
https://cgit.git.savannah.gnu.org/cgit/gnulib/maint-tools.git/tree/test-programs/sh-features

Reply via email to