In einem Verzeichnis (z.b./home/user/test) befindet sich ein sog.Hardlink zu einem weiteren Verzeichnis z.b. "dIR1"
Das Problem an der Sache ist nun wenn ich alle Dateien eines Verz. einlesen will finde ich mittels (findfirst bzw findnext) zwar alle Verz unhd Dateien in diesem Verz. jedoch die "Hardlinks" scheinen nicht auf.
Evt.muss man einen anderen Wert für "attribut" angeben, nur ist mir keiner bekannt, "symlink" kommt ja nicht in Frage da es sich ja ein hardlink und keinen softlinklink handelt. (Funktioniert aber auch nicht - habe ich schon Versucht).
Interessant ist die Tatsache, das keines von den Lazarus IDE eigenen Objekten (TFilelistbox) (TShellListView) diesen "hardlink" finden.
Es scheint also irgendetwas mit dem findfirst/findnext unter linux nicht zu stimmen das diese "hardlinks" nicht gefunden werden.
FPC Version ist 2.6
Mittels "ls-la" ist der hardlink sichtbar :
Code: Alles auswählen
usert@user-12:/home/user$ ls-la test
insgesamt 8
rwxrwxrwx 3 libuuid 500 16 Apr 6 13:35 .
drwxrwxrwx 4 libuuid 500 24 Apr 6 13:30 ..
drwxrwxr-x 2 libuuid 500 1 Apr 6 16:28 MyTestDir
lrwxrwxrwx 1 libuuid 500 55 Apr 6 13:32 (TestLink)-MyTestDir -> MyTestDir
Code: Alles auswählen
Procedure GetFiles(aDirectory:String;aStringlist:TStrings);
VAR
SearchRec:TSearchRec;
Begin
aStringlist.Clear;
If sysutils.FindFirst ( MyIncludeTrailingPathDelimeter (UTF8ToSys(aDirectory) ) + '*', faAnyFile and not fahidden, SearchRec) = 0 Then
Begin
REPEAT
Application.ProcessMessages;
If (SearchRec.Attr and faDirectory <> faDirectory) and (SearchRec.Name <> '.') and (SearchRec.Name <> '..') Then {Only allow files}
Begin
{Entry is a File}
aStringlist.Add(SearchRec.Name);
End;
Until Sysutils.FindNext (SearchRec) <> 0;
Sysutils.FindClose (SearchRec);
End;
End;