[Info-vax] Local Versus Global Command Options
bill
bill.gunshannon at gmail.com
Mon Feb 17 16:09:40 EST 2025
On 2/17/2025 2:02 PM, Mark Berryman wrote:
> On 2/16/25 5:43 PM, Lawrence D'Oliveiro wrote:
>> On Sun, 16 Feb 2025 15:52:23 -0700, Mark Berryman wrote:
>>
>>> 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.
>>
>> If you don’t go through a shell, then you pass an array of already-
>> separated words and you don’t have to worry about shell specials.
>>
>>> 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.
>>
>> Consider what happens: if you pass unquoted text to program X, DCL
>> converts it to uppercase, and I think also normalizes multiple spaces
>> to a
>> single space. If you don’t want the text to be uppercased or space-
>> normalized, you put it in pairs of double quotes. But then these double
>> quotes also get passed as part of the command line. So the receiving
>> program has to do some non-trivial parsing just to get simple literal
>> text
>> via the command line.
>
> So, so, so very wrong. You are *way* behind the times.
>
> I *never* have to quote arguments when using programs that still use
> *nix syntax on VMS. My arguments' case is never changed.
>
> Here is the entry point to any C program on VMS:
>
> int main (int argc, char *argv[], char *envp[]);
>
> See? Argument passing works the same on VMS as it does on *nix, as
> described above.
>
> Let's see, what's a good example? Ah, here's one:
>
> $ gs -q -P- -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sstdout=%stderr
> -sOutputFile=<something>.pdf <something>.ps
>
> Again, see? No quoting. No case conversion. Ghostscript sees the
> command exactly as I typed it and I typed it exactly as I would on a
> *nix system.
>
>>
>> So now, how do you invoke program X directly from your own program Y,
>> without going through DCL? For consistency, you have to mimic all the
>> same
>> misbehaviour of DCL to get the command line in the right format. If you
>> don’t want to do that, then you need some option to tell program X to
>> bypass all that special processing, and just accept the command line as
>> is. So it needs to distinguish between two ways of being invoked:
>> directly
>> or via DCL!
>
> Wrong again. There are a number of ways to invoke a program without
> going through DCL. Since you seem to be a Linux fan, look up the
> various exec functions for starters. (Note, there are other ways).
>
>>
>>> If I choose to use DCL, DCL does all of the parsing for me and the
>>> nature of the command-line is irrelevant.
>>
>> If you don’t use DCL, then how do you invoke a program that expects
>> DCL to
>> parse its command line for it? What happens to all of Arne’s lovingly-
>> crafted .CLD files?
>
> You apparently know as little about VMS as you do programming in
> general. The Docs are online. Go read them. They will answer your
> questions.
>
Which is why people need to stop feeding the troll!!!!
>>
>>> Programs on DEC OSes can invoke other programs directly and
>>> have been able to at least since the days of the PDP-11 ...
>>
>> Yes, and there have been quite a few pitfalls with that, as I mentioned
>> above. Windows suffers from the same drawback, and this has even led to
>> security holes with Windows programs.
>
> Hmmm, first you tout that invoking programs directly eliminates pitfalls
> then you claim that doing so causes them. So, which is it?
>
> Mark Berryman
>
>
>
More information about the Info-vax
mailing list