dev/vala/rm_rf/rm_rf.vala

28 lines
690 B
Vala

void rm_rf (File directory) throws Error {
var children = directory.enumerate_children ("standard::*",
FileQueryInfoFlags.NOFOLLOW_SYMLINKS, null);
FileInfo fileinfo = null;
while ((fileinfo = children.next_file (null)) != null ) {
File child = directory.resolve_relative_path (fileinfo.get_name ());
if (fileinfo.get_file_type () == FileType.DIRECTORY) {
rm_rf (child);
} else {
print (@"rm $(child.get_path())\n");
child.delete();
}
}
print (@"rmdir $(directory.get_path())\n");
directory.delete();
}
int main () {
try {
rm_rf (File.new_for_path("/tmp/aaa"));
} catch (Error e) {
stderr.puts ("Error: $(e.message)\n");
return -1;
}
return 0;
}