/* /secure/sefun/files.c
* from Dead Souls 3.3
* functions which handle file operations
* created by Descartes of Borg 940926
*/
string gtempname, gfilename;
int file_exists(string str) {
if(!str) return 0;
return (file_size(str) > -1);
}
int directory_exists(string str) { return (file_size(str) == -2); }
string save_file(string who) {
if( !stringp(who) ) error("Bad argument 1 to save_file().");
who = convert_name(who);
return (string)master()->player_save_file(who);
}
int indent_file(string filename){
string tempname;
tempname = "/tmp/indent."+time()+".tmp";
write_file(tempname,"I\n");
gtempname = tempname;
gfilename = filename;
if(!cp(filename,tempname+".dat")){
write("You don't have read access to "+filename);
return 0;
}
load_object("/secure/cmds/creators/lsed")->cmd(tempname+" "+tempname+".dat");
if(!unguarded((: cp(gtempname+".dat", gfilename) :)) ){
write("You don't have write access to "+filename);
rm(tempname+".dat");
rm(tempname);
return 0;
}
rm(tempname+".dat");
rm(tempname);
return 1;
}
int mkdir_recurse(string path){
string *path_arr = explode(path,"/");
string agglutinate = "";
if(directory_exists(path)) return 0;
foreach(string element in path_arr){
agglutinate += "/"+element;
if(!directory_exists(agglutinate)){
if(!mkdir(agglutinate)) return 0;
}
}
return 1;
}