Seite 1 von 1
Bug in Filesearchmodule
Verfasst: Mo Aug 09, 2010 10:31 pm
von Bebu
Ich suche eine Idee für ein etwas ungewöhnliches Problem im Filesearchmodul von Dedupe: Bekanntlicherweise kann man Verknüpfungen so einrichten, dass sie auf sich selbst zeigen und man sich dann in einer Endlosschleife wiederfindet wenn man solche Verknüpfungen rekursiv durchsucht. Die wird zwar früher oder später unterbrochen, wahrscheinlich weil irgend ein Maximalwert überschritten wird, aber das ganze verbrät unnötig viel Rechenzeit. Ich habe bisher keine Möglichkeit gefunden, solche Verknüpfungen von normalen Verzeichnissen zu unterscheiden. Zumindest unter Gnome sind das keine Symbolischen Links und per stat nicht voneinander zu unterscheiden. Ich suche Ideen. Ich könnte natürlich festlegen, das ein bestimmter Verzeichnisname nur so und so oft hintereinander vorkommen darf, aber auch das ist nicht richtig effizient und verbrät auch zusätzliche Rechenzeit. Außerdem kann man nie wissen, wie tief mancher seine Dateien unter "Neuen Ordnern" vergräbt. Schon mal jemand ein ähnliches Problem gehabt und gelöst?
Re: Bug in Filesearchmodule
Verfasst: Mo Aug 09, 2010 11:31 pm
von Kerli
Das ist ein typischer Fall für readlink (zb.
readlink() nach POSIX). Wenn das Ziel gleich dem Link ist dann hat man eine Schleife. Problematischer wird es aber wohl bei indirekt selbst verlinkten Verknüpfungen also mit weiteren Links dazwischen bevor man wieder zum Ausgangslink oder auch einem anderen Link in der Kette kommt.
Eine Möglichkeit das zu erkennen wäre es zb. alle Links in der Kette merken und beim ersten auftreten eines bekannten Elements abbrechen. Eine Begrenzung der Länge der Kette sollte für den Fall der Fälle aber trotzdem vorhanden sein.
Re: Bug in Filesearchmodule
Verfasst: Di Aug 10, 2010 6:47 am
von cloidnerux
Ist es nicht sinnvoller Links auszulassen, da sie entweder auf Ordner verweisen, die nicht im Betrachtungsspektrum liegen oder sowieso durchsucht werden?
Oder Links die auf Diesnte oder entfernte Resourcen verweisen?
Re: Bug in Filesearchmodule
Verfasst: Di Aug 10, 2010 11:30 am
von Bebu
cloidnerux hat geschrieben:Ist es nicht sinnvoller Links auszulassen, da sie entweder auf Ordner verweisen, die nicht im Betrachtungsspektrum liegen oder sowieso durchsucht werden?
Oder Links die auf Diesnte oder entfernte Resourcen verweisen?
So war es geplant, ich kämpfe aber mit dem Problem, das mir mein Programm keine Verzeichnisverknüpfungen von normalen Ordnern unterscheiden kann. Ich habe mir gerade mal den Quellcode der Coreutils von GNU runtergeladen und versuche mal dort ein bisschen was dazuzulernen, da klappts ja problemlos
Re: Bug in Filesearchmodule
Verfasst: Di Aug 10, 2010 12:52 pm
von Bebu
So dieser Bug ist gefixt. Verknüpfungen werden nun korrekt erkannt und dann ausgefiltert. Die Lösung war die Verwendung von lstat() statt stat().