Re: encapsulating directory operations

Liste des GroupesRevenir à cl c  
Sujet : Re: encapsulating directory operations
De : 643-408-1753 (at) *nospam* kylheku.com (Kaz Kylheku)
Groupes : comp.lang.c
Date : 21. May 2025, 20:49:16
Autres entêtes
Organisation : A noiseless patient Spider
Message-ID : <20250521123700.338@kylheku.com>
References : 1 2 3 4 5 6 7 8
User-Agent : slrn/pre1.0.4-9 (Linux)
On 2025-05-21, Keith Thompson <Keith.S.Thompson+u@gmail.com> wrote:
Kaz Kylheku <643-408-1753@kylheku.com> writes:
On 2025-05-20, Keith Thompson <Keith.S.Thompson+u@gmail.com> wrote:
"Paul Edwards" <mutazilah@gmail.com> writes:
[...]
As far as I know, there was never any LOGICAL barrier
to including basic directory manipulation in C90.
>
None that I can think of.
>
There was a significant barrier. The ANSI group which standardized
C was mainly looking at surveying and codifying existing practice.
>
Agreed.  I consider that a practical barrier, not a "LOGICAL" one.
>
The ANSI C committee *could* have added directory operations to the C
standard library.  (I'm not suggesting that they should have.)
>
[...]
>
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 implemented something like this. It is fine; I don't regret it.
>
i1> (open-directory ".")
#<dir-stream b7b90820>
2> (get-line *1)
"htrailer.txr"
3> (get-line *1)
"y.output.bison"
4> (get-line *1)
"jmp.S"
5> (open-file "/etc/hosts")
#<file-stream /etc/hosts b7b7a8b0>
6> (get-line *5)
"127.0.0.1\tlocalhost"
7> (get-line *5)
"127.0.1.1\tsun-go"
>
It looks like it treats a directory as a file containing a
sequence of *lines*, each of which is a file name.

I don't want to descend much farther into this culvert, but appearances
are deceiving. The directory stream implementation takes liberty with
interpreting thet get-line operation as if it were "get textual record"
(where regular text streams define records as newline-terminated
lines, but other streams not necessarily so).

If a filename contains newline characters, they will be correctly
returned as constituents of the string.

1> (touch "foo\nbar")
t
2> (sh "ls foo*bar")
'foo'$'\n''bar'
0
3> (find-if (op fnmatch "foo*bar") (get-lines (open-directory ".")))
"foo\nbar"

get-line is a principal stream operation, which is not understood as
simply being a loop over get-char that reads until newline or EOF.
A directory stream doesn't even support get-char:

4> (get-char (open-directory "."))
** get-char: not supported by stream #<dir-stream b7b0dd80>
** during evaluation at expr-4:1 of form (get-char (open-directory "."))

So thereby we duck out of answering the question of what character to
return for record separator. If open-directory did provide get-char, I
would lean toward making it produce the null character after each
name.

--
TXR Programming Language: http://nongnu.org/txr
Cygnal: Cygwin Native Application Library: http://kylheku.com/cygnal
Mastodon: @Kazinator@mstdn.ca

Date Sujet#  Auteur
20 May 25 * encapsulating directory operations308Paul Edwards
20 May 25 +* Re: encapsulating directory operations83Lawrence D'Oliveiro
20 May 25 i+* Re: encapsulating directory operations20Paul Edwards
21 May 25 ii`* Re: encapsulating directory operations19Lawrence D'Oliveiro
21 May 25 ii `* Re: encapsulating directory operations18Paul Edwards
21 May 25 ii  `* Re: encapsulating directory operations17Lawrence D'Oliveiro
21 May 25 ii   +* Re: encapsulating directory operations3Paul Edwards
22 May 25 ii   i`* Re: encapsulating directory operations2Lawrence D'Oliveiro
22 May 25 ii   i `- Re: encapsulating directory operations1Kaz Kylheku
22 May 25 ii   `* Re: encapsulating directory operations13James Kuyper
22 May 25 ii    `* Re: encapsulating directory operations12Lawrence D'Oliveiro
22 May 25 ii     `* Re: encapsulating directory operations11James Kuyper
22 May 25 ii      `* Re: encapsulating directory operations10Lawrence D'Oliveiro
23 May 25 ii       `* Re: encapsulating directory operations9James Kuyper
23 May 25 ii        `* Re: encapsulating directory operations8Kaz Kylheku
23 May 25 ii         +* Re: encapsulating directory operations3Paul Edwards
23 May 25 ii         i+- Re: encapsulating directory operations1Kaz Kylheku
24 May 25 ii         i`- Re: encapsulating directory operations1Lawrence D'Oliveiro
23 May 25 ii         `* Re: encapsulating directory operations4James Kuyper
23 May 25 ii          `* Re: encapsulating directory operations3Kaz Kylheku
24 May 25 ii           `* Re: encapsulating directory operations2James Kuyper
24 May 25 ii            `- Re: encapsulating directory operations1Kaz Kylheku
31 May 25 i`* Re: encapsulating directory operations62Bonita Montero
31 May 25 i `* Re: encapsulating directory operations61Lawrence D'Oliveiro
1 Jun 25 i  `* Re: encapsulating directory operations60Bonita Montero
1 Jun 25 i   `* Re: encapsulating directory operations59Lawrence D'Oliveiro
2 Jun 25 i    `* Re: encapsulating directory operations58Bonita Montero
3 Jun 25 i     +* Re: encapsulating directory operations2James Kuyper
3 Jun 25 i     i`- Re: encapsulating directory operations1Kaz Kylheku
3 Jun 25 i     +* Re: encapsulating directory operations9Lawrence D'Oliveiro
10 Jun 25 i     i`* Re: encapsulating directory operations8Bonita Montero
10 Jun 25 i     i +- Re: encapsulating directory operations1Bonita Montero
10 Jun 25 i     i +- Re: encapsulating directory operations1Kaz Kylheku
11 Jun 25 i     i `* Re: encapsulating directory operations5Lawrence D'Oliveiro
11 Jun 25 i     i  `* Re: encapsulating directory operations4Bonita Montero
11 Jun 25 i     i   +- Re: encapsulating directory operations1Lawrence D'Oliveiro
11 Jun 25 i     i   `* Re: encapsulating directory operations2Bonita Montero
12 Jun 25 i     i    `- Re: encapsulating directory operations1Lawrence D'Oliveiro
3 Jun 25 i     `* Re: encapsulating directory operations46Bonita Montero
6 Jun 25 i      `* Re: encapsulating directory operations45Bonita Montero
6 Jun 25 i       `* Re: encapsulating directory operations44Bonita Montero
6 Jun 25 i        `* Re: encapsulating directory operations43Bonita Montero
6 Jun 25 i         `* Re: encapsulating directory operations42wij
7 Jun 25 i          `* Re: encapsulating directory operations41Bonita Montero
7 Jun 25 i           `* Re: encapsulating directory operations40wij
7 Jun 25 i            `* Re: encapsulating directory operations39Bonita Montero
7 Jun 25 i             `* Re: encapsulating directory operations38wij
7 Jun 25 i              `* Re: encapsulating directory operations37Bonita Montero
7 Jun 25 i               +* Re: encapsulating directory operations22wij
7 Jun 25 i               i+- Re: encapsulating directory operations1Bonita Montero
8 Jun 25 i               i`* Re: encapsulating directory operations20Bonita Montero
8 Jun 25 i               i +* Re: encapsulating directory operations12Muttley
8 Jun 25 i               i i`* Re: encapsulating directory operations11Bonita Montero
8 Jun 25 i               i i `* Re: encapsulating directory operations10Muttley
8 Jun 25 i               i i  +* Re: encapsulating directory operations3Bonita Montero
9 Jun 25 i               i i  i`* Re: encapsulating directory operations2Muttley
9 Jun 25 i               i i  i `- Re: encapsulating directory operations1Bonita Montero
8 Jun 25 i               i i  +* Re: encapsulating directory operations2Kaz Kylheku
10 Jun 25 i               i i  i`- Re: encapsulating directory operations1Tim Rentsch
8 Jun 25 i               i i  +- Re: encapsulating directory operations1Bonita Montero
9 Jun 25 i               i i  +- Re: encapsulating directory operations1wij
9 Jun 25 i               i i  `* Re: encapsulating directory operations2Muttley
9 Jun 25 i               i i   `- Re: encapsulating directory operations1Bonita Montero
8 Jun 25 i               i +* Re: encapsulating directory operations5wij
8 Jun 25 i               i i`* Re: encapsulating directory operations4Bonita Montero
8 Jun 25 i               i i `* Re: encapsulating directory operations3wij
8 Jun 25 i               i i  `* Re: encapsulating directory operations2Bonita Montero
8 Jun 25 i               i i   `- Re: encapsulating directory operations1wij
9 Jun 25 i               i `* Re: encapsulating directory operations2Lawrence D'Oliveiro
9 Jun 25 i               i  `- Re: encapsulating directory operations1Bonita Montero
7 Jun 25 i               `* Re: encapsulating directory operations14Janis Papanagnou
8 Jun 25 i                `* Re: encapsulating directory operations13Bonita Montero
8 Jun 25 i                 +- Re: encapsulating directory operations1Chris M. Thomasson
8 Jun 25 i                 `* Re: encapsulating directory operations11Bonita Montero
9 Jun 25 i                  +* Re: encapsulating directory operations8Bonita Montero
9 Jun 25 i                  i+* Re: encapsulating directory operations6Bonita Montero
9 Jun 25 i                  ii+- Re: encapsulating directory operations1Bonita Montero
10 Jun 25 i                  ii+* Re: encapsulating directory operations3Muttley
10 Jun 25 i                  iii+- Re: encapsulating directory operations1Muttley
10 Jun 25 i                  iii`- Re: encapsulating directory operations1Chris M. Thomasson
10 Jun 25 i                  ii`- Re: encapsulating directory operations1Waldek Hebisch
9 Jun 25 i                  i`- Re: encapsulating directory operations1Richard Heathfield
10 Jun 25 i                  `* Re: encapsulating directory operations2Tim Rentsch
10 Jun 25 i                   `- Re: encapsulating directory operations1Bonita Montero
20 May 25 +* Re: encapsulating directory operations74Keith Thompson
20 May 25 i+* Re: encapsulating directory operations28Richard Heathfield
20 May 25 ii+- Re: encapsulating directory operations1Paul Edwards
20 May 25 ii+- Re: encapsulating directory operations1David Brown
20 May 25 ii+* Re: encapsulating directory operations7Kaz Kylheku
20 May 25 iii`* Re: encapsulating directory operations6Richard Heathfield
20 May 25 iii +* Re: encapsulating directory operations2Muttley
20 May 25 iii i`- Re: encapsulating directory operations1Paul Edwards
20 May 25 iii `* Re: encapsulating directory operations3Paul Edwards
20 May 25 iii  `* Re: encapsulating directory operations2Richard Heathfield
20 May 25 iii   `- Re: encapsulating directory operations1Paul Edwards
23 May 25 ii`* Re: encapsulating directory operations18Tim Rentsch
23 May 25 ii +* Re: encapsulating directory operations6Richard Heathfield
24 May 25 ii i`* Re: encapsulating directory operations5Tim Rentsch
24 May 25 ii i `* Re: encapsulating directory operations4Richard Heathfield
28 May 25 ii i  `* Re: encapsulating directory operations3Tim Rentsch
28 May 25 ii i   `* Re: encapsulating directory operations2Richard Heathfield
26 May 25 ii `* Re: encapsulating directory operations11Peter 'Shaggy' Haywood
20 May 25 i`* Re: encapsulating directory operations45Paul Edwards
20 May 25 +* Re: encapsulating directory operations145Kaz Kylheku
21 May 25 +* Re: encapsulating directory operations3Janis Papanagnou
22 May 25 +- Re: encapsulating directory operations1Bonita Montero
25 May 25 `- Re: encapsulating directory operations1Tim Rentsch

Haut de la page

Les messages affichés proviennent d'usenet.

NewsPortal