/**************************************************************************** * [S]imulated [M]edieval [A]dventure multi[U]ser [G]ame | \\._.// * * -----------------------------------------------------------| (0...0) * * SMAUG 1.4 (C) 1994, 1995, 1996, 1998 by Derek Snider | ).:.( * * -----------------------------------------------------------| {o o} * * SMAUG code team: Thoric, Altrag, Blodkai, Narn, Haus, | / ' ' \ * * Scryn, Rennard, Swordbearer, Gorog, Grishnakh, Nivek, |~'~.VxvxV.~'~* * Tricops and Fireblade | * * ------------------------------------------------------------------------ * * Merc 2.1 Diku Mud improvments copyright (C) 1992, 1993 by Michael * * Chastain, Michael Quan, and Mitchell Tse. * * Original Diku Mud copyright (C) 1990, 1991 by Sebastian Hammer, * * Michael Seifert, Hans Henrik St{rfeldt, Tom Madsen, and Katja Nyboe. * * ------------------------------------------------------------------------ * * DB Infinity code based on DBSaga * **************************************************************************** * Some comments might have been removed please refer to the current * * copy of AFKMUD at afkmud.com or DBSaga2.5.2 from dbsdevelop.com * * Thanks for downloading! We respect coders! * ****************************************************************************/ #include <string.h> #include <time.h> #include "mud.h" char *backup_fname_strings[] = { "pfiles_backup.tgz", "system_backup.tgz", "area_backup.tgz", "building_backup.tgz", "source_backup.tgz" }; char *backup_directory_strings[] = { "../player/", "../system/", "../area/", "../building/", "../src/", "../backup/" }; typedef enum { BACKUP_PFILES, BACKUP_SYSTEM, BACKUP_AREAS, BACKUP_BUILDING, BACKUP_SOURCE, BACKUP_DIRECTORY } backup_types; /* ====== Locals ====== */ void do_backup args( ( CHAR_DATA * ch, char *argument ) ); void backup args( ( CHAR_DATA * ch, int type ) ); /* =============== Backup command -Nopey =============== */ void do_backup( CHAR_DATA * ch, char *argument ) { if( !IS_IMMORTAL( ch ) || IS_NPC( ch ) ) { send_to_char( "Huh?\n\r", ch ); return; } if( argument[0] == '\0' ) { send_to_char( "Syntax: backup <type>\n\r", ch ); send_to_char( "Types being one of the following:\n\r" " pfiles systemfiles areas buildingfiles src all\n\r", ch ); send_to_char( "Syntax: backup <all> will save a lot of time.\n\r", ch ); return; } if( !str_cmp( argument, "pfiles" ) ) { backup( ch, BACKUP_PFILES ); send_to_char( "Backup complete.\n\r", ch ); return; } else if( !str_cmp( argument, "systemfiles" ) || !str_cmp( argument, "system" ) ) { backup( ch, BACKUP_SYSTEM ); send_to_char( "Backup complete.\n\r", ch ); return; } else if( !str_cmp( argument, "area" ) || !str_cmp( argument, "areas" ) ) { backup( ch, BACKUP_AREAS ); send_to_char( "Backup complete.\n\r", ch ); return; } else if( !str_cmp( argument, "building" ) || !str_cmp( argument, "buildingfiles" ) ) { backup( ch, BACKUP_BUILDING ); send_to_char( "Backup complete.\n\r", ch ); return; } else if( !str_cmp( argument, "src" ) || !str_cmp( argument, "source" ) ) /* Added by Chosen */ { backup( ch, BACKUP_SOURCE ); send_to_char( "Backup complete.\n\r", ch ); return; } else if( !str_cmp( argument, "all" ) || !str_cmp( argument, "all" ) ) /* Also added by Chosen */ { backup( ch, BACKUP_SOURCE ); backup( ch, BACKUP_BUILDING ); backup( ch, BACKUP_AREAS ); backup( ch, BACKUP_SYSTEM ); backup( ch, BACKUP_PFILES ); send_to_char( "Total MUD Backup complete.\n\r", ch ); return; } do_backup( ch, "" ); return; } /* ================ Backup handler -Nopey ================ */ void backup( CHAR_DATA * ch, int type ) { char cmd[1024]; char buf[MAX_INPUT_LENGTH]; /* * backup command */ sprintf( cmd, "tar -zcf %s %s", backup_fname_strings[type], backup_directory_strings[type] ); system( cmd ); /* * move file to backup directory */ sprintf( cmd, "mv %s %s", backup_fname_strings[type], backup_directory_strings[BACKUP_DIRECTORY] ); system( cmd ); sprintf( buf, "BACKUP(%s): %s file written, moved to backup directory.", ch->name, backup_fname_strings[type] ); log_string( buf ); return; }