/* * util.c — utility functions * Copyright © 2007 Will Thompson * * Copying and distribution of this file, with or without modification, * are permitted in any medium without royalty provided the copyright * notice and this notice are preserved. */ #include #include "util.h" #include #include "debug.h" gboolean haze_remove_directory (const gchar *path) { const gchar *child_path; GDir *dir = g_dir_open (path, 0, NULL); gboolean ret = TRUE; if (!dir) return FALSE; while (ret && (child_path = g_dir_read_name (dir))) { gchar *child_full_path = g_build_filename (path, child_path, NULL); if (g_file_test (child_full_path, G_FILE_TEST_IS_DIR)) { if (!haze_remove_directory (child_full_path)) ret = FALSE; } else { DEBUG ("deleting %s", child_full_path); if (g_unlink (child_full_path)) ret = FALSE; } g_free (child_full_path); } g_dir_close (dir); if (ret) { DEBUG ("deleting %s", path); ret = !g_rmdir (path); } return ret; }