[Info-vax] Local Versus Global Command Options
Mark Berryman
mark at theberrymans.com
Sun Feb 16 17:52:23 EST 2025
On 2/15/25 2:32 PM, Lawrence D'Oliveiro wrote:
> On Sat, 15 Feb 2025 12:22:59 -0700, Mark Berryman wrote:
>
>> So, IMHO, DCL is superior in this regard.
>
> Unfortunately, no. The fundamental problem with DEC OSes (and this
> includes Windows) is that the command line is passed to the program as a
> single string buffer. On *nix systems, it is passed as an array of
> strings.
On *nix systems, the shell parses the command line into an array of
strings using unquoted spaces as the separator which is then passed to
the created process.
On VMS, the crtl does the same parsing which means the program still
sees an array of strings the same as on a *nix system.
If I choose to use DCL, DCL does all of the parsing for me and the
nature of the command-line is irrelevant.
>
> You should be familiar with the well-known problem of one program invoking
> another with a command that might include characters with special meanings
> to a shell. On a *nix system, there is a simple way to avoid those special
> meanings: the first program invokes the second program directly, without
> going through a shell.
>
> Nowadays, there is even a simple library call to do this
> <https://manpages.debian.org/posix_spawn(3)>.
>
> This is not so easy to do with a DEC-style command line.
Incorrect. Programs on DEC OSes can invoke other programs directly and
have been able to at least since the days of the PDP-11 (which somewhat
predates the advent of posix_spawn). The nature of the command-line is
completely up to the program depending on what function is used to call
the new program.
Mark Berryman
More information about the Info-vax
mailing list