/* -*- 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 #include "ExpireBeta.h" #include #include 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; }