Deutsch   English   Français   Italiano  
<vbcgbu$cc45$1@dont-email.me>

View for Bookmarking (what is this?)
Look up another Usenet article

Path: ...!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail
From: Lew Pitcher <lew.pitcher@digitalfreehold.ca>
Newsgroups: comp.unix.programmer
Subject: Re: Always use "--" (Was: Long filenames in DOS/Windows and
 Unix/Linux)
Date: Thu, 5 Sep 2024 14:48:31 -0000 (UTC)
Organization: A noiseless patient Spider
Lines: 63
Message-ID: <vbcgbu$cc45$1@dont-email.me>
References: <9e7a4bd1-bfbb-4df7-af1a-27ca9625e50bn@googlegroups.com>
	<yga34mfoily.fsf@akutech.de> <87ttevzoj3.fsf@nosuchdomain.example.com>
	<vb9k2l$3r705$1@dont-email.me> <vb9ls7$1igeo$1@news.xmission.com>
	<vb9mls$3rk17$1@dont-email.me> <20240904192549.23@kylheku.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Injection-Date: Thu, 05 Sep 2024 16:48:31 +0200 (CEST)
Injection-Info: dont-email.me; posting-host="c4741b9aab2f3ab481d100c5a665b386";
	logging-data="405637"; mail-complaints-to="abuse@eternal-september.org";	posting-account="U2FsdGVkX1/bHm7k2HBS3Qk6xkJn3Ry4xb7DMXTE9xA="
User-Agent: Pan/0.139 (Sexual Chocolate; GIT bf56508
 git://git.gnome.org/pan2)
Cancel-Lock: sha1:vqtTFHYcu7pUloCagVKyo6gpcc0=
Bytes: 3886

On Thu, 05 Sep 2024 02:29:49 +0000, Kaz Kylheku wrote:

> On 2024-09-04, Lew Pitcher <lew.pitcher@digitalfreehold.ca> wrote:
>> On Wed, 04 Sep 2024 13:04:07 +0000, Kenny McCormack wrote:
>>
>>> In article <vb9k2l$3r705$1@dont-email.me>,
>>> Nuno Silva  <nunojsilva@invalid.invalid> wrote:
>>> ...
>>>>> D'oh!
>>>>
>>>>(Along with these quotes, I'd add ./ before $file.)
>>> 
>>> Or, more simply, just put -- after the -p.
>>> 
>>> This is an often overlooked aspect of shell programing.  You should always
>>> use "--".  The "shellcheck" program will tell you this, if you let it.
>>
>> The "--" option is just that, an option coded into the argument parser of
>> the program being invoked. Many programs /do not/ recognize "--" as an
>> "end of flags" argument, so the effectiveness of "--" is unreliable.
>>
>> OTOH, if you specify a fully qualified pathname, (or, at least, a qualified
>> relative pathname), you can assure yourself that the file path provided
>> to the program /will not/ start with the '-' that indicates a program flag.
>>
>> Note that all this is /convention/ and not /requirement/. There are situations
>> in which /none/ of the above applies, as
>> a) the program interprets it's arguments by /position/, or
>> b) the program doesn't use the '-' to introduce flag arguments, or
>> c) the program doesn't take filenames as arguments, or
>> d) some other conditions that I'm too lazy to enumerate
> 
> d) it's a goddamned GNU program that continues to take options
> after non-option arguments!
> 
> $ ls . -ld
> drwxr-xr-x 67 kaz kaz 36864 Sep  3 15:59 .
> 
> ... unless -- is specified to signal the end of options.
> 
> $ ls -ld -- . -ld
> ls: cannot access '-ld': No such file or directory
> drwxr-xr-x 67 kaz kaz 36864 Sep  3 15:59 .
> 
> So unfortunately although starting an argument with ./ will
> ensure that it's not treated as an option, it doesn't mean
> it will be treated as the first non-option argument after
> which there are no more option arguments.

That seems to be a symptom of the use of the GNU variant of
the POSIX getopt(3) function.
  "By default, [GNU] getopt() permutes the contents of argv as it scans, so that
   eventually all the nonoptions are at the end.  Two other modes are also
   implemented.   If  the first character of optstring is '+' or the envi-
   ronment variable POSIXLY_CORRECT is set, then option  processing  stops
   as soon as a nonoption argument is encountered."

The "workaround" seems to be to set the POSIXLY_CORRECT envvar as part of
your standard environment. 

-- 
Lew Pitcher
"In Skills We Trust"