Beispiel #1
0
function rec_rmdir($path)
{
    global $paths;
    $paths[] = $path;
    // schau' nach, ob das ueberhaupt ein Verzeichnis ist
    if (!is_dir($path)) {
        return -1;
    }
    // oeffne das Verzeichnis
    $dir = @opendir($path);
    // Fehler?
    if (!$dir) {
        return -2;
    }
    // gehe durch das Verzeichnis
    while ($entry = @readdir($dir)) {
        // wenn der Eintrag das aktuelle Verzeichnis oder das Elternverzeichnis
        // ist, ignoriere es
        if ($entry == '.' || $entry == '..') {
            continue;
        }
        // wenn der Eintrag ein Verzeichnis ist, dann
        if (is_dir($path . '/' . $entry)) {
            // rufe mich selbst auf
            $res = rec_rmdir($path . '/' . $entry);
            // wenn ein Fehler aufgetreten ist
            if ($res == -1) {
                // dies duerfte gar nicht passieren
                @closedir($dir);
                // Verzeichnis schliessen
                return -2;
                // normalen Fehler melden
            } else {
                if ($res == -2) {
                    // Fehler?
                    @closedir($dir);
                    // Verzeichnis schliessen
                    return -2;
                    // Fehler weitergeben
                } else {
                    if ($res == -3) {
                        // nicht unterstuetzer Dateityp?
                        @closedir($dir);
                        // Verzeichnis schliessen
                        return -3;
                        // Fehler weitergeben
                    } else {
                        if ($res != 0) {
                            // das duerfe auch nicht passieren...
                            @closedir($dir);
                            // Verzeichnis schliessen
                            return -2;
                            // Fehler zurueck
                        }
                    }
                }
            }
        } else {
            if (is_file($path . '/' . $entry) || is_link($path . '/' . $entry)) {
                // ansonsten loesche diese Datei / diesen Link
                $res = @unlink($path . '/' . $entry);
                // Fehler?
                if (!$res) {
                    @closedir($dir);
                    // Verzeichnis schliessen
                    return -2;
                    // melde ihn
                }
            } else {
                // ein nicht unterstuetzer Dateityp
                @closedir($dir);
                // Verzeichnis schliessen
                return -3;
                // tut mir schrecklich leid...
            }
        }
    }
    // schliesse nun das Verzeichnis
    @closedir($dir);
    // versuche nun, das Verzeichnis zu loeschen
    $res = @rmdir($path);
    // gab's einen Fehler?
    if (!$res) {
        return -2;
        // melde ihn
    }
    // alles ok
    return 0;
}
Beispiel #2
0
function rec_rmdir($path)
{
    if (!is_dir($path)) {
        return -1;
    }
    $dir = @opendir($path);
    if (!$dir) {
        return -2;
    }
    while (($entry = @readdir($dir)) !== false) {
        if ($entry == '.' || $entry == '..') {
            continue;
        }
        if (is_dir($path . '/' . $entry)) {
            $res = rec_rmdir($path . '/' . $entry);
            if ($res == -1) {
                @closedir($dir);
                return -2;
            } else {
                if ($res == -2) {
                    @closedir($dir);
                    return -2;
                } else {
                    if ($res == -3) {
                        @closedir($dir);
                        return -3;
                    } else {
                        if ($res != 0) {
                            @closedir($dir);
                            return -2;
                        }
                    }
                }
            }
        } else {
            if (is_file($path . '/' . $entry) || is_link($path . '/' . $entry)) {
                $res = @unlink($path . '/' . $entry);
                if (!$res) {
                    @closedir($dir);
                    return -2;
                }
            } else {
                @closedir($dir);
                return -3;
            }
        }
    }
    @closedir($dir);
    $res = @rmdir($path);
    if (!$res) {
        return -2;
    }
    return 0;
}