APP-COMM-Capitel/capitel/source.os2/SYSFILE.C

123 lines
3.0 KiB
C

#define INCL_DOSMISC
#include <os2.h>
#include <stdio.h>
#include <string.h>
#include <time.h>
#include <stdlib.h>
#include "capitel.h"
#include "..\..\common\source\version.h"
#include "..\..\common\source\global.h"
#include "texte.h"
//#include "..\..\common\source\texte.h"
#define BASEDIR ";]PT3]"
#define BOOTDIR "CPPU]"
#define PDDNAME "QPJOUEE/TZT"
#define DAYS 62 // Number of Evaluation Days
void MsgBox( char * );
void ErrorBox( char *, HWND );
char textmsg[];
short checkSystemFile( void )
{
char filename[256], appver[5];
short i;
APIRET rc;
HFILE FileHandle = 0;
ULONG ActionTaken, bootdrive, version;
FILESTATUS3 FileInfo = {{0}};
struct tm *ptmbuf;
struct tm tmbuf;
time_t tod, past, usetime;
short HOURMINSEC;
strcpy( appver, APPVER );
appver[1] = appver[2];
appver[2] = 0;
HOURMINSEC = (short) atoi( appver );
HOURMINSEC &= 31;
DosQuerySysInfo( QSV_BOOT_DRIVE, QSV_BOOT_DRIVE, &bootdrive,
sizeof( bootdrive ) );
DosQuerySysInfo( QSV_VERSION_MINOR, QSV_VERSION_MINOR, &version,
sizeof( version ) );
if( version < 30 )
sprintf( filename, "%c%s%s", bootdrive+65, BASEDIR, PDDNAME );
else
sprintf( filename, "%c%s%s%s", bootdrive+65, BASEDIR, BOOTDIR, PDDNAME );
for( i=0 ; i < strlen( filename ) ; i++ )
filename[i] = filename[i]-1;
rc = DosOpen( filename, &FileHandle, &ActionTaken, 0L, 0L,
OPEN_ACTION_FAIL_IF_NEW | OPEN_ACTION_OPEN_IF_EXISTS,
OPEN_SHARE_DENYREADWRITE | OPEN_ACCESS_READWRITE, 0L );
if( rc )
return 0;
rc = DosQueryFileInfo( FileHandle, FIL_STANDARD, &FileInfo,
sizeof( FILESTATUS3 ) );
if( rc )
return 0;
time( &tod );
ptmbuf = localtime( &tod );
if( !((FileInfo.ftimeCreation.twosecs == HOURMINSEC) &&
(FileInfo.ftimeCreation.minutes == HOURMINSEC/2) &&
(FileInfo.ftimeCreation.hours == HOURMINSEC/3)) )
{
FileInfo.ftimeCreation.twosecs = HOURMINSEC;
FileInfo.ftimeCreation.minutes = HOURMINSEC/2;
FileInfo.ftimeCreation.hours = HOURMINSEC/3;
FileInfo.fdateCreation.day = ptmbuf->tm_mday;
FileInfo.fdateCreation.month = ptmbuf->tm_mon+1;
FileInfo.fdateCreation.year = ptmbuf->tm_year-80;
DosSetFileInfo( FileHandle, FIL_STANDARD, &FileInfo,
sizeof( FILESTATUS3 ) );
DosClose( FileHandle );
MsgBox( USECTEL );
return 1;
}
DosClose( FileHandle );
tmbuf.tm_sec = FileInfo.ftimeCreation.twosecs;
tmbuf.tm_min = FileInfo.ftimeCreation.minutes;
tmbuf.tm_hour = FileInfo.ftimeCreation.hours;
tmbuf.tm_mday = FileInfo.fdateCreation.day;
tmbuf.tm_mon = FileInfo.fdateCreation.month-1;
tmbuf.tm_year = FileInfo.fdateCreation.year+80;
past = mktime( &tmbuf );
usetime = (tod-past) / (24*3600);
if( usetime > DAYS )
return 0;
if( DAYS-usetime <= 31 )
{
sprintf( textmsg, COPY_EXP_IN_N_DAYS, DAYS-usetime );
ErrorBox( WARNING, hwndFrame );
}
return 1;
}