Thread View: be.comp.programming
5 messages
5 total messages
Started by David
Fri, 21 May 2004 23:51
C++ : readdir geeft gevonden entries in omgekeerde volgorde ?
Author: David
Date: Fri, 21 May 2004 23:51
Date: Fri, 21 May 2004 23:51
30 lines
1703 bytes
1703 bytes
Bij het gebruik van de functie readdir (C++, Linux) viel het me op dat
entries in omgekeerde volgorde gegeven worden. vb:
. . .
dirname = "/proc/acpi/battery/";
battery_dir = opendir(dirname);
if(battery_dir)
{
while((bat_entry = readdir(battery_dir)))
{
name = bat_entry->d_name;
cout<<" dir entry found : "<<name<<endl;
}
}
geeft volgende output :
dir entry found : .
dir entry found : ..
dir entry found : BAT2
dir entry found : BAT1
Is dit normaal ? Ik verwachtte dat BAT1 voor BAT2 zou komen.
De unix man page van readdir helpt me niet verder.
--
David Leemans
-----::[ http://freeunix.dyndns.org:8088/ ]::-----
Re: C++ : readdir geeft gevonden entries in omgekeerde volgorde ?
Author: Kristoffel
Date: Sat, 22 May 2004 09:17
Date: Sat, 22 May 2004 09:17
39 lines
2202 bytes
2202 bytes
David wrote:
> Bij het gebruik van de functie readdir (C++, Linux) viel het me op dat
> entries in omgekeerde volgorde gegeven worden. vb:
>
> . . .
> dirname = "/proc/acpi/battery/";
> battery_dir = opendir(dirname);
> if(battery_dir)
> {
> while((bat_entry = readdir(battery_dir)))
> {
> name = bat_entry->d_name;
> cout<<" dir entry found : "<<name<<endl;
> }
> }
>
> geeft volgende output :
> dir entry found : .
> dir entry found : ..
> dir entry found : BAT2
> dir entry found : BAT1
>
> Is dit normaal ? Ik verwachtte dat BAT1 voor BAT2 zou komen.
> De unix man page van readdir helpt me niet verder.
>
Je krijgt dezelfde output als met 'ls -f'.
Via google kwam ik op deze site terecht:
<http://tools.devchannel.org/devtoolschannel/04/04/30/1810228.shtml?tid=24&tid=46>
daar staat:
...
The output is not sorted in any way; it represents the linear contents
of the directory.
...
--
Kristoffel
Re: C++ : readdir geeft gevonden entries in omgekeerde volgorde ?
Author: Philip Paeps
Date: Sat, 22 May 2004 10:55
Date: Sat, 22 May 2004 10:55
25 lines
1733 bytes
1733 bytes
David <david@somebox.somewhere> wrote:
> Bij het gebruik van de functie readdir (C++, Linux) viel het me op dat
> entries in omgekeerde volgorde gegeven worden. vb:
Ze worden gegeven in de volgorde dat ze in de directory staan (toch in
mijn implementatie). Een directory is gewoon een 'file' die dirent(5)
volgt. Met readdir() haal je gewoon een pointer op naar het 'volgende'
entry in de directory.
> Is dit normaal? Ik verwachtte dat BAT1 voor BAT2 zou komen.
Waarschijnlijk maakt de driver de proc nodes in die volgorde aan.
> De unix man page van readdir helpt me niet verder.
En de implementatie zelf? ;-)
- Philip
--
Philip Paeps Please don't email any replies
I follow the newsgroup.
BOFH Excuse #1:
clock speed
Re: C++ : readdir geeft gevonden entries in omgekeerde volgorde ?
Author: David
Date: Sat, 22 May 2004 12:38
Date: Sat, 22 May 2004 12:38
20 lines
1779 bytes
1779 bytes
On Sat, 22 May 2004 10:55:10 +0000, Philip Paeps wrote: > David <david@somebox.somewhere> wrote: >> Bij het gebruik van de functie readdir (C++, Linux) viel het me op dat >> entries in omgekeerde volgorde gegeven worden. vb: > > Ze worden gegeven in de volgorde dat ze in de directory staan (toch in > mijn implementatie). Een directory is gewoon een 'file' die dirent(5) > volgt. Met readdir() haal je gewoon een pointer op naar het 'volgende' > entry in de directory. maw, als ik belang wil hechten aan de volgorde vd gevonden entries, zal ik dat zelf moeten opvangen. Thx voor de info, ook aan Kristoffel. -- David Leemans -----::[ http://freeunix.dyndns.org:8088/ ]::-----
Re: C++ : readdir geeft gevonden entries in omgekeerde volgorde ?
Author: Kristoffel
Date: Sat, 22 May 2004 14:51
Date: Sat, 22 May 2004 14:51
34 lines
2253 bytes
2253 bytes
David wrote:
> On Sat, 22 May 2004 10:55:10 +0000, Philip Paeps wrote:
>
>
>>David <david@somebox.somewhere> wrote:
>>
>>>Bij het gebruik van de functie readdir (C++, Linux) viel het me op dat
>>>entries in omgekeerde volgorde gegeven worden. vb:
>>
>>Ze worden gegeven in de volgorde dat ze in de directory staan (toch in
>>mijn implementatie). Een directory is gewoon een 'file' die dirent(5)
>>volgt. Met readdir() haal je gewoon een pointer op naar het 'volgende'
>>entry in de directory.
>
>
> maw, als ik belang wil hechten aan de volgorde vd gevonden entries,
> zal ik dat zelf moeten opvangen.
> Thx voor de info, ook aan Kristoffel.
>
alternatief ?
*scandir* (zie "man scandir")
alphasort sorteert wel in descending order (eerst van z naar a, en van Z
naar A)
*system ("ls -1 -a /proc/acpi/battery/ > /tmp/filelist.tmp")*
en dan kun je de file gaan lezen.
Geen Thx,
--
Kristoffel
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads