From 8f4a48b779a87f11ae2a2608db27e2ef579ca5ba Mon Sep 17 00:00:00 2001 From: "ssu%netscape.com" Date: Sun, 14 May 2000 02:27:52 +0000 Subject: [PATCH] new files to support setting of windows shared files registry in the windows registry. Not part of tinderbox build yet. git-svn-id: svn://10.0.0.236/trunk@69610 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/xpinstall/src/nsInstallBitwise.cpp | 78 ++++++++++++++++++++++ mozilla/xpinstall/src/nsInstallBitwise.h | 38 +++++++++++ 2 files changed, 116 insertions(+) create mode 100644 mozilla/xpinstall/src/nsInstallBitwise.cpp create mode 100644 mozilla/xpinstall/src/nsInstallBitwise.h diff --git a/mozilla/xpinstall/src/nsInstallBitwise.cpp b/mozilla/xpinstall/src/nsInstallBitwise.cpp new file mode 100644 index 00000000000..10d1af5aec7 --- /dev/null +++ b/mozilla/xpinstall/src/nsInstallBitwise.cpp @@ -0,0 +1,78 @@ +/* -*- 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 Communicator client code, + * released March 31, 1998. + * + * 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): + * Sean Su + */ + +#include "nscore.h" +#include "nsFileSpec.h" +#include "nsFileStream.h" +#include "nsInstall.h" // for error codes +#include "prmem.h" +#include "nsInstallBitwise.h" + +#ifdef _WINDOWS +#include +#include +#endif + +#define KEY_SHARED_DLLS "Software\\Microsoft\\Windows\\CurrentVersion\\SharedDlls" + +PRInt32 RegisterSharedFile(char *file, PRBool bAlreadyExists) +{ + PRInt32 rv = nsInstall::SUCCESS; + +#ifdef WIN32 + HKEY root; + HKEY keyHandle = 0; + LONG result; + DWORD type = REG_DWORD; + DWORD dwDisposition; + PRUint32 valbuf = 0; + PRUint32 valbufsize; + + valbufsize = sizeof(PRUint32); + root = HKEY_LOCAL_MACHINE; + result = RegCreateKeyEx(root, KEY_SHARED_DLLS, 0, nsnull, REG_OPTION_NON_VOLATILE, KEY_READ | KEY_WRITE, nsnull, &keyHandle, &dwDisposition); + if(ERROR_SUCCESS == result) + { + result = RegQueryValueEx(keyHandle, file, nsnull, &type, (LPBYTE)&valbuf, (LPDWORD)&valbufsize); + + if((ERROR_SUCCESS == result) && (type == REG_DWORD)) + ++valbuf; + else + { + valbuf = 1; + if(bAlreadyExists == PR_TRUE) + ++valbuf; + } + + RegSetValueEx(keyHandle, file, 0, REG_DWORD, (LPBYTE)&valbuf, valbufsize); + RegCloseKey(keyHandle); + } + else + rv = nsInstall::UNEXPECTED_ERROR; + +#endif + + return(rv); +} + diff --git a/mozilla/xpinstall/src/nsInstallBitwise.h b/mozilla/xpinstall/src/nsInstallBitwise.h new file mode 100644 index 00000000000..aa6100ce816 --- /dev/null +++ b/mozilla/xpinstall/src/nsInstallBitwise.h @@ -0,0 +1,38 @@ +/* -*- 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 Communicator client code, + * released March 31, 1998. + * + * 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): + * Sean Su + */ + +#ifndef __NSINSTALLBITWISE_H__ +#define __NSINSTALLBITWISE_H__ + +#include "NSReg.h" +#include "nsFileSpec.h" +#include "nsIFile.h" + +PR_BEGIN_EXTERN_C + +PRInt32 RegisterSharedFile(char *file, PRBool bAlreadyExists); + +PR_END_EXTERN_C + +#endif