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;
}
