Deutsch   English   Français   Italiano  
<87ldqqzfj0.fsf@nosuchdomain.example.com>

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

Path: news.eternal-september.org!eternal-september.org!.POSTED!not-for-mail
From: Keith Thompson <Keith.S.Thompson+u@gmail.com>
Newsgroups: comp.lang.c
Subject: Re: encapsulating directory operations
Date: Tue, 20 May 2025 22:41:55 -0700
Organization: None to speak of
Lines: 202
Message-ID: <87ldqqzfj0.fsf@nosuchdomain.example.com>
References: <100h650$23r5l$1@dont-email.me> <20250520065158.709@kylheku.com>
	<100i2la$292le$1@dont-email.me>
	<87a5770xjw.fsf@nosuchdomain.example.com>
	<100j09o$2f04b$1@dont-email.me>
	<87tt5ezx9y.fsf@nosuchdomain.example.com>
	<100j4t3$2foah$1@dont-email.me>
MIME-Version: 1.0
Content-Type: text/plain
Injection-Date: Wed, 21 May 2025 07:42:02 +0200 (CEST)
Injection-Info: dont-email.me; posting-host="151d526d8f9bb67aa0331e0f184aea14";
	logging-data="2841629"; mail-complaints-to="abuse@eternal-september.org";	posting-account="U2FsdGVkX1/qI/rTlByVwlSZmZ3Q9kbm"
User-Agent: Gnus/5.13 (Gnus v5.13)
Cancel-Lock: sha1:sMgSxn9UoMXPnVKITOzP8mqSuFQ=
	sha1:rFYjCy4fmhnDUBhnx6/WraOF6Jo=

"Paul Edwards" <mutazilah@gmail.com> writes:
> "Keith Thompson" <Keith.S.Thompson+u@gmail.com> wrote in message
> news:87tt5ezx9y.fsf@nosuchdomain.example.com...
>> "Paul Edwards" <mutazilah@gmail.com> writes:
>> > "Keith Thompson" <Keith.S.Thompson+u@gmail.com> wrote in message
>> > news:87a5770xjw.fsf@nosuchdomain.example.com...
>> >> "Paul Edwards" <mutazilah@gmail.com> writes:
>> >> [...]
>> >> > So is it right to expect directories to be covered by C90?
>> >>
>> >> Of course not.  C90 is frozen, defined by the ISO standard published
>> >> in 1990.  It is an obvious fact, that you cannot have missed,
>> >> that the C90 standard does not support operations on directories.
>> >> (Neither does any later ISO C standard.)
>> >>
>> >> I'm guessing that you meant something by "expect" that differs from
>> >> its usual meaning.  Can you clarify?
>> >
>> > When C90 was being written - or indeed - when K&R was
>> > being written - if there hadn't been pressure to "bring to market",
>> > would you EXPECT a language standard - any language
>> > standard - but in this specific instance the ISO/IEC 9899:1990
>> > committee - to have included a standard form of directory
>> > manipulation?
>>
>> Ah, that's a very different question.  I have no answer, because
>> I don't care.  C90 is what it is.  Of course it could have been different.
>
> My question is not "could", it is "should", or "ideally".
>
>> > As far as I know, there was never any LOGICAL barrier
>> > to including basic directory manipulation in C90.
>>
>> None that I can think of.
>
> Ok, that's a great start. That answers one of my questions.
>
>> > But it could potentially be even neater if it was hidden
>> > away behind a standard fopen etc call.
>> >
>> > That's my question.
>>
>> Sure, it would be theoretically possible to treat directories as files,
>> and to make reading from a FILE* resulting from calling fopen() with a
>> directory name give you access to the directory entries.
>>
>> I don't think it would be a particularly good idea.
>
> Can you tell me why?

