/***************************************************************************
* Original Diku Mud copyright (C) 1990, 1991 by Sebastian Hammer, *
* Michael Seifert, Hans Henrik Strfeldt, Tom Madsen, and Katja Nyboe. *
* *
* Merc Diku Mud improvments copyright (C) 1992, 1993 by Michael *
* Chastain, Michael Quan, and Mitchell Tse. *
* *
* In order to use any part of this Merc Diku Mud, you must comply with *
* both the original Diku license in 'license.doc' as well the Merc *
* license in 'license.txt'. In particular, you may not remove either of *
* these copyright notices. *
* *
* Much time and thought has gone into this software and you are *
* benefitting. We hope that you share your changes too. What goes *
* around, comes around. *
**************************************************************************/
/***************************************************************************
* ROM 2.4 is copyright 1993-1998 Russ Taylor *
* ROM has been brought to you by the ROM consortium *
* Russ Taylor (rtaylor@hypercube.org) *
* Gabrielle Taylor (gtaylor@hypercube.org) *
* Brian Moore (zump@rom.org) *
* By using this code, you have agreed to follow the terms of the *
* ROM license, in the file Rom24/doc/rom.license *
**************************************************************************/
/***************************************************************************
* Written by trent for Forgotten Valor (valor.kyndig.com port 3666) *
***************************************************************************/
#if defined(macintosh)
#include <types.h>
#include <time.h>
#else
#include <sys/types.h>
#include <sys/time.h>
#include <sys/stat.h>
#endif
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <dirent.h>
#include <unistd.h>
#include <time.h>
#include "merc.h"
void archive( char*, char*, int );
void wipe_pfiles()
{
DIR *dp;
struct dirent *ep;
// char letter ;
char dir[MAX_STRING_LENGTH];
sprintf( dir , "%s", PLAYER_DIR );
dp = opendir (dir);
if (dp != NULL)
{
while ( (ep = readdir (dp)) )
{
if( ep->d_name[0] != '.' )
archive( dir, ep->d_name, PFILE_EXPIRE );
}
(void) closedir (dp);
}
else
bugf( "Could not open %s.", dir );
}
void archive( char* dir, char* name , int days)
{
char old_file[MAX_STRING_LENGTH];
char new_file[MAX_STRING_LENGTH];
char buf[MAX_STRING_LENGTH];
struct stat fst;
sprintf( old_file, "%s%s" , dir, name );
if ( stat( old_file, &fst ) != -1 )
{
if( difftime( current_time , fst.st_mtime ) > days*60*60*24 )
{
logsf(NULL, "Archiving %s" , name );
sprintf( new_file, "%s%s" , ARCHIVE_DIR, capitalize(name) );
rename( old_file, new_file );
sprintf( buf, "gzip -fq %s", new_file );
system( buf );
}
}
}
void remove_inactive( char* dir , int days)
{
DIR *dp;
struct dirent *ep;
struct stat fst;
char file[MAX_STRING_LENGTH];
dp = opendir (dir);
if (dp != NULL)
{
while ( (ep = readdir (dp)) )
{
if( ep->d_name[0] != '.' )
{
sprintf( file, "%s%s", dir , ep->d_name );
if( (stat( file , &fst ) != -1)
&& difftime( current_time , fst.st_mtime ) > days*60*60*24 )
{
logsf(NULL, "Removing %s", ep->d_name );
unlink(file);
}
}
}
(void) closedir (dp);
}
else
bugf( "Could not open %s.", dir );
}