Bug in Filesearchmodule
- Bebu
- Beiträge: 562
- Registriert: Mi Okt 21, 2009 6:19 pm
- Wohnort: In der Nähe von Salzburg - Bin aber kein Österreicher!
Bug in Filesearchmodule
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?
Wer immer nach dem Unerreichbaren jagt, der wird irgendwann auf die Schnauze fallen!
Re: Bug in Filesearchmodule
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.
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.
"Make it idiot-proof and someone will invent an even better idiot." (programmers wisdom)
OpenGL Tutorials und vieles mehr rund ums Programmieren: http://www.tomprogs.at
OpenGL Tutorials und vieles mehr rund ums Programmieren: http://www.tomprogs.at
- cloidnerux
- Moderator
- Beiträge: 3125
- Registriert: Fr Sep 26, 2008 4:37 pm
- Wohnort: Ram (Gibts wirklich)
Re: Bug in Filesearchmodule
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?
Oder Links die auf Diesnte oder entfernte Resourcen verweisen?
Redundanz macht wiederholen unnötig.
quod erat expectandum
quod erat expectandum
- Bebu
- Beiträge: 562
- Registriert: Mi Okt 21, 2009 6:19 pm
- Wohnort: In der Nähe von Salzburg - Bin aber kein Österreicher!
Re: Bug in Filesearchmodule
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 problemloscloidnerux 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?
Wer immer nach dem Unerreichbaren jagt, der wird irgendwann auf die Schnauze fallen!
- Bebu
- Beiträge: 562
- Registriert: Mi Okt 21, 2009 6:19 pm
- Wohnort: In der Nähe von Salzburg - Bin aber kein Österreicher!
Re: Bug in Filesearchmodule
So dieser Bug ist gefixt. Verknüpfungen werden nun korrekt erkannt und dann ausgefiltert. Die Lösung war die Verwendung von lstat() statt stat().
Wer immer nach dem Unerreichbaren jagt, der wird irgendwann auf die Schnauze fallen!