> On January 26, 2016 at 2:30 PM Rainer Weikusat
> <rainerweiku...@virginmedia.com> wrote:
> 
> Peter Olson <pe...@peabo.com> writes:
> >> On January 25, 2016 at 5:54 PM Rainer Weikusat
> >> <rainerweiku...@virginmedia.com> wrote:
> >
> >  [...]
> >
> >> A related but IMHO more interesting set of questions could be:
>
> [..]
>
> > It must be trivial crap because nobody ever made a programming error parsing
> > path names when they rolled their own routines for it.
> 
> It's trivial because its about 3 or 4 lines of code, at least for a
> reasonable implementation. That's a property of the code and not one of
> hypothetical people who could be writing code. Eg, in order to write
> code, one has to learn to write first and this is anything but trivial
> as it needs years of practice.
> 
> > Also: Windows and Mac path names follow different rules.
> 
> The (fairly recently introduced) BSD basename library function (whose
> semantics
>  are quite different
> from the semantics of the one I posted)
> doesn't deal with anything but UNIX(*) pathnames.

How quite different?

I just looked at Windows implementation of basename and note that it avoids the
".ext" of the file.  Thanks, Windows :-)

> Programs I write as part of my slowly growing set of "tools usable for
> starting/ manageing processes" certainly don't have to deal with
> "Windows and Mac path names", either.

I try to avoid non-UNIX(*) environments as well, but if I am serious about free
software I should take portability into account where I can.

> > Use the libraries.
> 
> "Use libraries insofar you consider them useful." And a library
> implementation of 'basename' is not something I'd consider useful,
> especially when using it portably would require more code than not using
> it (the string would need to be copied, including handling errors in
> that, and the result would need to be copied, including handling errors
> in that, and all the weird special cases someone considered sensible
> would need to be dealt with one by one in order to achieve what I wanted
> to achieve and even then, there'd be differences).

This patch illustrates the rathole of compatibility across OS implementations:

https://lists.gnu.org/archive/html/guile-devel/2014-07/msg00012.html

> it (the string would need to be copied, including handling errors in

Living on the edge?  Most parsing of path names occurs at main(), but I hope you
won't run out of memory in the middle of a long job.  After all, alloca always
works :-;

Peter Olson
_______________________________________________
Dng mailing list
Dng@lists.dyne.org
https://mailinglists.dyne.org/cgi-bin/mailman/listinfo/dng

Reply via email to