Raketenwilli: Was zum Mitgucken: Pfadputzer (Edit: Update)

Klasse und derzeit enthaltene Methode clearPath() (Enthält noch ein wenig Überflüssiges...)

Diese Klasse soll etwas wie /foo/bar/../baz/.//tok zu /foo/baz/tok machen. Auch für Windows.

Fragen dazu:

  • Sieh jemand echte FEHLER, die zu unrichtigen Ergebnissen führen?
  • Sind die Ergebnisse überhaupt richtig?

Update:

Jetzt habe ich selbst einen Fehler gefunden- Ich lasse mal die Frage stehen. Lösche den Rest inzwischen.

  • Ist es korrekt bei einem übergeben Errorlevel (3. Parameter)

mit

  1. E_USER_NOTICE: weiterzumachen und das Ergebnis zu liefern, wenn der resultierende Pfad wegen zu vieler '/../' außerhalb des gegebenen liegt aber mit

  2. E_USER_WARNING auszusteigen und false zu liefern, wenn der resultierende Pfad wegen zu vieler '/../' außerhalb des gegebenen liegt, jedoch mit

  3. E_USER_ERROR stets mit einem fatalen Fehler auszusteigen, wenn diese Sachverhalte auftreten.

  4. Bei Windows-Pfaden (mit Laufwerksbuchstaben) stets false zu liefern wenn der ermittelte Pfad auf ein Verzeichnis unterhalb des Windows-Laufwerksbuchstaben fallen würde (und nicht E_USER_ERROR gefordert wird, was wie oben endet.

  1. Hallo Raketenwilli,

    könntest Du - bevor jemand deinen Code inspiziert - darlegen, welche abweichenden Anforderungen sie im Vergleich zu realpath erfüllen soll?

    Außer der, nicht zu viel zu tun? Denn realpath prüft auch die Existenz der Datei, was okay sein kann, aber nicht muss.

    Es gibt auch noch den hier, aber der scheint mir auf den ersten Blick arg over-engineered...

    Rolf

    --
    sumpsi - posui - obstruxi
    1. Hallo Raketenwilli,

      könntest Du - bevor jemand deinen Code inspiziert - darlegen, welche abweichenden Anforderungen sie im Vergleich zu realpath erfüllen soll?

      Außer der, nicht zu viel zu tun? Denn realpath prüft auch die Existenz der Datei, was okay sein kann, aber nicht muss.

      Das Überprüfen der realen Existenz eines Dateisystemobjektes soll aus $Gründen[] gerade nicht, genauer optional, dann aber mit realpath()) stattfinden und auch für Pfade in HTML-Links bzw. anderen URLs funktionieren.