
-Michael
Code: Alles auswählen
function IsRealDirectory(FilePath, Value: String): Boolean;
var
info: stat;
begin
Result := false;
if not ((Value='.') or (Value='..') or (Value='')) then
begin
fplstat(FilePath+Value,@info);
if info.nlink<>1 then Result := true;
end;
end;
nlink zählt Hardlinks. Stimmt! Diese Überprüfung mache ich jedoch nur bei Verzeichnissen und nicht bei Dateien. Da jedoch, Hardlinks zu Verzeichnissen nicht erlaubt sind, kann der nlink bei Symlinks zu Verzeihnissen nicht größer als 1 werden (zumindest unter Linux). Klar soweit?mschnell hat geschrieben:info.nlink zählt nur die Hardlinks, nicht die Symlinks. Und die Hardlinks brauchst Du beim scannen nicht auszuschließen. ... Und Hardlinks auf Directories sind, wie wir beide gerade gelernt haben, ohnehin in Linux (aber nicht in allen Unixen (Mac = ???) verboten. Also kann sind Verzeichnisse auch mit Hardlinks (nicht aber mit Symlinks !) strikt baumförmig und es kann nicht zu Rekursionen kommen.
Ich nehm's mal in Angriff.mschnell hat geschrieben:Und da hilft dann vermutlich nur faSymLink. Wenn das nicht funktioniert, muss man es ans funktionieren bringen (ist schließlich Open Source " !)
Wernn nlink>1, dann existieren mehrere Hardlinks. Da Hardlinks (manuell) auf Verzeichnisse jedoch nicht erlaubt sind, muss ich die schonmal nicht rausfiltern, nur noch Softlinks. Und Softlinks auf Verzeichnise haben wohl immer nlink=1 (getestet), Verzeichnisse selbst 2 oder mehr (2+Anzahl der Unterverzeichnisse)pluto hat geschrieben:Ich habe in den Oben geposteten links gelesen wenn fpfstat. (vermutlich) den wert 1 hat ist es kein link, sobald er hörer ist es ein Link. Spielt ja keine roll was für ein Link... oder ?
Code: Alles auswählen
Ordner1 //1
->. //2
->..
->Unterordner1
->.
->.. //3
->Unterordner2
->.
->.. //4
Sehe ich nicht ganz somschnell hat geschrieben:...Hardlinks auf Verzeichnisse sind verboten (info.nlink ist immer 1, wie Giantics getestet hat). Also ist "." und ".." auf keinen Fall ein Hardlink.
Was ist es dann ?!?!?
Ja (57 Unterordner drin).pluto hat geschrieben:Ja.... dann währe die Frage ja geklärt oder ? übrings eine Ähnliche Frage hatte ich auch schon gestellt. evlt. kann ich mal die Antwort hier in meinem Projekt(Eigenes Öffnen Dialog) einbauen.).. *G*
Nochmal: 59 heißt also auf thomas zeigen 59 (hard) Links