int file_rmrf (const char *path) { if (file_isdir (path)) { dirlist_t list; if (file_listdir (path, &list) != 0) return -1; int i; for (i = 0; i < list.length; i++) { if (strcmp (".", list.paths[i]) == 0 || strcmp ("..", list.paths[i]) == 0) continue; char *next = path_join (path, list.paths[i]); int ret = file_rmrf (next); free (next); if (ret != 0) { file_free_dirlist (&list); return ret; } } file_free_dirlist (&list); if (rmdir (path) != 0) return -1; } else if (file_isfile (path) || file_islink (path)) { return unlink (path); } return 0; }
void file_printdir(char *path) { char **array; char **ptr; array = file_listdir(path); ptr = array; while(strcmp(*ptr, "") != 0) { printf("%s\n", *ptr); ptr++; } }