/****************************************************************************
* [S]imulated [M]edieval [A]dventure multi[U]ser [G]ame | *
* -----------------------------------------------------------| \\._.// *
* SmaugWiz (C) 1998 by Russ Pillsbury (Windows NT version) | (0...0) *
* -----------------------------------------------------------| ).:.( *
* SMAUG (C) 1994, 1995, 1996 by Derek Snider | {o o} *
* -----------------------------------------------------------| / ' ' \ *
* SMAUG code team: Thoric, Altrag, Blodkai, Narn, Haus, |~'~.VxvxV.~'~*
* Scryn, Swordbearer, Rennard, Tricops, and Gorog. | *
* ------------------------------------------------------------------------ *
* 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 Staerfeldt, Tom Madsen, and Katja Nyboe. *
****************************************************************************/
// SmaugFiles.cpp
#include "stdafx.h"
#include "smaug.h"
#include "SmaugFiles.h"
CString CSmaugFiles::MakeBackupName (const char* n)
{
CString b = n;
int pos = b.Find ('.');
if (pos >= 0) then
b = b.Left (pos);
b += ".bak";
return b;
}
BOOL CSmaugFiles::CreatePlayerDirectory (CString& Path, const char* name,
BOOL bBackup /* = FALSE */)
{
SmaugDirType dir = bBackup ? SD_BACKUP_DIR : SD_PLAYER_DIR;
CString Dr = FileTable.GetDir (dir) + '/' + name [0];
Path = Dr + '/' + name;
CFileStatus St;
CFile::GetStatus (Dr, St);
BOOL bChanged = FALSE;
if (St.m_attribute != 0x10) { // if not dir
if (! ::CreateDirectory (Dr, NULL)) {
CString Msg;
Path = FileTable.MakeName (dir, name);
if (bBackup) {
Msg.Format ("Saving Backup for Player %s in backup "
"directory root.", name);
} else {
Msg.Format ("Saving Player %s in player directory root.",
name);
}
bug (Msg);
bChanged = TRUE;
}
}
Path += bBackup ? ".bak" : ".dat";
return bChanged;
}
BOOL CSmaugFiles::Exists (const char* Fname)
{
CFileStatus St;
return CFile::GetStatus (Fname, St);
}
int CSmaugFiles::Remove (const char* Fname)
{
TRY CFile::Remove (Fname);
CATCH (CFileException, ex)
return ex->m_cause;
END_CATCH
return 0;
}
int CSmaugFiles::Rename (const char* OldName, const char* NewName)
{
TRY CFile::Rename (OldName, NewName);
CATCH (CFileException, ex)
return ex->m_cause;
END_CATCH
return 0;
}