diff --git a/mozilla/xpinstall/wizard/mac/src/Deflation.c b/mozilla/xpinstall/wizard/mac/src/Deflation.c index 2e33f939282..9d3dd8382f0 100644 --- a/mozilla/xpinstall/wizard/mac/src/Deflation.c +++ b/mozilla/xpinstall/wizard/mac/src/Deflation.c @@ -28,7 +28,8 @@ #include "zipstub.h" #include "zipfile.h" #include "nsAppleSingleDecoder.h" -#include "TextUtils.h" + +#include 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; } diff --git a/mozilla/xpinstall/wizard/mac/src/EvtHandlers.c b/mozilla/xpinstall/wizard/mac/src/EvtHandlers.c index 8dbbda120c4..5d6e0609ce8 100644 --- a/mozilla/xpinstall/wizard/mac/src/EvtHandlers.c +++ b/mozilla/xpinstall/wizard/mac/src/EvtHandlers.c @@ -158,11 +158,11 @@ void HandleKeyDown(EventRecord* evt) return; case kTerminalID: if (!gInstallStarted) - { + { DisableNavButtons(); ClearSiteSelector(); + gInstallStarted = true; SpawnSDThread(Install, &tid); - gInstallStarted = true; } return; default: diff --git a/mozilla/xpinstall/wizard/mac/src/InstAction.c b/mozilla/xpinstall/wizard/mac/src/InstAction.c index 13f7a15d913..8a27f2baa74 100644 --- a/mozilla/xpinstall/wizard/mac/src/InstAction.c +++ b/mozilla/xpinstall/wizard/mac/src/InstAction.c @@ -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]\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 } diff --git a/mozilla/xpinstall/wizard/mac/src/MacInstallWizard.c b/mozilla/xpinstall/wizard/mac/src/MacInstallWizard.c index fbf8f3cf183..8877e565e3f 100644 --- a/mozilla/xpinstall/wizard/mac/src/MacInstallWizard.c +++ b/mozilla/xpinstall/wizard/mac/src/MacInstallWizard.c @@ -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 ":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) diff --git a/mozilla/xpinstall/wizard/mac/src/MacInstallWizard.h b/mozilla/xpinstall/wizard/mac/src/MacInstallWizard.h index cd06c75de27..e5f1c1a52fb 100644 --- a/mozilla/xpinstall/wizard/mac/src/MacInstallWizard.h +++ b/mozilla/xpinstall/wizard/mac/src/MacInstallWizard.h @@ -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); diff --git a/mozilla/xpinstall/wizard/mac/src/TerminalWin.c b/mozilla/xpinstall/wizard/mac/src/TerminalWin.c index 1794ca8c5f1..dc5835c943c 100644 --- a/mozilla/xpinstall/wizard/mac/src/TerminalWin.c +++ b/mozilla/xpinstall/wizard/mac/src/TerminalWin.c @@ -302,8 +302,8 @@ InTerminalContent(EventRecord* evt, WindowPtr wCurrPtr) { DisableNavButtons(); ClearSiteSelector(); + gInstallStarted = true; SpawnSDThread(Install, &tid); - gInstallStarted = true; return; } }