#include <mudlib.h> #include <config.h> #include <uid.h> inherit DAEMON ; #define PURGED "/purged_1008" static int move_contents(string path, int flag); int clean_dir(string dir, int flag) { string tmp; // Check euid of initiator to confirm correct permissions if(geteuid(previous_object()) != ROOT_UID && !adminp(geteuid(previous_object()))) return 0; if(!dir || dir == "") return 0; if(file_size(dir) != -2) return 0; // Not a directory return move_contents(dir + "/", flag); } // This function recursively cleans a specific directory path // If flag = 1, it will not protect PROTECTed files static int move_contents(string path, int flag) { mixed *dir; string what; int loop; // Get directory contents array dir = get_dir( path ); if(!dir || !sizeof(dir)) return -1; // Loop through and delete contents of dir array for(loop=0; loop<sizeof(dir); loop++) { what = path + dir[loop]; // If selection is a directory ... recursively clean and remove it if(file_size( what ) == -2) { what = replace_string( what, "//", "/" ); mkdirs( PURGED + what + "/" ); move_contents(what + "/", 1); rmdir(what); } // If file isn't protected ... remove it if( flag ) { what = replace_string( what, "//", "/" ); rename( what, PURGED + what ); rm(what); } } return 1; }