Merge M17 branch fix for nsbeta2+ bugscape bug 1895: get rid of error 340 in

Mac installer during XPCOM autoreg by delaying so fragment registry has time
to update newly extracted shlbs.

[branch fix r=dveditz; a=pdt]


git-svn-id: svn://10.0.0.236/trunk@76005 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
sgehani%netscape.com 2000-08-10 19:05:19 +00:00
parent 8f76cd0e1a
commit 9f8f3d16fc
6 changed files with 57 additions and 13 deletions

View File

@ -28,7 +28,8 @@
#include "zipstub.h"
#include "zipfile.h"
#include "nsAppleSingleDecoder.h"
#include "TextUtils.h"
#include <TextUtils.h>
static FSSpec coreFileList[kMaxCoreFiles];
static short currCoreFile = 0;
@ -54,6 +55,7 @@ ExtractCoreFile(short srcVRefNum, long srcDirID, short tgtVRefNum, long tgtDirID
{
OSErr err = noErr;
StringPtr coreFile = 0;
UInt32 endTicks;
short fullPathLen = 0;
Handle fullPathH = 0;
Ptr fullPathStr = 0;
@ -124,6 +126,13 @@ cleanup:
if (fullPathStr)
DisposePtr(fullPathStr);
/* pause till frag registry is updated */
endTicks = TickCount() + 60;
while (TickCount() < endTicks)
{
YieldToAnyThread();
}
return err;
}
@ -186,6 +195,8 @@ InflateFiles(void *hZip, void *hFind, short tgtVRefNum, long tgtDirID)
while (!bFoundAll)
{
YieldToAnyThread();
/* find next item if one exists */
rv = ZIP_FindNext( hFind, filename, 255 );
if (rv==ZIP_ERR_FNF)
@ -276,7 +287,7 @@ InflateFiles(void *hZip, void *hFind, short tgtVRefNum, long tgtDirID)
if (fullPathStr)
DisposePtr(fullPathStr);
}
return err;
}

View File

@ -158,11 +158,11 @@ void HandleKeyDown(EventRecord* evt)
return;
case kTerminalID:
if (!gInstallStarted)
{
{
DisableNavButtons();
ClearSiteSelector();
gInstallStarted = true;
SpawnSDThread(Install, &tid);
gInstallStarted = true;
}
return;
default:

View File

@ -153,7 +153,7 @@ pascal void* Install(void* unused)
}
SetZone(ourHZ);
gSDDlg = false;
FSpDelete(&idiSpec);
}
else
@ -463,14 +463,13 @@ GenerateIDIFromOpt(Str255 idiName, long dirID, short vRefNum, FSSpec *idiSpec)
Str255 pkeybuf;
FSSpec fsExists;
StringPtr pcurrArchive = 0;
err = FSMakeFSSpec(vRefNum, dirID, idiName, idiSpec);
if ((err != noErr) && (err != fnfErr))
{
ErrorHandler(err);
return false;
}
err = FSpCreate(idiSpec, 'NSCP', 'TEXT', smSystemScript);
if ( (err != noErr) && (err != dupFNErr))
{
@ -517,7 +516,7 @@ GenerateIDIFromOpt(Str255 idiName, long dirID, short vRefNum, FSSpec *idiSpec)
// get file number
fnum = ltoa(compsDone);
// construct through concatenation [File<num>]\r
GetIndString(pkeybuf, rIDIKeys, sFile);
keybuf = PascalToC(pkeybuf);
@ -627,7 +626,6 @@ GenerateIDIFromOpt(Str255 idiName, long dirID, short vRefNum, FSSpec *idiSpec)
}
if (fnum)
free(fnum);
compsDone++;
// XXX shouldn't this be #if MOZILLA == 1
}

View File

@ -98,6 +98,7 @@ void Init(void)
gDone = false;
InitManagers();
InitControlsObject();
CleanTemp();
#if (SDINST_IS_DLL == 1) && (MOZILLA == 0)
if (!InitSDLib())
@ -197,6 +198,7 @@ InitOptObject(void)
err = FSMakeFSSpec(gControls->opt->vRefNum, 0, "\p", &tmp);
pstrcpy( gControls->opt->folder, tmp.name );
err = FSpGetDirectoryID( &tmp, &gControls->opt->dirID, &isDir );
}
void
@ -241,6 +243,39 @@ void InitManagers(void)
FlushEvents(everyEvent, 0);
}
void CleanTemp(void)
{
OSErr err = noErr;
short vRefNum;
long dirID;
FSSpec viewerFSp;
#ifdef MIW_DEBUG
Boolean isDir = false;
#endif
#ifndef MIW_DEBUG
/* get "viewer" in "Temporary Items" folder */
ERR_CHECK(FindFolder(kOnSystemDisk, kTemporaryFolderType, kCreateFolder, &vRefNum, &dirID));
err = FSMakeFSSpec(vRefNum, dirID, kViewerFolder, &viewerFSp);
#else
/* for DEBUG builds temp is "<currProcessVolume>:Temp NSInstall:" */
ERR_CHECK(GetCWD(&dirID, &vRefNum));
err = FSMakeFSSpec(vRefNum, 0, kTempFolder, &viewerFSp);
if (err == fnfErr)
return; /* no debug temp exists */
err = FSpGetDirectoryID(&viewerFSp, &dirID, &isDir);
if (err != noErr || !isDir)
return;
err = FSMakeFSSpec(vRefNum, dirID, kViewerFolder, &viewerFSp);
#endif
/* whack the viewer folder if it exists */
if (err == noErr)
{
ERR_CHECK(DeleteDirectory(viewerFSp.vRefNum, viewerFSp.parID, viewerFSp.name));
}
}
void MakeMenus(void)
{
Handle mbarHdl;
@ -284,8 +319,7 @@ void MainEventLoop(void)
while (!gDone)
{
if (gSDDlg)
YieldToAnyThread(); /* SmartDownload dialog thread */
YieldToAnyThread(); /* SmartDownload dialog thread */
if (!gDone) /* after cx switch back ensure not done */
{
@ -402,7 +436,7 @@ void Shutdown(void)
if (gControls)
DisposePtr( (char*) gControls);
frontWin = FrontWindow();
MIWMagic = GetWRefCon(frontWin);
if (MIWMagic != kMIWMagic)

View File

@ -571,6 +571,7 @@ void InitControlsObject(void);
OSErr GetCWD(long *outDirID, short *outVRefNum);
void InitOptObject(void);
void InitManagers(void);
void CleanTemp(void);
void MakeMenus(void);
void MainEventLoop(void);
void ErrorHandler(short);

View File

@ -302,8 +302,8 @@ InTerminalContent(EventRecord* evt, WindowPtr wCurrPtr)
{
DisableNavButtons();
ClearSiteSelector();
gInstallStarted = true;
SpawnSDThread(Install, &tid);
gInstallStarted = true;
return;
}
}