/* // This file is part of the TMI Mudlib distribution. // Please include this header if you use this code. // Adapted by Buddha(1-18-91) from unknown source. // Added check for existance of destination file. Plura 930120 */ #include <lib.h> inherit LIB_DAEMON; int cmd(string str); int help(); int cmd(string str) { string t1, t2, *tmp; int force = 0; int dir = 0; if(this_player()->GetForced()) { write("Someone tried forcing you to mv "+str+"\n"); return 1; } if(!str || !sizeof(str)){ return help(); } if(sscanf(str,"-f %s %s",t1,t2) == 2) { force = 1; str = t1+" "+t2; } if(!str||sscanf(str,"%s %s",t1,t2)!=2) { /* We should add checks for flags here. */ return help(); } else { if(!force){ if(file_size(t2=absolute_path((string)this_player()->query_cwd(),t2)) > 0) { notify_fail("mv: "+t2+" already exists.\n"); return 0; } } t1=absolute_path((string)this_player()->query_cwd(),t1); t2=absolute_path((string)this_player()->query_cwd(),t2); if(directory_exists(t1)) dir = 1; else if(file_exists(t1)) dir = 0; else { write(t1+": no such file or directory."); return 1; } if(!dir && directory_exists(t2)){ if(last(t2,1) != "/") t2 += "/"; t2 += last_string_element(t1,"/"); } rename(t1,t2); if((dir && directory_exists(t2) && !directory_exists(t1)) || (!dir && file_exists(t2) && !file_exists(t1)) ) write("mv: Ok."); else write("mv: Failed."); } return 1; } int help() { write( "Syntax:\nmv <file1> <file2|directory>\n" + "Renames a file or moves it into the directory specified.\n" + "The -f flag forces the overwriting of an existing file.\n\n"+ "Examples:\n"+ "mv -f workroom.bak workroom.c\n"+ "mv workroom.bak /tmp/"); return 1; } /* EOF */