dbna/clans/
dbna/councils/
dbna/deity/
dbna/gods/
dbna/houses/
dbna/space/
/****************************************************************************
 * [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;

}