rm6/
rm6/clans/
rm6/councils/
rm6/deity/
rm6/doc/mudprogs/
rm6/exchange/
rm6/gods/
rm6/homes/
rm6/nations/
rm6/player/
rm6/player/a/
rm6/src/RCS/
rm6/src/dmalloc/
rm6/src/dmalloc/bin/
rm6/src/dmalloc/include/
rm6/src/dmalloc/lib/
rm6/src/scripts/
rm6/src/utils/
/****************************************************************************
 * ResortMUD Version 5.0 was mainly programmed by Ntanel, Garinan, Josh,    *
 * Badastaz, Digifuzz, Senir, Kratas, Scion, Shogar and Tagith.             *
 * ResortMud Version 5.0b programed By Badastaz and Garinan
 * ------------------------------------------------------------------------ *
 * Copyright (C) 1996 - 2001 Haslage Net Electronics: MudWorld of Lorain,   *
 * Ohio.    ALL RIGHTS RESERVED    See /doc/RMLicense.txt for more details. *
 ****************************************************************************/

/*******************************************************
		Crimson Blade Codebase
	Copyright 2000-2001 Noplex (John Bellone)
	      http://www.crimsonblade.org
		admin@crimsonblade.org
	   Coders: Noplex, Krowe, Callinon
		 Based on Smaug 1.4a
*******************************************************/

/*
** Backup Version 2.0
** ------------------
** Changes and Updates from 1.0
*******************************
** - Killed about 100 lines of code, much cleaner.
** + Now moves files to a specified backup directory.
** + Even easiler installation.
** + Got rid of that nasty 'Lag' warning.
*/

#include "mud.h"

char *backup_fname_strings[] = {
   "pfiles_backup.tgz", "system_backup.tgz", "area_backup.tgz", "build_backup.tgz",
   "src_backup.tgz"
};

char *backup_directory_strings[] = {
   "../player/", "../system/", "../area/", "../build/", "../src/", "../mbackup/"
};

typedef enum
{
   BACKUP_PFILES, BACKUP_SYSTEM, BACKUP_AREAS, BACKUP_BUILD, BACKUP_SRC, BACKUP_DIRECTORY
} backup_types;

/*
======
Locals
======
*/
void cbackup args( ( CHAR_DATA * ch, int type ) );

/*
===============
Backup command	-Nopey
===============
*/
void do_cbackup( CHAR_DATA * ch, char *argument )
{
   if( !IS_IMMORTAL( ch ) || IS_NPC( ch ) )
   {
      send_to_char( "Huh?\r\n", ch );
      return;
   }

   if( argument[0] == '\0' )
   {
      send_to_char( "Syntax: cbackup <type>\r\n", ch );
      send_to_char( "Types being one of the following:\r\n" " pfiles systemfiles areas buildfiles src\r\n", ch );
      return;
   }

   if( !str_cmp( argument, "pfiles" ) )
   {
      cbackup( ch, BACKUP_PFILES );
      send_to_char( "Backup complete.\r\n", ch );
      return;
   }
   else if( !str_cmp( argument, "systemfiles" ) || !str_cmp( argument, "system" ) )
   {
      cbackup( ch, BACKUP_SYSTEM );
      send_to_char( "Backup complete.\r\n", ch );
      return;
   }
   else if( !str_cmp( argument, "area" ) || !str_cmp( argument, "areas" ) )
   {
      cbackup( ch, BACKUP_AREAS );
      send_to_char( "Backup complete.\r\n", ch );
      return;
   }
   else if( !str_cmp( argument, "build" ) || !str_cmp( argument, "buildfiles" ) )
   {
      cbackup( ch, BACKUP_BUILD );
      send_to_char( "Backup complete.\r\n", ch );
      return;
   }
   else if( !str_cmp( argument, "src" ) || !str_cmp( argument, "src" ) )
   {
      cbackup( ch, BACKUP_SRC );
      send_to_char( "Backup complete.\r\n", ch );
      return;
   }
   do_cbackup( ch, "" );
   return;
}

/*
================
Backup handler	-Nopey
================
*/
void cbackup( 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;
}