New wstring nsIRegistry interface, bug 23859;
new version registry name for mozilla, bug 10533; log now created by install wizards too, bug 26309; downloaded file cleanup moved into manager, bug 24249; scaffolding for bug 12817 and 12361 (conditional autoreg) git-svn-id: svn://10.0.0.236/trunk@60771 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
parent
43b3ef4c23
commit
121072fe86
@ -334,56 +334,56 @@ nsCharDetModule::RegisterSelf(nsIComponentManager *aCompMgr,
|
||||
rv = registry -> AddSubtree(nsIRegistry::Common,
|
||||
NS_CHARSET_DETECTOR_REG_BASE "off" ,&key);
|
||||
if (NS_SUCCEEDED(rv)) {
|
||||
rv = registry-> SetString(key, "type", "off");
|
||||
rv = registry-> SetString(key, "defaultEnglishText", "Off");
|
||||
rv = registry-> SetStringUTF8(key, "type", "off");
|
||||
rv = registry-> SetStringUTF8(key, "defaultEnglishText", "Off");
|
||||
}
|
||||
rv = registry -> AddSubtree(nsIRegistry::Common,
|
||||
NS_CHARSET_DETECTOR_REG_BASE "japsm" ,&key);
|
||||
if (NS_SUCCEEDED(rv)) {
|
||||
rv = registry-> SetString(key, "type", "japsm");
|
||||
rv = registry-> SetString(key, "defaultEnglishText", "Japanese");
|
||||
rv = registry-> SetStringUTF8(key, "type", "japsm");
|
||||
rv = registry-> SetStringUTF8(key, "defaultEnglishText", "Japanese");
|
||||
}
|
||||
rv = registry -> AddSubtree(nsIRegistry::Common,
|
||||
NS_CHARSET_DETECTOR_REG_BASE "kopsm" ,&key);
|
||||
if (NS_SUCCEEDED(rv)) {
|
||||
rv = registry-> SetString(key, "type", "kopsm");
|
||||
rv = registry-> SetString(key, "defaultEnglishText", "Korean");
|
||||
rv = registry-> SetStringUTF8(key, "type", "kopsm");
|
||||
rv = registry-> SetStringUTF8(key, "defaultEnglishText", "Korean");
|
||||
}
|
||||
rv = registry -> AddSubtree(nsIRegistry::Common,
|
||||
NS_CHARSET_DETECTOR_REG_BASE "zhtwpsm" ,&key);
|
||||
if (NS_SUCCEEDED(rv)) {
|
||||
rv = registry-> SetString(key, "type", "zhtwpsm");
|
||||
rv = registry-> SetString(key, "defaultEnglishText", "Traditional Chinese");
|
||||
rv = registry-> SetStringUTF8(key, "type", "zhtwpsm");
|
||||
rv = registry-> SetStringUTF8(key, "defaultEnglishText", "Traditional Chinese");
|
||||
}
|
||||
rv = registry -> AddSubtree(nsIRegistry::Common,
|
||||
NS_CHARSET_DETECTOR_REG_BASE "zhcnpsm" ,&key);
|
||||
if (NS_SUCCEEDED(rv)) {
|
||||
rv = registry-> SetString(key, "type", "zhtwpsm");
|
||||
rv = registry-> SetString(key, "defaultEnglishText", "Simplified Chinese");
|
||||
rv = registry-> SetStringUTF8(key, "type", "zhtwpsm");
|
||||
rv = registry-> SetStringUTF8(key, "defaultEnglishText", "Simplified Chinese");
|
||||
}
|
||||
rv = registry -> AddSubtree(nsIRegistry::Common,
|
||||
NS_CHARSET_DETECTOR_REG_BASE "zhpsm" ,&key);
|
||||
if (NS_SUCCEEDED(rv)) {
|
||||
rv = registry-> SetString(key, "type", "zhpsm");
|
||||
rv = registry-> SetString(key, "defaultEnglishText", "Chinese");
|
||||
rv = registry-> SetStringUTF8(key, "type", "zhpsm");
|
||||
rv = registry-> SetStringUTF8(key, "defaultEnglishText", "Chinese");
|
||||
}
|
||||
rv = registry -> AddSubtree(nsIRegistry::Common,
|
||||
NS_CHARSET_DETECTOR_REG_BASE "cjkpsm" ,&key);
|
||||
if (NS_SUCCEEDED(rv)) {
|
||||
rv = registry-> SetString(key, "type", "cjkpsm");
|
||||
rv = registry-> SetString(key, "defaultEnglishText", "East Asian");
|
||||
rv = registry-> SetStringUTF8(key, "type", "cjkpsm");
|
||||
rv = registry-> SetStringUTF8(key, "defaultEnglishText", "East Asian");
|
||||
}
|
||||
rv = registry -> AddSubtree(nsIRegistry::Common,
|
||||
NS_CHARSET_DETECTOR_REG_BASE "ruprob" ,&key);
|
||||
if (NS_SUCCEEDED(rv)) {
|
||||
rv = registry-> SetString(key, "type", "ruprob");
|
||||
rv = registry-> SetString(key, "defaultEnglishText", "Russian");
|
||||
rv = registry-> SetStringUTF8(key, "type", "ruprob");
|
||||
rv = registry-> SetStringUTF8(key, "defaultEnglishText", "Russian");
|
||||
}
|
||||
rv = registry -> AddSubtree(nsIRegistry::Common,
|
||||
NS_CHARSET_DETECTOR_REG_BASE "ukprob" ,&key);
|
||||
if (NS_SUCCEEDED(rv)) {
|
||||
rv = registry-> SetString(key, "type", "ukprob");
|
||||
rv = registry-> SetString(key, "defaultEnglishText", "Ukrainian");
|
||||
rv = registry-> SetStringUTF8(key, "type", "ukprob");
|
||||
rv = registry-> SetStringUTF8(key, "defaultEnglishText", "Ukrainian");
|
||||
}
|
||||
|
||||
done:
|
||||
|
||||
@ -406,7 +406,7 @@ nsExtensibleStringBundle::nsExtensibleStringBundle(const char * aRegistryKey,
|
||||
res = node->GetKey(&key);
|
||||
if (NS_FAILED(res)) goto done1;
|
||||
|
||||
res = registry->GetString(key, "name", &name);
|
||||
res = registry->GetStringUTF8(key, "name", &name);
|
||||
if (NS_FAILED(res)) goto done1;
|
||||
|
||||
res = sbServ->CreateBundle(name, aLocale, &bundle);
|
||||
|
||||
@ -78,10 +78,10 @@ nsUConverterRegSelf( const char* aFromCharset, \
|
||||
res = registry -> AddSubtree(nsIRegistry::Common, buff, &key); \
|
||||
if (NS_FAILED(res)) \
|
||||
goto done; \
|
||||
res = registry -> SetString(key, "source", aFromCharset); \
|
||||
res = registry -> SetStringUTF8(key, "source", aFromCharset); \
|
||||
if (NS_FAILED(res)) \
|
||||
goto done; \
|
||||
res = registry -> SetString(key, "destination", aToCharset); \
|
||||
res = registry -> SetStringUTF8(key, "destination", aToCharset); \
|
||||
if (NS_FAILED(res)) \
|
||||
goto done; \
|
||||
printf("RegSelf %s to %s converter complete\n", \
|
||||
|
||||
@ -228,7 +228,7 @@ nsresult nsCharsetConverterManager::RegisterConverterTitles(
|
||||
res = aRegistry->AddSubtree(nsIRegistry::Common, p, &key);
|
||||
nsAllocator::Free(p);
|
||||
if (NS_FAILED(res)) return res;
|
||||
res = aRegistry->SetString(key, "name", "resource:/res/charsetTitles.properties");
|
||||
res = aRegistry->SetStringUTF8(key, "name", "resource:/res/charsetTitles.properties");
|
||||
if (NS_FAILED(res)) return res;
|
||||
|
||||
return NS_OK;
|
||||
@ -248,7 +248,7 @@ nsresult nsCharsetConverterManager::RegisterConverterData(
|
||||
res = aRegistry->AddSubtree(nsIRegistry::Common, p, &key);
|
||||
nsAllocator::Free(p);
|
||||
if (NS_FAILED(res)) return res;
|
||||
res = aRegistry->SetString(key, "name", "resource:/res/charsetData.properties");
|
||||
res = aRegistry->SetStringUTF8(key, "name", "resource:/res/charsetData.properties");
|
||||
if (NS_FAILED(res)) return res;
|
||||
|
||||
return NS_OK;
|
||||
@ -314,10 +314,10 @@ void nsCharsetConverterManager::FillInfoArrays()
|
||||
res = node->GetKey(&key);
|
||||
if (NS_FAILED(res)) goto done1;
|
||||
|
||||
res = registry->GetString(key, "source", &src);
|
||||
res = registry->GetStringUTF8(key, "source", &src);
|
||||
if (NS_FAILED(res)) goto done1;
|
||||
|
||||
res = registry->GetString(key, "destination", &dest);
|
||||
res = registry->GetStringUTF8(key, "destination", &dest);
|
||||
if (NS_FAILED(res)) goto done1;
|
||||
|
||||
// XXX do an alias resolution here instead
|
||||
|
||||
@ -397,9 +397,9 @@ NS_IMETHODIMP nsConverterModule::RegisterSelf(nsIComponentManager *aCompMgr,
|
||||
nsCRT::free(cid_string);
|
||||
res = registry -> AddSubtree(nsIRegistry::Common, buff, &key);
|
||||
if (NS_FAILED(res)) goto done;
|
||||
res = registry -> SetString(key, "source", g_FactoryData[i].mCharsetSrc);
|
||||
res = registry -> SetStringUTF8(key, "source", g_FactoryData[i].mCharsetSrc);
|
||||
if (NS_FAILED(res)) goto done;
|
||||
res = registry -> SetString(key, "destination", g_FactoryData[i].mCharsetDest);
|
||||
res = registry -> SetStringUTF8(key, "destination", g_FactoryData[i].mCharsetDest);
|
||||
if (NS_FAILED(res)) goto done;
|
||||
}
|
||||
|
||||
|
||||
@ -419,9 +419,9 @@ NS_IMETHODIMP nsConverterModule::RegisterSelf(nsIComponentManager *aCompMgr,
|
||||
nsCRT::free(cid_string);
|
||||
res = registry -> AddSubtree(nsIRegistry::Common, buff, &key);
|
||||
if (NS_FAILED(res)) goto done;
|
||||
res = registry -> SetString(key, "source", g_FactoryData[i].mCharsetSrc);
|
||||
res = registry -> SetStringUTF8(key, "source", g_FactoryData[i].mCharsetSrc);
|
||||
if (NS_FAILED(res)) goto done;
|
||||
res = registry -> SetString(key, "destination", g_FactoryData[i].mCharsetDest);
|
||||
res = registry -> SetStringUTF8(key, "destination", g_FactoryData[i].mCharsetDest);
|
||||
if (NS_FAILED(res)) goto done;
|
||||
}
|
||||
|
||||
|
||||
@ -431,9 +431,9 @@ NS_IMETHODIMP nsConverterModule::RegisterSelf(nsIComponentManager *aCompMgr,
|
||||
nsCRT::free(cid_string);
|
||||
res = registry -> AddSubtree(nsIRegistry::Common, buff, &key);
|
||||
if (NS_FAILED(res)) goto done;
|
||||
res = registry -> SetString(key, "source", g_FactoryData[i].mCharsetSrc);
|
||||
res = registry -> SetStringUTF8(key, "source", g_FactoryData[i].mCharsetSrc);
|
||||
if (NS_FAILED(res)) goto done;
|
||||
res = registry -> SetString(key, "destination", g_FactoryData[i].mCharsetDest);
|
||||
res = registry -> SetStringUTF8(key, "destination", g_FactoryData[i].mCharsetDest);
|
||||
if (NS_FAILED(res)) goto done;
|
||||
}
|
||||
|
||||
|
||||
@ -365,9 +365,9 @@ NS_IMETHODIMP nsConverterModule::RegisterSelf(nsIComponentManager *aCompMgr,
|
||||
nsCRT::free(cid_string);
|
||||
res = registry -> AddSubtree(nsIRegistry::Common, buff, &key);
|
||||
if (NS_FAILED(res)) goto done;
|
||||
res = registry -> SetString(key, "source", g_FactoryData[i].mCharsetSrc);
|
||||
res = registry -> SetStringUTF8(key, "source", g_FactoryData[i].mCharsetSrc);
|
||||
if (NS_FAILED(res)) goto done;
|
||||
res = registry -> SetString(key, "destination", g_FactoryData[i].mCharsetDest);
|
||||
res = registry -> SetStringUTF8(key, "destination", g_FactoryData[i].mCharsetDest);
|
||||
if (NS_FAILED(res)) goto done;
|
||||
}
|
||||
|
||||
|
||||
@ -1060,9 +1060,9 @@ NS_IMETHODIMP nsConverterModule::RegisterSelf(nsIComponentManager *aCompMgr,
|
||||
nsCRT::free(cid_string);
|
||||
res = registry -> AddSubtree(nsIRegistry::Common, buff, &key);
|
||||
if (NS_FAILED(res)) goto done;
|
||||
res = registry -> SetString(key, "source", g_FactoryData[i].mCharsetSrc);
|
||||
res = registry -> SetStringUTF8(key, "source", g_FactoryData[i].mCharsetSrc);
|
||||
if (NS_FAILED(res)) goto done;
|
||||
res = registry -> SetString(key, "destination", g_FactoryData[i].mCharsetDest);
|
||||
res = registry -> SetStringUTF8(key, "destination", g_FactoryData[i].mCharsetDest);
|
||||
if (NS_FAILED(res)) goto done;
|
||||
}
|
||||
|
||||
|
||||
@ -445,9 +445,9 @@ NS_IMETHODIMP nsConverterModule::RegisterSelf(nsIComponentManager *aCompMgr,
|
||||
nsCRT::free(cid_string);
|
||||
res = registry -> AddSubtree(nsIRegistry::Common, buff, &key);
|
||||
if (NS_FAILED(res)) goto done;
|
||||
res = registry -> SetString(key, "source", g_FactoryData[i].mCharsetSrc);
|
||||
res = registry -> SetStringUTF8(key, "source", g_FactoryData[i].mCharsetSrc);
|
||||
if (NS_FAILED(res)) goto done;
|
||||
res = registry -> SetString(key, "destination", g_FactoryData[i].mCharsetDest);
|
||||
res = registry -> SetStringUTF8(key, "destination", g_FactoryData[i].mCharsetDest);
|
||||
if (NS_FAILED(res)) goto done;
|
||||
}
|
||||
|
||||
|
||||
@ -56,10 +56,10 @@
|
||||
#define MAC_REG "\pMozilla Registry"
|
||||
#define BEOS_REG "/mozilla/registry"
|
||||
|
||||
#define DEF_VERREG "/.netscape/registry"
|
||||
#define WIN_VERREG "\\nsreg.dat"
|
||||
#define MAC_VERREG "\pNetscape Registry"
|
||||
#define BEOS_VERREG "/mozilla/registry"
|
||||
#define DEF_VERREG "/.mozilla/mozver.dat"
|
||||
#define WIN_VERREG "\\mozver.dat"
|
||||
#define MAC_VERREG "\pMozilla Versions"
|
||||
#define BEOS_VERREG "/mozilla/mozver.dat"
|
||||
|
||||
|
||||
/* ------------------------------------------------------------------
|
||||
|
||||
@ -36,15 +36,21 @@ interface nsIRegistry : nsISupports
|
||||
const long ApplicationCustomRegistry = -1;
|
||||
|
||||
void open(in string regFile);
|
||||
void openWellKnownRegistry(in long regid);
|
||||
// Deprecated
|
||||
void openDefault();
|
||||
void close();
|
||||
void openWellKnownRegistry(in nsWellKnownRegistry regid);
|
||||
|
||||
void flush();
|
||||
boolean isOpen();
|
||||
|
||||
string getString(in nsRegistryKey baseKey, in string path);
|
||||
void setString(in nsRegistryKey baseKey, in string path, in string value);
|
||||
nsRegistryKey addKey(in nsRegistryKey baseKey, in wstring keyname);
|
||||
nsRegistryKey getKey(in nsRegistryKey baseKey, in wstring keyname);
|
||||
void removeKey(in nsRegistryKey baseKey, in wstring keyname);
|
||||
|
||||
wstring getString(in nsRegistryKey baseKey, in wstring valname);
|
||||
void setString(in nsRegistryKey baseKey, in wstring valname, in wstring value);
|
||||
|
||||
string getStringUTF8(in nsRegistryKey baseKey, in string path);
|
||||
void setStringUTF8(in nsRegistryKey baseKey, in string path, in string value);
|
||||
|
||||
PRInt32 getInt(in nsRegistryKey baseKey, in string path);
|
||||
void setInt(in nsRegistryKey baseKey, in string path, in PRInt32 value);
|
||||
PRInt64 getLongLong(in nsRegistryKey baseKey, in string path);
|
||||
|
||||
@ -33,6 +33,8 @@
|
||||
#include "nsCOMPtr.h"
|
||||
#include "nsILocalFile.h"
|
||||
#include "nsIServiceManager.h"
|
||||
#include "nsTextFormatter.h"
|
||||
|
||||
/* extra locking for the paranoid */
|
||||
/* #define EXTRA_THREADSAFE */
|
||||
#ifndef EXTRA_THREADSAFE
|
||||
@ -73,6 +75,8 @@ protected:
|
||||
#endif
|
||||
char *mCurRegFile; // these are to prevent open from opening the registry again
|
||||
nsWellKnownRegistry mCurRegID;
|
||||
|
||||
NS_IMETHOD Close();
|
||||
}; // nsRegistry
|
||||
|
||||
|
||||
@ -482,6 +486,7 @@ NS_IMETHODIMP nsRegistry::OpenWellKnownRegistry( nsWellKnownRegistry regid ) {
|
||||
return regerr2nsresult( err );
|
||||
}
|
||||
|
||||
#if 0
|
||||
/*-------------------------- nsRegistry::OpenDefault ---------------------------
|
||||
| Open the "default" registry; in the case of this libreg-based implementation |
|
||||
| that is done by passing a null file name pointer to NR_RegOpen. |
|
||||
@ -489,6 +494,7 @@ NS_IMETHODIMP nsRegistry::OpenWellKnownRegistry( nsWellKnownRegistry regid ) {
|
||||
NS_IMETHODIMP nsRegistry::OpenDefault() {
|
||||
return OpenWellKnownRegistry(nsIRegistry::ApplicationRegistry);
|
||||
}
|
||||
#endif
|
||||
|
||||
/*----------------------------- nsRegistry::Close ------------------------------
|
||||
| Tests the mReg handle and if non-null, closes the registry via NR_RegClose. |
|
||||
@ -530,11 +536,122 @@ NS_IMETHODIMP nsRegistry::IsOpen( PRBool *result ) {
|
||||
}
|
||||
|
||||
|
||||
/*--------------------------- nsRegistry::AddKey -------------------------------
|
||||
| Add a key into the registry or find an existing one. This is generally used |
|
||||
| instead of GetKey unless it's an error for the key not to exist already i
|
||||
------------------------------------------------------------------------------*/
|
||||
NS_IMETHODIMP nsRegistry::AddKey( nsRegistryKey baseKey, const PRUnichar *keyname, nsRegistryKey *_retval)
|
||||
{
|
||||
if ( !keyname )
|
||||
return NS_ERROR_NULL_POINTER;
|
||||
|
||||
nsString name( nsSubsumeStr( NS_CONST_CAST(PRUnichar*,keyname), PR_FALSE ) );
|
||||
char* utf8name = name.ToNewUTF8String();
|
||||
if ( !utf8name )
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
|
||||
nsresult rv = AddSubtree( baseKey, utf8name, _retval );
|
||||
|
||||
Recycle( utf8name );
|
||||
return rv;
|
||||
}
|
||||
|
||||
/*--------------------------- nsRegistry::GetKey -------------------------------
|
||||
| returns the nsRegistryKey associated with a given node in the registry |
|
||||
------------------------------------------------------------------------------*/
|
||||
NS_IMETHODIMP nsRegistry::GetKey(nsRegistryKey baseKey, const PRUnichar *keyname, nsRegistryKey *_retval)
|
||||
{
|
||||
if ( !keyname || !_retval )
|
||||
return NS_ERROR_NULL_POINTER;
|
||||
|
||||
nsString name( nsSubsumeStr( NS_CONST_CAST(PRUnichar*,keyname), PR_FALSE ) );
|
||||
char* utf8name = name.ToNewUTF8String();
|
||||
if ( !utf8name )
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
|
||||
nsresult rv = GetSubtree( baseKey, utf8name, _retval );
|
||||
|
||||
Recycle( utf8name );
|
||||
return rv;
|
||||
}
|
||||
|
||||
/*--------------------------- nsRegistry::RemoveKey ----------------------------
|
||||
| Delete a key from the registry |
|
||||
------------------------------------------------------------------------------*/
|
||||
NS_IMETHODIMP nsRegistry::RemoveKey(nsRegistryKey baseKey, const PRUnichar *keyname)
|
||||
{
|
||||
if ( !keyname )
|
||||
return NS_ERROR_NULL_POINTER;
|
||||
|
||||
nsString name( nsSubsumeStr( NS_CONST_CAST(PRUnichar*,keyname), PR_FALSE ) );
|
||||
char* utf8name = name.ToNewUTF8String();
|
||||
if ( !utf8name )
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
|
||||
nsresult rv = RemoveSubtree( baseKey, utf8name );
|
||||
|
||||
Recycle( utf8name );
|
||||
return rv;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsRegistry::GetString(nsRegistryKey baseKey, const PRUnichar *valname, PRUnichar **_retval)
|
||||
{
|
||||
nsresult rv = NS_OK;
|
||||
|
||||
// Make sure caller gave us place for result.
|
||||
if ( !valname || !_retval )
|
||||
return NS_ERROR_NULL_POINTER;
|
||||
|
||||
// initialize the return value
|
||||
*_retval = nsnull;
|
||||
char *tmpstr = nsnull;
|
||||
|
||||
nsString name( nsSubsumeStr( NS_CONST_CAST(PRUnichar*,valname), PR_FALSE ) );
|
||||
char* utf8name = name.ToNewUTF8String();
|
||||
if ( !utf8name )
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
|
||||
rv = GetStringUTF8( baseKey, utf8name, &tmpstr );
|
||||
if (NS_SUCCEEDED(rv))
|
||||
{
|
||||
*_retval = nsTextFormatter::smprintf( L"%s", tmpstr );
|
||||
nsCRT::free(tmpstr);
|
||||
if ( *_retval == nsnull )
|
||||
rv = NS_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
Recycle( utf8name );
|
||||
return rv;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsRegistry::SetString(nsRegistryKey baseKey, const PRUnichar *valname, const PRUnichar *value)
|
||||
{
|
||||
if ( !valname || ! value )
|
||||
return NS_ERROR_NULL_POINTER;
|
||||
|
||||
nsresult rv = NS_OK;
|
||||
|
||||
nsString name( nsSubsumeStr( NS_CONST_CAST(PRUnichar*,valname), PR_FALSE ) );
|
||||
nsString val( nsSubsumeStr( NS_CONST_CAST(PRUnichar*,value), PR_FALSE ) );
|
||||
char* utf8name = name.ToNewUTF8String();
|
||||
char* utf8val = val.ToNewUTF8String();
|
||||
|
||||
if ( utf8name && utf8val )
|
||||
rv = SetStringUTF8( baseKey, utf8name, utf8val );
|
||||
else
|
||||
rv = NS_ERROR_OUT_OF_MEMORY;
|
||||
|
||||
if ( utf8name ) Recycle(utf8name);
|
||||
if ( utf8val ) Recycle(utf8val);
|
||||
|
||||
return rv;
|
||||
}
|
||||
|
||||
/*--------------------------- nsRegistry::GetString ----------------------------
|
||||
| First, look for the entry using GetValueInfo. If found, and it's a string, |
|
||||
| allocate space for it and fetch the value. |
|
||||
------------------------------------------------------------------------------*/
|
||||
NS_IMETHODIMP nsRegistry::GetString( nsRegistryKey baseKey, const char *path, char **result ) {
|
||||
NS_IMETHODIMP nsRegistry::GetStringUTF8( nsRegistryKey baseKey, const char *path, char **result ) {
|
||||
nsresult rv = NS_OK;
|
||||
REGERR err = REGERR_OK;
|
||||
|
||||
@ -601,7 +718,7 @@ NS_IMETHODIMP nsRegistry::GetString( nsRegistryKey baseKey, const char *path, ch
|
||||
/*--------------------------- nsRegistry::SetString ----------------------------
|
||||
| Simply sets the registry contents using NR_RegSetEntryString. |
|
||||
------------------------------------------------------------------------------*/
|
||||
NS_IMETHODIMP nsRegistry::SetString( nsRegistryKey baseKey, const char *path, const char *value ) {
|
||||
NS_IMETHODIMP nsRegistry::SetStringUTF8( nsRegistryKey baseKey, const char *path, const char *value ) {
|
||||
REGERR err = REGERR_OK;
|
||||
// Set the contents.
|
||||
PR_Lock(mregLock);
|
||||
|
||||
@ -249,7 +249,7 @@ main(int argc, char* argv[])
|
||||
rv = registry->AddSubtreeRaw(key, "?from=t/foo?to=k/foo", &key1);
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
|
||||
registry->Close();
|
||||
registry = 0; // close the registry
|
||||
|
||||
NS_WITH_SERVICE(nsIStreamConverterService, StreamConvService, kStreamConverterServiceCID, &rv);
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
|
||||
@ -99,10 +99,6 @@ nsProfileAccess::~nsProfileAccess()
|
||||
|
||||
PRBool openalready = PR_FALSE;
|
||||
|
||||
m_registry->IsOpen( &openalready);
|
||||
if (openalready)
|
||||
m_registry->Close();
|
||||
|
||||
// Release all resources.
|
||||
CRTFREEIF(mCurrentProfile);
|
||||
CRTFREEIF(mVersion);
|
||||
@ -133,11 +129,8 @@ nsProfileAccess::FreeProfileMembers(nsVoidArray *profiles, PRInt32 numElems)
|
||||
nsresult
|
||||
nsProfileAccess::CloseRegistry()
|
||||
{
|
||||
nsresult rv = NS_OK;
|
||||
|
||||
rv = m_registry->Close();
|
||||
|
||||
return rv;
|
||||
m_registry = 0;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
// Open the registry.
|
||||
@ -163,7 +156,7 @@ nsProfileAccess::OpenRegistry()
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
|
||||
if (!openalready)
|
||||
rv = m_registry->OpenDefault();
|
||||
rv = m_registry->OpenWellKnownRegistry(nsIRegistry::ApplicationRegistry);
|
||||
|
||||
return rv;
|
||||
}
|
||||
@ -329,10 +322,10 @@ nsProfileAccess::FillProfileInfo()
|
||||
}
|
||||
|
||||
// Get the current profile
|
||||
rv = m_registry->GetString(profilesTreeKey, REGISTRY_CURRENT_PROFILE_STRING, &mCurrentProfile);
|
||||
rv = m_registry->GetStringUTF8(profilesTreeKey, REGISTRY_CURRENT_PROFILE_STRING, &mCurrentProfile);
|
||||
|
||||
// Get the profile version
|
||||
rv = m_registry->GetString(profilesTreeKey, REGISTRY_VERSION_STRING, &mVersion);
|
||||
rv = m_registry->GetStringUTF8(profilesTreeKey, REGISTRY_VERSION_STRING, &mVersion);
|
||||
|
||||
if (mVersion == nsnull)
|
||||
{
|
||||
@ -342,7 +335,7 @@ nsProfileAccess::FillProfileInfo()
|
||||
}
|
||||
|
||||
// Get the preg info
|
||||
rv = m_registry->GetString(profilesTreeKey, REGISTRY_HAVE_PREG_INFO_STRING, &mHavePREGInfo);
|
||||
rv = m_registry->GetStringUTF8(profilesTreeKey, REGISTRY_HAVE_PREG_INFO_STRING, &mHavePREGInfo);
|
||||
|
||||
if (mHavePREGInfo == nsnull)
|
||||
{
|
||||
@ -393,19 +386,19 @@ nsProfileAccess::FillProfileInfo()
|
||||
rv = m_registry->GetSubtree(profilesTreeKey, profile, &profKey);
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
|
||||
rv = m_registry->GetString(profKey, REGISTRY_DIRECTORY_STRING, &directory);
|
||||
rv = m_registry->GetStringUTF8(profKey, REGISTRY_DIRECTORY_STRING, &directory);
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
|
||||
if (mFixRegEntries)
|
||||
FixRegEntry(&directory);
|
||||
|
||||
rv = m_registry->GetString(profKey, REGISTRY_MIGRATED_STRING, getter_Copies(isMigrated));
|
||||
rv = m_registry->GetStringUTF8(profKey, REGISTRY_MIGRATED_STRING, getter_Copies(isMigrated));
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
|
||||
rv = m_registry->GetString(profKey, REGISTRY_NC_PROFILE_NAME_STRING, getter_Copies(NCProfileName));
|
||||
rv = m_registry->GetString(profKey, REGISTRY_NC_SERVICE_DENIAL_STRING, getter_Copies(NCDeniedService));
|
||||
rv = m_registry->GetString(profKey, REGISTRY_NC_USER_EMAIL_STRING, getter_Copies(NCEmailAddress));
|
||||
rv = m_registry->GetString(profKey, REGISTRY_NC_HAVE_PREG_INFO_STRING, getter_Copies(NCHavePregInfo));
|
||||
rv = m_registry->GetStringUTF8(profKey, REGISTRY_NC_PROFILE_NAME_STRING, getter_Copies(NCProfileName));
|
||||
rv = m_registry->GetStringUTF8(profKey, REGISTRY_NC_SERVICE_DENIAL_STRING, getter_Copies(NCDeniedService));
|
||||
rv = m_registry->GetStringUTF8(profKey, REGISTRY_NC_USER_EMAIL_STRING, getter_Copies(NCEmailAddress));
|
||||
rv = m_registry->GetStringUTF8(profKey, REGISTRY_NC_HAVE_PREG_INFO_STRING, getter_Copies(NCHavePregInfo));
|
||||
|
||||
ProfileStruct* profileItem = new ProfileStruct();
|
||||
if (!profileItem)
|
||||
@ -663,15 +656,15 @@ nsProfileAccess::UpdateRegistry()
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
|
||||
// Set the current profile
|
||||
rv = m_registry->SetString(profilesTreeKey, REGISTRY_CURRENT_PROFILE_STRING, mCurrentProfile);
|
||||
rv = m_registry->SetStringUTF8(profilesTreeKey, REGISTRY_CURRENT_PROFILE_STRING, mCurrentProfile);
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
|
||||
// Set the registry version
|
||||
rv = m_registry->SetString(profilesTreeKey, REGISTRY_VERSION_STRING, mVersion);
|
||||
rv = m_registry->SetStringUTF8(profilesTreeKey, REGISTRY_VERSION_STRING, mVersion);
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
|
||||
// Set preg info
|
||||
rv = m_registry->SetString(profilesTreeKey, REGISTRY_HAVE_PREG_INFO_STRING, mHavePREGInfo);
|
||||
rv = m_registry->SetStringUTF8(profilesTreeKey, REGISTRY_HAVE_PREG_INFO_STRING, mHavePREGInfo);
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
|
||||
rv = m_registry->EnumerateSubtrees(profilesTreeKey, getter_AddRefs(enumKeys));
|
||||
@ -721,16 +714,16 @@ nsProfileAccess::UpdateRegistry()
|
||||
rv = m_registry->GetSubtree(profilesTreeKey, profile, &profKey);
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
|
||||
rv = m_registry->SetString(profKey, REGISTRY_DIRECTORY_STRING, profileItem->profileLocation);
|
||||
rv = m_registry->SetStringUTF8(profKey, REGISTRY_DIRECTORY_STRING, profileItem->profileLocation);
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
|
||||
rv = m_registry->SetString(profKey, REGISTRY_MIGRATED_STRING, profileItem->isMigrated);
|
||||
rv = m_registry->SetStringUTF8(profKey, REGISTRY_MIGRATED_STRING, profileItem->isMigrated);
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
|
||||
rv = m_registry->SetString(profKey, REGISTRY_NC_PROFILE_NAME_STRING, profileItem->NCProfileName);
|
||||
rv = m_registry->SetString(profKey, REGISTRY_NC_SERVICE_DENIAL_STRING, profileItem->NCDeniedService);
|
||||
rv = m_registry->SetString(profKey, REGISTRY_NC_USER_EMAIL_STRING, profileItem->NCEmailAddress);
|
||||
rv = m_registry->SetString(profKey, REGISTRY_NC_HAVE_PREG_INFO_STRING, profileItem->NCHavePregInfo);
|
||||
rv = m_registry->SetStringUTF8(profKey, REGISTRY_NC_PROFILE_NAME_STRING, profileItem->NCProfileName);
|
||||
rv = m_registry->SetStringUTF8(profKey, REGISTRY_NC_SERVICE_DENIAL_STRING, profileItem->NCDeniedService);
|
||||
rv = m_registry->SetStringUTF8(profKey, REGISTRY_NC_USER_EMAIL_STRING, profileItem->NCEmailAddress);
|
||||
rv = m_registry->SetStringUTF8(profKey, REGISTRY_NC_HAVE_PREG_INFO_STRING, profileItem->NCHavePregInfo);
|
||||
|
||||
profileItem->updateProfileEntry = PR_FALSE;
|
||||
}
|
||||
@ -749,16 +742,16 @@ nsProfileAccess::UpdateRegistry()
|
||||
rv = m_registry->AddSubtree(profilesTreeKey, profileItem->profileName, &profKey);
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
|
||||
rv = m_registry->SetString(profKey, REGISTRY_DIRECTORY_STRING, profileItem->profileLocation);
|
||||
rv = m_registry->SetStringUTF8(profKey, REGISTRY_DIRECTORY_STRING, profileItem->profileLocation);
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
|
||||
rv = m_registry->SetString(profKey, REGISTRY_MIGRATED_STRING, profileItem->isMigrated);
|
||||
rv = m_registry->SetStringUTF8(profKey, REGISTRY_MIGRATED_STRING, profileItem->isMigrated);
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
|
||||
rv = m_registry->SetString(profKey, REGISTRY_NC_PROFILE_NAME_STRING, profileItem->NCProfileName);
|
||||
rv = m_registry->SetString(profKey, REGISTRY_NC_SERVICE_DENIAL_STRING, profileItem->NCDeniedService);
|
||||
rv = m_registry->SetString(profKey, REGISTRY_NC_USER_EMAIL_STRING, profileItem->NCEmailAddress);
|
||||
rv = m_registry->SetString(profKey, REGISTRY_NC_HAVE_PREG_INFO_STRING, profileItem->NCHavePregInfo);
|
||||
rv = m_registry->SetStringUTF8(profKey, REGISTRY_NC_PROFILE_NAME_STRING, profileItem->NCProfileName);
|
||||
rv = m_registry->SetStringUTF8(profKey, REGISTRY_NC_SERVICE_DENIAL_STRING, profileItem->NCDeniedService);
|
||||
rv = m_registry->SetStringUTF8(profKey, REGISTRY_NC_USER_EMAIL_STRING, profileItem->NCEmailAddress);
|
||||
rv = m_registry->SetStringUTF8(profKey, REGISTRY_NC_HAVE_PREG_INFO_STRING, profileItem->NCHavePregInfo);
|
||||
|
||||
profileItem->updateProfileEntry = PR_FALSE;
|
||||
}
|
||||
@ -878,7 +871,7 @@ nsProfileAccess::Get4xProfileInfo(const char *registryName)
|
||||
|
||||
nsXPIDLCString profLoc;
|
||||
|
||||
rv = oldReg->GetString( key, "ProfileLocation", getter_Copies(profLoc));
|
||||
rv = oldReg->GetStringUTF8( key, "ProfileLocation", getter_Copies(profLoc));
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
|
||||
#if defined(DEBUG_profile)
|
||||
@ -911,7 +904,6 @@ nsProfileAccess::Get4xProfileInfo(const char *registryName)
|
||||
rv = enumKeys->Next();
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
}
|
||||
oldReg->Close();
|
||||
|
||||
#elif defined (XP_BEOS)
|
||||
#else
|
||||
|
||||
@ -80,4 +80,4 @@ install:: $(LIBRARY)
|
||||
$(MAKE_INSTALL) $(LIBRARY) $(DIST)\lib
|
||||
|
||||
clobber::
|
||||
rm -f $(DIST)\lib\$(LIBRARY_NAME).lib
|
||||
$(RM) $(DIST)\lib\$(LIBRARY_NAME).lib
|
||||
|
||||
@ -215,7 +215,7 @@ nsCategoryManager::initialize()
|
||||
}
|
||||
|
||||
nsXPIDLCString value;
|
||||
mRegistry->GetString(categoryKey, entryName, getter_Copies(value));
|
||||
mRegistry->GetStringUTF8(categoryKey, entryName, getter_Copies(value));
|
||||
AddCategoryEntry(categoryName, entryName, value, PR_FALSE, PR_FALSE, 0);
|
||||
}
|
||||
}
|
||||
@ -247,7 +247,7 @@ nsCategoryManager::persist( const char* aCategoryName, const char* aKey, const c
|
||||
status = mRegistry->AddSubtreeRaw(mCategoriesRegistryKey, aCategoryName, &categoryRegistryKey);
|
||||
|
||||
if ( NS_SUCCEEDED(status) )
|
||||
status = mRegistry->SetString(categoryRegistryKey, aKey, aValue);
|
||||
status = mRegistry->SetStringUTF8(categoryRegistryKey, aKey, aValue);
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
@ -45,6 +45,8 @@
|
||||
#include "xcDll.h"
|
||||
#include "prerror.h"
|
||||
#include "prmem.h"
|
||||
#include "nsIFile.h"
|
||||
//#include "mozreg.h"
|
||||
#include "NSReg.h"
|
||||
|
||||
#include "prcmon.h"
|
||||
@ -468,7 +470,7 @@ nsComponentManagerImpl::PlatformVersionCheck()
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
|
||||
nsXPIDLCString buf;
|
||||
nsresult err = mRegistry->GetString(xpcomKey, versionValueName,
|
||||
nsresult err = mRegistry->GetStringUTF8(xpcomKey, versionValueName,
|
||||
getter_Copies(buf));
|
||||
|
||||
// If there is a version mismatch or no version string, we got an old registry.
|
||||
@ -537,7 +539,7 @@ nsComponentManagerImpl::PlatformVersionCheck()
|
||||
|
||||
}
|
||||
|
||||
rv = mRegistry->SetString(xpcomKey,versionValueName, NS_XPCOM_COMPONENT_MANAGER_VERSION_STRING);
|
||||
rv = mRegistry->SetStringUTF8(xpcomKey,versionValueName, NS_XPCOM_COMPONENT_MANAGER_VERSION_STRING);
|
||||
if(NS_FAILED(rv))
|
||||
{
|
||||
PR_LOG(nsComponentManagerLog, PR_LOG_ALWAYS,
|
||||
@ -611,18 +613,18 @@ nsComponentManagerImpl::PlatformRegister(const char *cidString,
|
||||
if (NS_FAILED(rv)) return (rv);
|
||||
|
||||
|
||||
rv = mRegistry->SetString(IDkey,classNameValueName, className);
|
||||
rv = mRegistry->SetStringUTF8(IDkey,classNameValueName, className);
|
||||
if (progID)
|
||||
{
|
||||
rv = mRegistry->SetString(IDkey,progIDValueName, progID);
|
||||
rv = mRegistry->SetStringUTF8(IDkey,progIDValueName, progID);
|
||||
}
|
||||
rv = mRegistry->SetString(IDkey, inprocServerValueName, dll->GetPersistentDescriptorString());
|
||||
rv = mRegistry->SetStringUTF8(IDkey, inprocServerValueName, dll->GetPersistentDescriptorString());
|
||||
|
||||
if (progID)
|
||||
{
|
||||
nsRegistryKey progIDKey;
|
||||
rv = mRegistry->AddSubtreeRaw(mClassesKey, progID, &progIDKey);
|
||||
rv = mRegistry->SetString(progIDKey, classIDValueName, cidString);
|
||||
rv = mRegistry->SetStringUTF8(progIDKey, classIDValueName, cidString);
|
||||
}
|
||||
|
||||
// XXX Gross. LongLongs dont have a serialization format. This makes
|
||||
@ -655,7 +657,7 @@ nsComponentManagerImpl::PlatformUnregister(const char *cidString,
|
||||
rv = mRegistry->AddSubtreeRaw(mCLSIDKey, cidString, &cidKey);
|
||||
|
||||
char *progID = NULL;
|
||||
rv = mRegistry->GetString(cidKey, progIDValueName, &progID);
|
||||
rv = mRegistry->GetStringUTF8(cidKey, progIDValueName, &progID);
|
||||
if(NS_SUCCEEDED(rv))
|
||||
{
|
||||
mRegistry->RemoveSubtreeRaw(mClassesKey, progID);
|
||||
@ -703,7 +705,7 @@ nsComponentManagerImpl::PlatformFind(const nsCID &aCID, nsFactoryEntry* *result)
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
|
||||
nsXPIDLCString library;
|
||||
rv = mRegistry->GetString(cidKey, inprocServerValueName,
|
||||
rv = mRegistry->GetStringUTF8(cidKey, inprocServerValueName,
|
||||
getter_Copies(library));
|
||||
if (NS_FAILED(rv))
|
||||
{
|
||||
@ -712,7 +714,7 @@ nsComponentManagerImpl::PlatformFind(const nsCID &aCID, nsFactoryEntry* *result)
|
||||
}
|
||||
|
||||
nsXPIDLCString componentType;
|
||||
rv = mRegistry->GetString(cidKey, componentTypeValueName,
|
||||
rv = mRegistry->GetStringUTF8(cidKey, componentTypeValueName,
|
||||
getter_Copies(componentType));
|
||||
|
||||
if (NS_FAILED(rv))
|
||||
@ -750,7 +752,7 @@ nsComponentManagerImpl::PlatformProgIDToCLSID(const char *aProgID, nsCID *aClass
|
||||
if (NS_FAILED(rv)) return NS_ERROR_FACTORY_NOT_REGISTERED;
|
||||
|
||||
char *cidString;
|
||||
rv = mRegistry->GetString(progIDKey, classIDValueName, &cidString);
|
||||
rv = mRegistry->GetStringUTF8(progIDKey, classIDValueName, &cidString);
|
||||
if(NS_FAILED(rv)) return rv;
|
||||
if (!(aClass->Parse(cidString)))
|
||||
{
|
||||
@ -778,12 +780,12 @@ nsComponentManagerImpl::PlatformCLSIDToProgID(const nsCID *aClass,
|
||||
PR_FREEIF(cidStr);
|
||||
|
||||
char* classnameString;
|
||||
rv = mRegistry->GetString(cidKey, classNameValueName, &classnameString);
|
||||
rv = mRegistry->GetStringUTF8(cidKey, classNameValueName, &classnameString);
|
||||
if(NS_FAILED(rv)) return rv;
|
||||
*aClassName = classnameString;
|
||||
|
||||
char* progidString;
|
||||
rv = mRegistry->GetString(cidKey,progIDValueName,&progidString);
|
||||
rv = mRegistry->GetStringUTF8(cidKey,progIDValueName,&progidString);
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
*aProgID = progidString;
|
||||
|
||||
@ -826,7 +828,7 @@ nsresult nsComponentManagerImpl::PlatformPrePopulateRegistry()
|
||||
|
||||
// Create the CID entry
|
||||
nsXPIDLCString library;
|
||||
rv = mRegistry->GetString(cidKey, inprocServerValueName,
|
||||
rv = mRegistry->GetStringUTF8(cidKey, inprocServerValueName,
|
||||
getter_Copies(library));
|
||||
if (NS_FAILED(rv)) continue;
|
||||
nsCID aClass;
|
||||
@ -834,7 +836,7 @@ nsresult nsComponentManagerImpl::PlatformPrePopulateRegistry()
|
||||
if (!(aClass.Parse(cidString))) continue;
|
||||
|
||||
nsXPIDLCString componentType;
|
||||
if (NS_FAILED(mRegistry->GetString(cidKey, componentTypeValueName,
|
||||
if (NS_FAILED(mRegistry->GetStringUTF8(cidKey, componentTypeValueName,
|
||||
getter_Copies(componentType))))
|
||||
continue;
|
||||
|
||||
@ -879,7 +881,7 @@ nsresult nsComponentManagerImpl::PlatformPrePopulateRegistry()
|
||||
if (NS_FAILED(rv)) continue;
|
||||
|
||||
nsXPIDLCString cidString;
|
||||
rv = mRegistry->GetString(progidKey, classIDValueName,
|
||||
rv = mRegistry->GetStringUTF8(progidKey, classIDValueName,
|
||||
getter_Copies(cidString));
|
||||
if (NS_FAILED(rv)) continue;
|
||||
|
||||
@ -1700,7 +1702,7 @@ nsComponentManagerImpl::GetLoaderForType(const char *aType,
|
||||
return rv;
|
||||
|
||||
char *progID;
|
||||
rv = mRegistry->GetString(loaderKey, progIDValueName, &progID);
|
||||
rv = mRegistry->GetStringUTF8(loaderKey, progIDValueName, &progID);
|
||||
if (NS_FAILED(rv))
|
||||
return rv;
|
||||
|
||||
@ -1733,7 +1735,7 @@ nsComponentManagerImpl::RegisterComponentLoader(const char *aType, const char *a
|
||||
|
||||
/* XXX honour aReplace */
|
||||
|
||||
rv = mRegistry->SetString(loaderKey, progIDValueName, aProgID);
|
||||
rv = mRegistry->SetStringUTF8(loaderKey, progIDValueName, aProgID);
|
||||
|
||||
#ifdef DEBUG_shaver_off
|
||||
fprintf(stderr, "nNCI: registered %s as component loader for %s\n",
|
||||
@ -1762,21 +1764,21 @@ nsComponentManagerImpl::AddComponentToRegistry(const nsCID &aClass,
|
||||
goto out;
|
||||
|
||||
if (aClassName) {
|
||||
rv = mRegistry->SetString(IDKey, classNameValueName, aClassName);
|
||||
rv = mRegistry->SetStringUTF8(IDKey, classNameValueName, aClassName);
|
||||
if (NS_FAILED(rv))
|
||||
goto out;
|
||||
}
|
||||
|
||||
rv = mRegistry->SetString(IDKey, inprocServerValueName, aRegistryName);
|
||||
rv = mRegistry->SetStringUTF8(IDKey, inprocServerValueName, aRegistryName);
|
||||
if (NS_FAILED(rv))
|
||||
goto out;
|
||||
|
||||
rv = mRegistry->SetString(IDKey, componentTypeValueName, aType);
|
||||
rv = mRegistry->SetStringUTF8(IDKey, componentTypeValueName, aType);
|
||||
if (NS_FAILED(rv))
|
||||
goto out;
|
||||
|
||||
if (aProgID) {
|
||||
rv = mRegistry->SetString(IDKey, progIDValueName, aProgID);
|
||||
rv = mRegistry->SetStringUTF8(IDKey, progIDValueName, aProgID);
|
||||
if (NS_FAILED(rv))
|
||||
goto out;
|
||||
|
||||
@ -1784,7 +1786,7 @@ nsComponentManagerImpl::AddComponentToRegistry(const nsCID &aClass,
|
||||
rv = mRegistry->AddSubtreeRaw(mClassesKey, aProgID, &progIDKey);
|
||||
if (NS_FAILED(rv))
|
||||
goto out;
|
||||
rv = mRegistry->SetString(progIDKey, classIDValueName, cidString);
|
||||
rv = mRegistry->SetStringUTF8(progIDKey, classIDValueName, cidString);
|
||||
if (NS_FAILED(rv))
|
||||
goto out;
|
||||
}
|
||||
|
||||
@ -36,15 +36,21 @@ interface nsIRegistry : nsISupports
|
||||
const long ApplicationCustomRegistry = -1;
|
||||
|
||||
void open(in string regFile);
|
||||
void openWellKnownRegistry(in long regid);
|
||||
// Deprecated
|
||||
void openDefault();
|
||||
void close();
|
||||
void openWellKnownRegistry(in nsWellKnownRegistry regid);
|
||||
|
||||
void flush();
|
||||
boolean isOpen();
|
||||
|
||||
string getString(in nsRegistryKey baseKey, in string path);
|
||||
void setString(in nsRegistryKey baseKey, in string path, in string value);
|
||||
nsRegistryKey addKey(in nsRegistryKey baseKey, in wstring keyname);
|
||||
nsRegistryKey getKey(in nsRegistryKey baseKey, in wstring keyname);
|
||||
void removeKey(in nsRegistryKey baseKey, in wstring keyname);
|
||||
|
||||
wstring getString(in nsRegistryKey baseKey, in wstring valname);
|
||||
void setString(in nsRegistryKey baseKey, in wstring valname, in wstring value);
|
||||
|
||||
string getStringUTF8(in nsRegistryKey baseKey, in string path);
|
||||
void setStringUTF8(in nsRegistryKey baseKey, in string path, in string value);
|
||||
|
||||
PRInt32 getInt(in nsRegistryKey baseKey, in string path);
|
||||
void setInt(in nsRegistryKey baseKey, in string path, in PRInt32 value);
|
||||
PRInt64 getLongLong(in nsRegistryKey baseKey, in string path);
|
||||
|
||||
@ -33,6 +33,8 @@
|
||||
#include "nsCOMPtr.h"
|
||||
#include "nsILocalFile.h"
|
||||
#include "nsIServiceManager.h"
|
||||
#include "nsTextFormatter.h"
|
||||
|
||||
/* extra locking for the paranoid */
|
||||
/* #define EXTRA_THREADSAFE */
|
||||
#ifndef EXTRA_THREADSAFE
|
||||
@ -73,6 +75,8 @@ protected:
|
||||
#endif
|
||||
char *mCurRegFile; // these are to prevent open from opening the registry again
|
||||
nsWellKnownRegistry mCurRegID;
|
||||
|
||||
NS_IMETHOD Close();
|
||||
}; // nsRegistry
|
||||
|
||||
|
||||
@ -482,6 +486,7 @@ NS_IMETHODIMP nsRegistry::OpenWellKnownRegistry( nsWellKnownRegistry regid ) {
|
||||
return regerr2nsresult( err );
|
||||
}
|
||||
|
||||
#if 0
|
||||
/*-------------------------- nsRegistry::OpenDefault ---------------------------
|
||||
| Open the "default" registry; in the case of this libreg-based implementation |
|
||||
| that is done by passing a null file name pointer to NR_RegOpen. |
|
||||
@ -489,6 +494,7 @@ NS_IMETHODIMP nsRegistry::OpenWellKnownRegistry( nsWellKnownRegistry regid ) {
|
||||
NS_IMETHODIMP nsRegistry::OpenDefault() {
|
||||
return OpenWellKnownRegistry(nsIRegistry::ApplicationRegistry);
|
||||
}
|
||||
#endif
|
||||
|
||||
/*----------------------------- nsRegistry::Close ------------------------------
|
||||
| Tests the mReg handle and if non-null, closes the registry via NR_RegClose. |
|
||||
@ -530,11 +536,122 @@ NS_IMETHODIMP nsRegistry::IsOpen( PRBool *result ) {
|
||||
}
|
||||
|
||||
|
||||
/*--------------------------- nsRegistry::AddKey -------------------------------
|
||||
| Add a key into the registry or find an existing one. This is generally used |
|
||||
| instead of GetKey unless it's an error for the key not to exist already i
|
||||
------------------------------------------------------------------------------*/
|
||||
NS_IMETHODIMP nsRegistry::AddKey( nsRegistryKey baseKey, const PRUnichar *keyname, nsRegistryKey *_retval)
|
||||
{
|
||||
if ( !keyname )
|
||||
return NS_ERROR_NULL_POINTER;
|
||||
|
||||
nsString name( nsSubsumeStr( NS_CONST_CAST(PRUnichar*,keyname), PR_FALSE ) );
|
||||
char* utf8name = name.ToNewUTF8String();
|
||||
if ( !utf8name )
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
|
||||
nsresult rv = AddSubtree( baseKey, utf8name, _retval );
|
||||
|
||||
Recycle( utf8name );
|
||||
return rv;
|
||||
}
|
||||
|
||||
/*--------------------------- nsRegistry::GetKey -------------------------------
|
||||
| returns the nsRegistryKey associated with a given node in the registry |
|
||||
------------------------------------------------------------------------------*/
|
||||
NS_IMETHODIMP nsRegistry::GetKey(nsRegistryKey baseKey, const PRUnichar *keyname, nsRegistryKey *_retval)
|
||||
{
|
||||
if ( !keyname || !_retval )
|
||||
return NS_ERROR_NULL_POINTER;
|
||||
|
||||
nsString name( nsSubsumeStr( NS_CONST_CAST(PRUnichar*,keyname), PR_FALSE ) );
|
||||
char* utf8name = name.ToNewUTF8String();
|
||||
if ( !utf8name )
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
|
||||
nsresult rv = GetSubtree( baseKey, utf8name, _retval );
|
||||
|
||||
Recycle( utf8name );
|
||||
return rv;
|
||||
}
|
||||
|
||||
/*--------------------------- nsRegistry::RemoveKey ----------------------------
|
||||
| Delete a key from the registry |
|
||||
------------------------------------------------------------------------------*/
|
||||
NS_IMETHODIMP nsRegistry::RemoveKey(nsRegistryKey baseKey, const PRUnichar *keyname)
|
||||
{
|
||||
if ( !keyname )
|
||||
return NS_ERROR_NULL_POINTER;
|
||||
|
||||
nsString name( nsSubsumeStr( NS_CONST_CAST(PRUnichar*,keyname), PR_FALSE ) );
|
||||
char* utf8name = name.ToNewUTF8String();
|
||||
if ( !utf8name )
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
|
||||
nsresult rv = RemoveSubtree( baseKey, utf8name );
|
||||
|
||||
Recycle( utf8name );
|
||||
return rv;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsRegistry::GetString(nsRegistryKey baseKey, const PRUnichar *valname, PRUnichar **_retval)
|
||||
{
|
||||
nsresult rv = NS_OK;
|
||||
|
||||
// Make sure caller gave us place for result.
|
||||
if ( !valname || !_retval )
|
||||
return NS_ERROR_NULL_POINTER;
|
||||
|
||||
// initialize the return value
|
||||
*_retval = nsnull;
|
||||
char *tmpstr = nsnull;
|
||||
|
||||
nsString name( nsSubsumeStr( NS_CONST_CAST(PRUnichar*,valname), PR_FALSE ) );
|
||||
char* utf8name = name.ToNewUTF8String();
|
||||
if ( !utf8name )
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
|
||||
rv = GetStringUTF8( baseKey, utf8name, &tmpstr );
|
||||
if (NS_SUCCEEDED(rv))
|
||||
{
|
||||
*_retval = nsTextFormatter::smprintf( L"%s", tmpstr );
|
||||
nsCRT::free(tmpstr);
|
||||
if ( *_retval == nsnull )
|
||||
rv = NS_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
Recycle( utf8name );
|
||||
return rv;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsRegistry::SetString(nsRegistryKey baseKey, const PRUnichar *valname, const PRUnichar *value)
|
||||
{
|
||||
if ( !valname || ! value )
|
||||
return NS_ERROR_NULL_POINTER;
|
||||
|
||||
nsresult rv = NS_OK;
|
||||
|
||||
nsString name( nsSubsumeStr( NS_CONST_CAST(PRUnichar*,valname), PR_FALSE ) );
|
||||
nsString val( nsSubsumeStr( NS_CONST_CAST(PRUnichar*,value), PR_FALSE ) );
|
||||
char* utf8name = name.ToNewUTF8String();
|
||||
char* utf8val = val.ToNewUTF8String();
|
||||
|
||||
if ( utf8name && utf8val )
|
||||
rv = SetStringUTF8( baseKey, utf8name, utf8val );
|
||||
else
|
||||
rv = NS_ERROR_OUT_OF_MEMORY;
|
||||
|
||||
if ( utf8name ) Recycle(utf8name);
|
||||
if ( utf8val ) Recycle(utf8val);
|
||||
|
||||
return rv;
|
||||
}
|
||||
|
||||
/*--------------------------- nsRegistry::GetString ----------------------------
|
||||
| First, look for the entry using GetValueInfo. If found, and it's a string, |
|
||||
| allocate space for it and fetch the value. |
|
||||
------------------------------------------------------------------------------*/
|
||||
NS_IMETHODIMP nsRegistry::GetString( nsRegistryKey baseKey, const char *path, char **result ) {
|
||||
NS_IMETHODIMP nsRegistry::GetStringUTF8( nsRegistryKey baseKey, const char *path, char **result ) {
|
||||
nsresult rv = NS_OK;
|
||||
REGERR err = REGERR_OK;
|
||||
|
||||
@ -601,7 +718,7 @@ NS_IMETHODIMP nsRegistry::GetString( nsRegistryKey baseKey, const char *path, ch
|
||||
/*--------------------------- nsRegistry::SetString ----------------------------
|
||||
| Simply sets the registry contents using NR_RegSetEntryString. |
|
||||
------------------------------------------------------------------------------*/
|
||||
NS_IMETHODIMP nsRegistry::SetString( nsRegistryKey baseKey, const char *path, const char *value ) {
|
||||
NS_IMETHODIMP nsRegistry::SetStringUTF8( nsRegistryKey baseKey, const char *path, const char *value ) {
|
||||
REGERR err = REGERR_OK;
|
||||
// Set the contents.
|
||||
PR_Lock(mregLock);
|
||||
|
||||
@ -45,11 +45,11 @@ PDBFILE=regExport
|
||||
|
||||
include <$(DEPTH)\config\rules.mak>
|
||||
|
||||
install:: $(PROGRAMS)
|
||||
install:: $(OBJDIR) $(PROGRAMS)
|
||||
-for %p in ($(PROGRAMS)) do $(MAKE_INSTALL) %p $(DIST)\bin
|
||||
|
||||
clobber::
|
||||
-for %p in ($(PROGRAMS)) do $(RM) %p $(DIST)\bin\%p
|
||||
|
||||
$(PROG1): $(OBJDIR) regExport.cpp
|
||||
#$(PROG1): $(OBJDIR) regExport.cpp
|
||||
|
||||
|
||||
@ -90,28 +90,37 @@ int main( int argc, char *argv[] ) {
|
||||
rv = reg->Open( argv[1] );
|
||||
|
||||
if ( rv == NS_OK ) {
|
||||
NS_ADDREF(reg);
|
||||
// NS_ADDREF(reg);
|
||||
printf( "Registry %s opened OK.\n", argv[1] ? argv[1] : "<default>" );
|
||||
|
||||
// Recurse over all 3 branches.
|
||||
display( reg, nsIRegistry::Common, "nsRegistry::Common" );
|
||||
display( reg, nsIRegistry::Users, "nsRegistry::Users" );
|
||||
display( reg, nsIRegistry::Common, "nsRegistry::CurrentUser" );
|
||||
}
|
||||
NS_RELEASE(reg);
|
||||
|
||||
if (argc == 1) {
|
||||
// Called with no arguments. Print both the default registry and
|
||||
// the components registry. We already printed the default regsitry.
|
||||
// So just do the component registry.
|
||||
rv = compMgr->CreateInstanceByProgID(NS_REGISTRY_PROGID, NULL,
|
||||
NS_GET_IID(nsIRegistry),
|
||||
(void **) ®);
|
||||
|
||||
// Check result.
|
||||
if ( NS_FAILED(rv) )
|
||||
{
|
||||
printf( "Error opening creating registry instance, rv=0x%08X\n", (int)rv );
|
||||
return rv;
|
||||
}
|
||||
rv = reg->OpenWellKnownRegistry(nsIRegistry::ApplicationComponentRegistry);
|
||||
if ( rv == NS_OK ) {
|
||||
NS_ADDREF(reg);
|
||||
printf( "Registry %s opened OK.\n", argv[1] ? argv[1] : "<Application Component Registry>" );
|
||||
// NS_ADDREF(reg);
|
||||
printf( "\n\n\nRegistry %s opened OK.\n", "<Application Component Registry>\n" );
|
||||
|
||||
// Recurse over all 3 branches.
|
||||
display( reg, nsIRegistry::Common, "nsRegistry::Common" );
|
||||
display( reg, nsIRegistry::Users, "nsRegistry::Users" );
|
||||
display( reg, nsIRegistry::Common, "nsRegistry::CurrentUser" );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -320,9 +320,6 @@ nsAppShellService::EnumerateComponents( EnumeratorMemberFunction function ) {
|
||||
|
||||
// Clean up.
|
||||
if ( registry ) {
|
||||
// Registry was accessed, close it.
|
||||
registry->Close();
|
||||
|
||||
// Release enumerator (if necessary).
|
||||
NS_IF_RELEASE( components );
|
||||
|
||||
|
||||
@ -165,7 +165,7 @@ static int TranslateReturnValue(nsresult aResult)
|
||||
#include "nsCommandLineServiceMac.h"
|
||||
#endif
|
||||
|
||||
extern "C" void NS_SetupRegistry_1();
|
||||
extern "C" void NS_SetupRegistry_1(PRBool aNeedAutoreg);
|
||||
|
||||
static void
|
||||
PrintUsage(void)
|
||||
@ -221,6 +221,7 @@ static nsresult OpenChromURL( const char * urlstr, PRInt32 height = NS_SIZETOCON
|
||||
return rv;
|
||||
}
|
||||
|
||||
|
||||
static void DumpArbitraryHelp()
|
||||
{
|
||||
nsresult rv;
|
||||
@ -476,6 +477,27 @@ static nsresult main1(int argc, char* argv[], nsISplashScreen *splashScreen )
|
||||
// the JS engine. See bugzilla bug 9967 details.
|
||||
fpsetmask(0);
|
||||
#endif
|
||||
|
||||
//----------------------------------------------------------------
|
||||
// XPInstall needs to clean up after any updates that couldn't
|
||||
// be completed because components were in use. This must be done
|
||||
// **BEFORE** any other libraries are loaded!
|
||||
//
|
||||
// Will also check to see if AutoReg is required due to version
|
||||
// change or installation of new components. If for some reason
|
||||
// XPInstall can't be loaded we assume Autoreg is required.
|
||||
//
|
||||
// (scoped in a block to force release of COMPtr)
|
||||
//----------------------------------------------------------------
|
||||
PRBool needAutoreg = PR_TRUE;
|
||||
{
|
||||
nsCOMPtr<nsISoftwareUpdate> su = do_GetService(kSoftUpdateCID,&rv);
|
||||
if (NS_SUCCEEDED(rv))
|
||||
{
|
||||
su->StartupTasks( &needAutoreg );
|
||||
}
|
||||
}
|
||||
// nsServiceManager::UnregisterService(kSoftUpdateCID);
|
||||
|
||||
#if XP_MAC
|
||||
stTSMCloser tsmCloser;
|
||||
@ -485,7 +507,9 @@ static nsresult main1(int argc, char* argv[], nsISplashScreen *splashScreen )
|
||||
#endif
|
||||
|
||||
// XXX: This call will be replaced by a registry initialization...
|
||||
NS_SetupRegistry_1();
|
||||
NS_SetupRegistry_1( needAutoreg );
|
||||
|
||||
// Start up the core services:
|
||||
|
||||
// Initialize the cmd line service
|
||||
NS_WITH_SERVICE(nsICmdLineService, cmdLineArgs, kCmdLineServiceCID, &rv);
|
||||
@ -706,24 +730,10 @@ int main(int argc, char* argv[])
|
||||
rv = NS_InitXPCOM(NULL, NULL);
|
||||
NS_ASSERTION( NS_SUCCEEDED(rv), "NS_InitXPCOM failed" );
|
||||
|
||||
{
|
||||
//----------------------------------------------------------------
|
||||
// XPInstall needs to clean up after any updates that couldn't
|
||||
// be completed because components were in use. This must be done
|
||||
// **BEFORE** any other components are loaded!
|
||||
//
|
||||
// Will also check to see if AutoReg is required due to version
|
||||
// change or installation of new components
|
||||
//
|
||||
// (scoped in a block to force release of COMPtr)
|
||||
//----------------------------------------------------------------
|
||||
nsCOMPtr<nsISoftwareUpdate> su = do_GetService(kSoftUpdateCID,&rv);
|
||||
if (NS_SUCCEEDED(rv))
|
||||
su->StartupTasks();
|
||||
}
|
||||
|
||||
|
||||
nsresult result = main1( argc, argv, splash );
|
||||
|
||||
|
||||
{
|
||||
// Scoping this in a block to force the pref service to be
|
||||
// released.
|
||||
|
||||
@ -73,7 +73,7 @@ class nsISoftwareUpdate : public nsISupports
|
||||
NS_IMETHOD InstallJarCallBack() = 0;
|
||||
NS_IMETHOD GetMasterNotifier(nsIXPINotifier **notifier) = 0;
|
||||
NS_IMETHOD SetActiveNotifier(nsIXPINotifier *notifier) = 0;
|
||||
NS_IMETHOD StartupTasks() = 0;
|
||||
NS_IMETHOD StartupTasks( PRBool* outAutoreg ) = 0;
|
||||
};
|
||||
|
||||
|
||||
|
||||
@ -34,5 +34,5 @@
|
||||
[uuid(089929F0-4ED9-11d3-ABDD-000064657374)]
|
||||
interface nsPIXPIStubHook : nsISupports
|
||||
{
|
||||
void SetProgramDirectory(in nsIFileSpec dir);
|
||||
void StubInitialize(in nsIFileSpec dir);
|
||||
};
|
||||
|
||||
@ -24,7 +24,6 @@
|
||||
*/
|
||||
|
||||
#include "nscore.h"
|
||||
#include "NSReg.h"
|
||||
#include "nsFileSpec.h"
|
||||
#include "nsFileStream.h"
|
||||
#include "nsInstall.h" // for error codes
|
||||
@ -347,16 +346,10 @@ PRInt32 ReplaceFileNowOrSchedule(nsFileSpec& replacementFile, nsFileSpec& doomed
|
||||
void DeleteScheduledFiles(HREG);
|
||||
void ReplaceScheduledFiles(HREG);
|
||||
|
||||
void PerformScheduledTasks(void *data)
|
||||
void PerformScheduledTasks(HREG reg)
|
||||
{
|
||||
HREG reg;
|
||||
|
||||
if ( REGERR_OK == NR_RegOpen("", ®) )
|
||||
{
|
||||
DeleteScheduledFiles( reg );
|
||||
ReplaceScheduledFiles( reg );
|
||||
NR_RegClose(reg);
|
||||
}
|
||||
DeleteScheduledFiles( reg );
|
||||
ReplaceScheduledFiles( reg );
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -28,6 +28,7 @@
|
||||
|
||||
|
||||
#include "NSReg.h"
|
||||
//#include "mozreg.h"
|
||||
#include "nsFileSpec.h"
|
||||
|
||||
PR_BEGIN_EXTERN_C
|
||||
@ -36,7 +37,7 @@ PRInt32 DeleteFileNowOrSchedule(const nsFileSpec& filename);
|
||||
PRInt32 ReplaceFileNowOrSchedule(nsFileSpec& tmpfile, nsFileSpec& target );
|
||||
|
||||
|
||||
void PerformScheduledTasks(void *data);
|
||||
void PerformScheduledTasks(HREG reg);
|
||||
|
||||
PR_END_EXTERN_C
|
||||
|
||||
|
||||
@ -42,7 +42,6 @@ LCFLAGS = \
|
||||
|
||||
|
||||
LLIBS = \
|
||||
$(DIST)\lib\mozreg.lib \
|
||||
$(DIST)\lib\xpcom.lib \
|
||||
$(DIST)\lib\js3250.lib \
|
||||
$(DIST)\lib\jsdombase_s.lib \
|
||||
@ -50,6 +49,7 @@ LLIBS = \
|
||||
$(DIST)\lib\zlib.lib \
|
||||
$(DIST)\lib\strres.lib \
|
||||
$(LIBNSPR) \
|
||||
$(DIST)\lib\mozreg.lib \
|
||||
$(NULL)
|
||||
|
||||
|
||||
|
||||
@ -2225,7 +2225,7 @@ nsInstall::CleanUp(void)
|
||||
mPatchList = nsnull;
|
||||
}
|
||||
|
||||
if (mPackageFolder != nsnull)
|
||||
if (mPackageFolder != nsnull)
|
||||
{
|
||||
delete (mPackageFolder);
|
||||
mPackageFolder = nsnull;
|
||||
|
||||
@ -59,7 +59,7 @@ NS_IMETHODIMP
|
||||
nsLoggingProgressNotifier::BeforeJavascriptEvaluation(const PRUnichar *URL)
|
||||
{
|
||||
nsSpecialSystemDirectory logFile(nsSpecialSystemDirectory::OS_CurrentProcessDirectory);
|
||||
logFile += "Install.log";
|
||||
logFile += "install.log";
|
||||
|
||||
mLogStream = new nsOutputFileStream(logFile, PR_WRONLY | PR_CREATE_FILE | PR_APPEND, 0744 );
|
||||
if (!mLogStream)
|
||||
|
||||
@ -104,7 +104,8 @@ nsSoftwareUpdate::GetInstance()
|
||||
|
||||
nsSoftwareUpdate::nsSoftwareUpdate()
|
||||
: mInstalling(PR_FALSE),
|
||||
mStubLockout(PR_FALSE)
|
||||
mStubLockout(PR_FALSE),
|
||||
mReg(0)
|
||||
{
|
||||
NS_INIT_ISUPPORTS();
|
||||
|
||||
@ -195,6 +196,11 @@ nsSoftwareUpdate::QueryInterface( REFNSIID anIID, void **anInstancePtr )
|
||||
NS_IMETHODIMP
|
||||
nsSoftwareUpdate::Initialize( nsIAppShellService *anAppShell, nsICmdLineService *aCmdLineService )
|
||||
{
|
||||
// Close the registry if open. We left it open through most of startup
|
||||
// so it wouldn't get opened and closed a lot by different services
|
||||
if (mReg)
|
||||
NR_RegClose(mReg);
|
||||
|
||||
// prevent use of nsPIXPIStubHook by browser
|
||||
mStubLockout = PR_TRUE;
|
||||
|
||||
@ -303,9 +309,17 @@ nsSoftwareUpdate::InstallJarCallBack()
|
||||
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsSoftwareUpdate::StartupTasks()
|
||||
nsSoftwareUpdate::StartupTasks( PRBool* outAutoreg )
|
||||
{
|
||||
PerformScheduledTasks(0);
|
||||
if (outAutoreg) *outAutoreg = PR_FALSE;
|
||||
|
||||
if ( REGERR_OK == NR_RegOpen("", &mReg) )
|
||||
{
|
||||
// XXX get a return val and if not all replaced autoreg again later
|
||||
PerformScheduledTasks(mReg);
|
||||
}
|
||||
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
@ -368,20 +382,24 @@ nsSoftwareUpdate::RegisterNameset()
|
||||
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsSoftwareUpdate::SetProgramDirectory(nsIFileSpec *aDir)
|
||||
nsSoftwareUpdate::StubInitialize(nsIFileSpec *aDir)
|
||||
{
|
||||
if (mStubLockout)
|
||||
return NS_ERROR_ABORT;
|
||||
else if ( !aDir )
|
||||
return NS_ERROR_NULL_POINTER;
|
||||
|
||||
// only allow once, it would be a mess if we've already started installing
|
||||
// only allow once, it could be a mess if we've already started installing
|
||||
mStubLockout = PR_TRUE;
|
||||
|
||||
// fix GetFolder return path
|
||||
mProgramDir = aDir;
|
||||
NS_ADDREF(mProgramDir);
|
||||
|
||||
// Create the logfile observer
|
||||
nsLoggingProgressNotifier *logger = new nsLoggingProgressNotifier();
|
||||
RegisterNotifier(logger);
|
||||
|
||||
// setup version registry path
|
||||
char* path;
|
||||
nsresult rv = aDir->GetNativePath( &path );
|
||||
@ -493,8 +511,8 @@ RegisterSoftwareUpdate( nsIComponentManager *aCompMgr,
|
||||
&key );
|
||||
nsServiceManager::ReleaseService(NS_REGISTRY_PROGID, registry);
|
||||
}
|
||||
|
||||
return rv;
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -507,7 +525,7 @@ static nsModuleComponentInfo components[] =
|
||||
nsSoftwareUpdateConstructor,
|
||||
RegisterSoftwareUpdate
|
||||
},
|
||||
|
||||
|
||||
{ "InstallTrigger Component",
|
||||
NS_SoftwareUpdateInstallTrigger_CID,
|
||||
NS_INSTALLTRIGGERCOMPONENT_PROGID,
|
||||
|
||||
@ -11,6 +11,8 @@
|
||||
#include "nsString.h"
|
||||
#include "nsVoidArray.h"
|
||||
#include "prlock.h"
|
||||
//#include "mozreg.h"
|
||||
#include "NSReg.h"
|
||||
|
||||
class nsInstallInfo;
|
||||
|
||||
@ -50,14 +52,14 @@ class nsSoftwareUpdate: public nsIAppShellComponent,
|
||||
NS_IMETHOD InstallJarCallBack();
|
||||
NS_IMETHOD GetMasterNotifier(nsIXPINotifier **notifier);
|
||||
NS_IMETHOD SetActiveNotifier(nsIXPINotifier *notifier);
|
||||
NS_IMETHOD StartupTasks();
|
||||
NS_IMETHOD StartupTasks( PRBool* outAutoreg );
|
||||
|
||||
/** SetProgramDirectory() is private for the Install Wizard.
|
||||
/** StubInitialize() is private for the Install Wizard.
|
||||
* The mStubLockout property makes sure this is only called
|
||||
* once, and is also set by the AppShellComponent initialize
|
||||
* so it can't be called during a normal Mozilla run
|
||||
*/
|
||||
NS_IMETHOD SetProgramDirectory(nsIFileSpec *dir);
|
||||
NS_IMETHOD StubInitialize(nsIFileSpec *dir);
|
||||
|
||||
nsSoftwareUpdate();
|
||||
virtual ~nsSoftwareUpdate();
|
||||
@ -75,6 +77,8 @@ class nsSoftwareUpdate: public nsIAppShellComponent,
|
||||
PRBool mStubLockout;
|
||||
nsVoidArray mJarInstallQueue;
|
||||
nsTopProgressNotifier mMasterNotifier;
|
||||
|
||||
HREG mReg;
|
||||
};
|
||||
|
||||
|
||||
|
||||
@ -443,12 +443,6 @@ extern "C" void RunInstallOnThread(void *data)
|
||||
|
||||
if (scriptBuffer) delete [] scriptBuffer;
|
||||
|
||||
if ( !url.Equals("file:/",PR_FALSE,6) )
|
||||
{
|
||||
// delete the jarfile only if we've downloaded it
|
||||
jarpath.Delete(PR_FALSE);
|
||||
}
|
||||
|
||||
softwareUpdate->SetActiveNotifier(0);
|
||||
softwareUpdate->InstallJarCallBack();
|
||||
}
|
||||
|
||||
@ -45,7 +45,7 @@ public:
|
||||
nsString val,
|
||||
PRInt32 *aReturn);
|
||||
|
||||
~nsWinProfileItem();
|
||||
virtual ~nsWinProfileItem();
|
||||
|
||||
/**
|
||||
* Completes the install:
|
||||
|
||||
@ -54,7 +54,7 @@ public:
|
||||
PRInt32 val,
|
||||
PRInt32* aReturn);
|
||||
|
||||
~nsWinRegItem();
|
||||
virtual ~nsWinRegItem();
|
||||
|
||||
PRInt32 Prepare(void);
|
||||
|
||||
|
||||
@ -59,6 +59,10 @@ static NS_DEFINE_IID(kStringBundleServiceCID, NS_STRINGBUNDLESERVICE_CID);
|
||||
|
||||
static NS_DEFINE_CID(kDialogParamBlockCID, NS_DialogParamBlock_CID);
|
||||
|
||||
#include "nsIEventQueueService.h"
|
||||
|
||||
static NS_DEFINE_CID(kEventQueueServiceCID, NS_EVENTQUEUESERVICE_CID);
|
||||
|
||||
#define XPINSTALL_BUNDLE_URL "chrome://xpinstall/locale/xpinstall.properties"
|
||||
|
||||
nsXPInstallManager::nsXPInstallManager()
|
||||
@ -261,6 +265,7 @@ nsXPInstallManager::InitManager(nsXPITriggerInfo* aTriggers)
|
||||
return rv;
|
||||
}
|
||||
|
||||
|
||||
NS_IMETHODIMP nsXPInstallManager::DialogOpened(nsISupports* aWindow)
|
||||
{
|
||||
nsresult rv;
|
||||
@ -422,6 +427,21 @@ void nsXPInstallManager::Shutdown()
|
||||
|
||||
mDlg = 0;
|
||||
|
||||
// Clean up downloaded files
|
||||
nsXPITriggerItem* item;
|
||||
nsFileSpec tmpSpec;
|
||||
for (PRUint32 i = 0; i < mTriggers->Size(); i++ )
|
||||
{
|
||||
item = NS_STATIC_CAST(nsXPITriggerItem*, mTriggers->Get(i));
|
||||
|
||||
if ( item && item->mFile && !item->IsFileURL() )
|
||||
{
|
||||
item->mFile->GetFileSpec(&tmpSpec);
|
||||
tmpSpec.Delete(PR_FALSE);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
NS_RELEASE_THIS();
|
||||
}
|
||||
|
||||
@ -534,6 +554,8 @@ nsXPInstallManager::OnStopRequest(nsIChannel* channel, nsISupports *ctxt,
|
||||
DownloadNext();
|
||||
return rv;
|
||||
}
|
||||
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsXPInstallManager::OnDataAvailable(nsIChannel* channel, nsISupports *ctxt,
|
||||
nsIInputStream *pIStream,
|
||||
@ -543,7 +565,7 @@ nsXPInstallManager::OnDataAvailable(nsIChannel* channel, nsISupports *ctxt,
|
||||
PRUint32 amt;
|
||||
PRInt32 result;
|
||||
nsresult err;
|
||||
char buffer[1025];
|
||||
char buffer[8*1024];
|
||||
|
||||
if (mCancelled)
|
||||
{
|
||||
@ -554,7 +576,7 @@ nsXPInstallManager::OnDataAvailable(nsIChannel* channel, nsISupports *ctxt,
|
||||
|
||||
do
|
||||
{
|
||||
err = pIStream->Read(buffer, 1024, &amt);
|
||||
err = pIStream->Read(buffer, sizeof(buffer), &amt);
|
||||
if (amt == 0) break;
|
||||
if (NS_FAILED(err))
|
||||
{
|
||||
@ -568,7 +590,8 @@ nsXPInstallManager::OnDataAvailable(nsIChannel* channel, nsISupports *ctxt,
|
||||
//printf("mItem->mFile->Write Failed! err:%d amt:%d result:%d\n", err, amt, result);
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
} while (amt > 0);
|
||||
length -= amt;
|
||||
} while (length > 0);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
@ -157,7 +157,7 @@ PR_PUBLIC_API(nsresult) XPI_Init(
|
||||
NS_NewFileSpecWithSpec( dirSpec, getter_AddRefs(iDirSpec) );
|
||||
|
||||
if (hook && iDirSpec)
|
||||
hook->SetProgramDirectory( iDirSpec );
|
||||
hook->StubInitialize( iDirSpec );
|
||||
else
|
||||
return NS_ERROR_NULL_POINTER;
|
||||
|
||||
@ -217,7 +217,7 @@ PR_PUBLIC_API(PRInt32) XPI_Install(
|
||||
nsFileURL URL(file);
|
||||
nsString URLstr(URL.GetURLString());
|
||||
|
||||
gInstallStatus = -322; // nsInstall::UNEXPECTED_ERROR
|
||||
gInstallStatus = -322; // unique stub error code
|
||||
|
||||
NS_NewFileSpecWithSpec( file, getter_AddRefs(iFile) );
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user