+ # Delete a directory and all of its content, return `true` on success
+ #
+ # Does not go through symbolic links and may get stuck in a cycle if there
+ # is a cycle in the filesystem.
+ fun rmdir: Bool
+ do
+ var ok = true
+ for file in self.files do
+ var file_path = self.join_path(file)
+ var stat = file_path.file_lstat
+ if stat.is_dir then
+ ok = file_path.rmdir and ok
+ else
+ ok = file_path.file_delete and ok
+ end
+ stat.free
+ end
+
+ # Delete the directory itself
+ if ok then to_cstring.rmdir
+
+ return ok
+ end
+