From f5bd2c5b5ed0a68120e1fd9b86ce67f9b496e00a Mon Sep 17 00:00:00 2001 From: "sgehani%netscape.com" Date: Mon, 10 Jul 2000 21:02:16 +0000 Subject: [PATCH] Make Install.execute() work on Unix. [nsbeta2+ b = 37168; r = ssu] git-svn-id: svn://10.0.0.236/trunk@73940 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/xpinstall/src/ScheduledTasks.cpp | 65 +++++++++++----------- mozilla/xpinstall/src/ScheduledTasks.h | 2 + mozilla/xpinstall/src/nsInstallExecute.cpp | 2 +- 3 files changed, 37 insertions(+), 32 deletions(-) diff --git a/mozilla/xpinstall/src/ScheduledTasks.cpp b/mozilla/xpinstall/src/ScheduledTasks.cpp index c5eeeccf0e2..2126885e0b2 100644 --- a/mozilla/xpinstall/src/ScheduledTasks.cpp +++ b/mozilla/xpinstall/src/ScheduledTasks.cpp @@ -138,51 +138,54 @@ PRInt32 ReplaceExistingWindowsFile(nsIFile* currentSpec, nsIFile* finalSpec) PRInt32 DeleteFileNowOrSchedule(nsIFile* filename) { - - PRBool flagExists; - PRInt32 result = nsInstall::SUCCESS; + PRBool flagExists; + PRInt32 result = nsInstall::SUCCESS; filename->Delete(PR_FALSE); filename->Exists(&flagExists); if (flagExists) + result = ScheduleFileForDeletion(filename); + + return result; +} + +PRInt32 ScheduleFileForDeletion(nsIFile *filename) +{ + // could not delete, schedule it for later + + RKEY newkey; + HREG reg; + REGERR err; + PRInt32 result = nsInstall::UNEXPECTED_ERROR; + + err = NR_RegOpen("", ®) ; + if ( err == REGERR_OK ) { - // could not delete, schedule it for later - - RKEY newkey; - HREG reg; - REGERR err; - result = nsInstall::UNEXPECTED_ERROR; - - err = NR_RegOpen("", ®) ; + err = NR_RegAddKey(reg,ROOTKEY_PRIVATE,REG_DELETE_LIST_KEY,&newkey); if ( err == REGERR_OK ) { - err = NR_RegAddKey(reg,ROOTKEY_PRIVATE,REG_DELETE_LIST_KEY,&newkey); + char valname[20]; + char* fnamestr = nsnull; + + err = NR_RegGetUniqueName( reg, valname, sizeof(valname) ); if ( err == REGERR_OK ) { - char valname[20]; - char* fnamestr = nsnull; - - err = NR_RegGetUniqueName( reg, valname, sizeof(valname) ); - if ( err == REGERR_OK ) + nsresult rv; + rv = GetPersistentStringFromSpec( filename, &fnamestr ); + if ( NS_SUCCEEDED(rv) && fnamestr ) { - nsresult rv; - rv = GetPersistentStringFromSpec( filename, &fnamestr ); - if ( NS_SUCCEEDED(rv) && fnamestr ) - { + err = NR_RegSetEntry( reg, newkey, valname, + REGTYPE_ENTRY_BYTES, + (void*)fnamestr, + strlen(fnamestr)+1); - err = NR_RegSetEntry( reg, newkey, valname, - REGTYPE_ENTRY_BYTES, - (void*)fnamestr, - strlen(fnamestr)+1); - - if ( err == REGERR_OK ) - result = nsInstall::REBOOT_NEEDED; - } + if ( err == REGERR_OK ) + result = nsInstall::REBOOT_NEEDED; } } - - NR_RegClose(reg); } + + NR_RegClose(reg); } return result; diff --git a/mozilla/xpinstall/src/ScheduledTasks.h b/mozilla/xpinstall/src/ScheduledTasks.h index a31906acbd0..67e7b6f0634 100644 --- a/mozilla/xpinstall/src/ScheduledTasks.h +++ b/mozilla/xpinstall/src/ScheduledTasks.h @@ -21,6 +21,7 @@ * Contributor(s): * Daniel Veditz * Douglas Turner + * Samir Gehani */ #ifndef __SCHEDULEDTASKS_H__ @@ -36,6 +37,7 @@ PR_BEGIN_EXTERN_C PRInt32 DeleteFileNowOrSchedule(nsIFile* filename); PRInt32 ReplaceFileNowOrSchedule(nsIFile* tmpfile, nsIFile* target ); +PRInt32 ScheduleFileForDeletion(nsIFile* filename); void PerformScheduledTasks(HREG reg); diff --git a/mozilla/xpinstall/src/nsInstallExecute.cpp b/mozilla/xpinstall/src/nsInstallExecute.cpp index cd04d55efda..aeb43b449bc 100644 --- a/mozilla/xpinstall/src/nsInstallExecute.cpp +++ b/mozilla/xpinstall/src/nsInstallExecute.cpp @@ -105,7 +105,7 @@ PRInt32 nsInstallExecute::Complete() if(cArgs[0]) delete(cArgs[0]); - DeleteFileNowOrSchedule( app ); + ScheduleFileForDeletion( app ); return result; }