It artificially merges two very distinct concepts for no good
reason that I can see.  Operations that make sense for files make
far less sense for directories.  There's no shortage of interfaces
for dealing with directories (POSIX, C++, Perl, etc.), and I'm not
aware of any of them that conflate directories and files.  It's true
that "(almost) everything is a file" is part of the Unix philosophy,
and directories are typically stored as file-like objects with most
of the same attributes that files can have, but I can't think of
any good reason for higher level code to care about that.

Directory access is largely a solved problem.  If you insist on
creating yet another solution, I recommend following the existing
solutions.

....]

> You may as well throw in the entire POSIX, the entire C23,
> and the entire C++ into C90 too. There needs to be some
> philosophy to set constraints.

So invent a philosophy that meets your requirements.

....]

> C90 wasn't designed by one person. K&R C was more-or-less
> designed by one person. But I don't want a language designed
> by one person.
>
> I want a language that is accepted by a committee.
>
> Not the C99 committee. Not the C23 committee.
>
> The C90+ committee. I would probably decide who gets
> to sit on the committee though.

I would frankly be surprised if anyone other than you were willing
to be on that committee.  Remember that being a member of a language
standard committee is a lot of work, and is typically unpaid.

> Richard would probably be on the committee, as he has
> a shared goal. It's not likely that he wants to though, and
> note that the committee doesn't formally exist yet. And
> nor does it need to formally exist. It is enough to have
> a discussion in comp.lang.c and when you, Keith, give
> the go-ahead for directory manipulations to have been
> incorporated into C90 - because you can't see anything
> wrong with it - then the theoretical committee can
> continue their work on directory manipulations in C90+.

Do not mistake my idle comment for an endorsement.

>> > Plus you just said above that it would be reasonable for
>> > the POSIX directory operations to be directly incorporated
>> > into C90+'s "standard library".
>> >
>> > The C90 people didn't choose to do that.
>> >
>> > That doesn't necessarily constrain the C90+ people.
>>
>> Right.
>>
>> > But it does beg the question - would it have been
>> > ACCEPTABLE for the ANSI 89 people to have
>> > put that directory manipulation stuff into the C89
>> > standard IF they could do so quickly?
>>
>> Yes.
>>
>> > Or would that be an ABOMINATION?
>>
>> No.  (WTF??)
>
> I don't understand your question.

If you don't know what "WTF" means, I suggest a web search.  I was
expression surprise that anyone would use a loaded word like
"abomination" for something so innocuous.

[...]

> I have a series of questions that begin with:
>
> If xyz had been added to the C90 standard, would you have
> considered that to be odd/wrong? If so, why?

I'm unlikely to be interested in answering most of those questions.
I don't see how they're in any way relevent, even to what you're
working on.  I have no objection to a new language based on C90,
but agonizing about what the C90 committee should or should not
have done is IMHO a waste of time.

[...]

>> > It hasn't been addressed. Nor has fpeek() in a previous thread.
>> > Nor ESC_STR.
>>
>> I don't remember what fpeek() is supposed to be;
>
> See if a stream is known to have characters in it.

I'd need a more precise explanation.  Does it just return a
true/false value?  If so, how does it differ from feof() and/or
ferror()?  What would it do on an interactive stream?  What is the
use case?

[...]

> If fpeek had been added to the C90 standard, would you have
> considered that to be odd/wrong? If so, why? If not, what form
> should it have taken?

I have no opinion on that.

>> I think I've discussed ESC_STR with you before.
>
> But not to the point where these questions were answered:
>
> If ESC_STR had been added to the C89 standard, because
> a majority of the committee had decided they wanted to
> support basic ANSI X3.64, would you have considered that
> to be odd/wrong? If so, why? If not, do you think the define
> ESC_STR and ESC_CHAR are a bad naming convention,
> and if so, what do you think would have been better, and why?
> And what header file would you have put them in?
>
> If instead, C90 had already been published, and suddenly
> committeee members realized they had forgotten about
========== REMAINDER OF ARTICLE TRUNCATED ==========