inherit COMMAND_BASE; string help(); int cmd(string str) { int i; string file, date; string *parts; string orig_file; object user = this_player(); if (!str) return notify_fail( "Usage : backup <filename>\n" ); if( file_size( str ) < 0 ) str = user -> query_current_path() + "/" + str; if( file_size( str ) < 0 ) return notify_fail( "Cannot find file to backup.\n" ); orig_file = str; date = ctime( time() ); i = member_array( date[ 4..6 ], ({ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" }) ); i++; date = date[ 22..23 ] + i + date[ 8..9 ]; if( strlen( date ) == 5 ) date = date[ 0..1 ] + "0" + date[ 2..4 ]; date = replace( date, " ", "0" ); date = replace( date, " ", "0" ); parts = explode(str, "/"); parts = parts[0..<2] + ({"BACKUPS"}) + parts[<1..<1]; switch(file_size(implode(parts[0..<2], "/"))) { default: return notify_fail("File named BACKUPS exists. please rename it.\n"); case -1: if(!mkdir(implode(parts[0..<2], "/") ) ) return notify_fail("Couldn't make BACKUPS dir.\n"); case -2: } str = implode(parts, "/"); if( file_size( str + "." + date ) != -1 ) { i = 2; while( file_size( str + "." + date + "v" + i ) != -1 ) i++; date += "v" + i; } file = read_file( orig_file ); write_file( str + "." + date, file ); if(file_size( str + "." + date ) == -1) return notify_fail( "Backup failed\n" ); write("File backed up to " + str + "." + date + "\n" ); return 1; } /* cmd() */ string help() { return "Syntax: backup <file>\n"; }