dmose%mozilla.org 68d3ee8a2a updating license to xPL 1.1
git-svn-id: svn://10.0.0.236/trunk@52535 18797224-902f-48f8-a5cc-f745e15eee43
1999-11-02 07:16:31 +00:00

140 lines
4.4 KiB
C

/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public
* License Version 1.1 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.mozilla.org/NPL/
*
* Software distributed under the License is distributed on an "AS
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
* implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code is mozilla.org code.
*
* The Initial Developer of the Original Code is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All
* Rights Reserved.
*
* Contributor(s):
*/
//Functions to check date and version info, and determine if Beta release is expired.
#include "pluginIncludes.h"
#include <Files.h>
#include "ExpireBeta.h"
#include <OSUtils.h>
#include <String.h>
extern short pluginResFile;
//Gets the date of the file whose reference number is passed in. This is meant to be for the account setup file
unsigned long GetFileCreationDate(short refNum)
{
FCBPBRec myFCB;
HParamBlockRec myHBR;
OSErr myErr;
//StringHandle myFileName;
Str32 name;
//Whoops, the following line won't work if we last looked at a different res fork.
//short refNum = CurResFile();
myFCB.ioFCBIndx = 0;
myFCB.ioVRefNum = 0;
myFCB.ioNamePtr = name;
myFCB.ioRefNum = refNum;
myFCB.ioCompletion = nil;
myErr = PBGetFCBInfoSync(&myFCB);
/*if (myErr != 0) {
ErrorAlert(5005, myErr);
return false;
}*/
if (myErr == noErr) {
if (myFCB.ioNamePtr != nil) {
myHBR.fileParam.ioNamePtr = myFCB.ioNamePtr;
myHBR.fileParam.ioVRefNum = myFCB.ioFCBVRefNum;
myHBR.fileParam.ioDirID = myFCB.ioFCBParID;
myHBR.fileParam.ioFDirIndex = 0; // use the dir & vRefNum;
myErr = PBHGetFInfoSync(&myHBR);
if (myErr == noErr) {
return (myHBR.fileParam.ioFlCrDat);
}
else
return (-1);
}
}
return -1;
}
//Beta Expire Alert code.
//Added 8/16/95 by A. Tayyeb
// Checks the 'vers' resource to see if this is anything but a release version, if not,
//and if current date is at least 2 weeks more than the creation date of the app, exists the application
//with a stopalert
Boolean CheckIfExpired(void)
{
//LOCALS
Handle hVersResourceHandle;
char pDevStageByte;
unsigned long CreationDate, CurrDate;
int AcctSetupFileRefNum;
StringHandle stringDaysToExpire;
long daysToExpire, secsToExpire;
short origFile = CurResFile();
//Open the resource, get the version info and creation date
UseResFile(pluginResFile);
hVersResourceHandle = (char **)GetResource('vers', 1);
HLock(hVersResourceHandle);
memcpy(&pDevStageByte,((char *)*hVersResourceHandle+2),1);
HUnlock(hVersResourceHandle);
//We identify the home res file because it will be the one containing the vers resource we find.
//Therefore, we need this call to get the file reference number for Account Setup. We can then pass
//GetFileCreationDate a good number.
AcctSetupFileRefNum=HomeResFile(hVersResourceHandle);
ReleaseResource(hVersResourceHandle);
CreationDate = GetFileCreationDate(AcctSetupFileRefNum);
//Current date
GetDateTime(&CurrDate);
//Now get the resource which tells us how long till expiration
//UseResFile(pluginResFile);
stringDaysToExpire = (unsigned char **)GetString(NumDaysStrID);
//Find seconds till expiration, if no resource was found, assume 0 secs (immediate expiration)
if (stringDaysToExpire != nil)
{
StringToNum(*stringDaysToExpire, &daysToExpire);
secsToExpire = (daysToExpire * 24 * 60 * 60);
}
else
{
daysToExpire = 0; secsToExpire = 0;
}
UseResFile(origFile);
//The real test - if the date is past expiration, and this is not a release version, return true.
if ((CurrDate > (CreationDate+secsToExpire)) && !(pDevStageByte & kVersRelease))
{
return kIsExpired;
}
return kIsNotExpired;
}