From e08965f856079b5c3cf160ff749ca4b963b79a74 Mon Sep 17 00:00:00 2001 From: Christopher Aillon Date: Wed, 27 Feb 2008 01:57:41 +0000 Subject: [PATCH] - Update to 2.0.0.12 - Fix up icon location and some scriptlets --- .cvsignore | 4 +- firefox-2.0-pango-ligatures.patch | 5 +- firefox-2.0-pango-printing.patch | 8 - sources | 4 +- thunderbird-2.0.0.12-gcc43.patch | 1614 +++++++++++++++++++++++++++++ thunderbird.desktop | 2 +- thunderbird.spec | 31 +- 7 files changed, 1644 insertions(+), 24 deletions(-) create mode 100644 thunderbird-2.0.0.12-gcc43.patch diff --git a/.cvsignore b/.cvsignore index 2394c8a..cb2ded0 100644 --- a/.cvsignore +++ b/.cvsignore @@ -1,2 +1,2 @@ -thunderbird-2.0.0.9-source.tar.bz2 -thunderbird-langpacks-2.0.0.9-20071115.tar.bz2 +thunderbird-langpacks-2.0.0.12-20080226.tar.bz2 +thunderbird-2.0.0.12-source.tar.bz2 diff --git a/firefox-2.0-pango-ligatures.patch b/firefox-2.0-pango-ligatures.patch index c259488..a6ae811 100644 --- a/firefox-2.0-pango-ligatures.patch +++ b/firefox-2.0-pango-ligatures.patch @@ -118,7 +118,7 @@ nsFontMetricsPango::nsFontMetricsPango() { -@@ -169,14 +228,20 @@ nsFontMetricsPango::Init(const nsFont& a +@@ -169,15 +228,21 @@ nsFontMetricsPango::Init(const nsFont& a mLangGroup = aLangGroup; // Hang on to the device context @@ -134,7 +134,8 @@ // Make sure to clamp the pixel size to something reasonable so we // don't make the X server blow up. nscoord screenPixels = gdk_screen_height(); - mPointSize = PR_MIN(screenPixels * FONT_MAX_FONT_SCALE, mPointSize); + mPointSize = PR_MIN((screenPixels - 1) * FONT_MAX_FONT_SCALE, mPointSize); + mPointSize = PR_MIN(2000, mPointSize); +#endif // enumerate over the font names passed in diff --git a/firefox-2.0-pango-printing.patch b/firefox-2.0-pango-printing.patch index 73435c2..d84664e 100644 --- a/firefox-2.0-pango-printing.patch +++ b/firefox-2.0-pango-printing.patch @@ -4575,14 +4575,6 @@ Index: config/system-headers fribidi/fribidi.h FSp_fopen.h fstream.h -@@ -208,6 +209,7 @@ - gdk/gdkevents.h - gdk/gdk.h - gdk/gdkkeysyms.h -+gdk/gdkpango.h - gdk/gdkprivate.h - gdk/gdkregion.h - gdk/gdkwindow.h @@ -501,6 +503,7 @@ pango/pangofc-fontmap.h pango/pango-fontmap.h diff --git a/sources b/sources index 9dd9fc2..8e71214 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -a6dd74f87dafc7516e7970ecefee046b thunderbird-2.0.0.9-source.tar.bz2 -5abe9f6d6b292adaa4283cd001781ae8 thunderbird-langpacks-2.0.0.9-20071115.tar.bz2 +4aebeaad511dd0ba73fbabfdd6819438 thunderbird-langpacks-2.0.0.12-20080226.tar.bz2 +c23f576a8fd0ceee5135829c8ae5168b thunderbird-2.0.0.12-source.tar.bz2 diff --git a/thunderbird-2.0.0.12-gcc43.patch b/thunderbird-2.0.0.12-gcc43.patch new file mode 100644 index 0000000..1ac8ae6 --- /dev/null +++ b/thunderbird-2.0.0.12-gcc43.patch @@ -0,0 +1,1614 @@ +Index: xpcom/obsolete/component/nsFileSpecImpl.cpp +=================================================================== +RCS file: xpcom/obsolete/component/nsFileSpecImpl.cpp +diff -N xpcom/obsolete/component/nsFileSpecImpl.cpp +--- xpcom/obsolete/component/nsFileSpecImpl.cpp 18 Apr 2004 14:18:15 -0000 1.2 ++++ /dev/null 1 Jan 1970 00:00:00 -0000 +@@ -1,857 +0,0 @@ +-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +-/* ***** BEGIN LICENSE BLOCK ***** +- * Version: MPL 1.1/GPL 2.0/LGPL 2.1 +- * +- * The contents of this file are subject to the Mozilla 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/MPL/ +- * +- * 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.org code. +- * +- * The Initial Developer of the Original Code is +- * Netscape Communications Corporation. +- * Portions created by the Initial Developer are Copyright (C) 1998 +- * the Initial Developer. All Rights Reserved. +- * +- * Contributor(s): +- * Pierre Phaneuf +- * +- * Alternatively, the contents of this file may be used under the terms of +- * either of the GNU General Public License Version 2 or later (the "GPL"), +- * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +- * in which case the provisions of the GPL or the LGPL are applicable instead +- * of those above. If you wish to allow use of your version of this file only +- * under the terms of either the GPL or the LGPL, and not to allow others to +- * use your version of this file under the terms of the MPL, indicate your +- * decision by deleting the provisions above and replace them with the notice +- * and other provisions required by the GPL or the LGPL. If you do not delete +- * the provisions above, a recipient may use your version of this file under +- * the terms of any one of the MPL, the GPL or the LGPL. +- * +- * ***** END LICENSE BLOCK ***** */ +- +-#include "nsFileSpecImpl.h"// Always first, to ensure that it compiles alone. +- +-#include "nsIFileStream.h" +-#include "nsFileStream.h" +- +-#include "nsILocalFile.h" +- +-#include "prmem.h" +- +-NS_IMPL_THREADSAFE_ISUPPORTS1(nsFileSpecImpl, nsIFileSpec) +- +-#ifdef NS_DEBUG +-#define TEST_OUT_PTR(p) \ +- if (!(p)) \ +- return NS_ERROR_NULL_POINTER; +-#else +-#define TEST_OUT_PTR(p) +-#endif +- +-//---------------------------------------------------------------------------------------- +-nsFileSpecImpl::nsFileSpecImpl() +-//---------------------------------------------------------------------------------------- +- : mInputStream(nsnull) +- , mOutputStream(nsnull) +-{ +-// NS_ASSERTION(0, "nsFileSpec is unsupported - use nsIFile!"); +- +-} +- +-//---------------------------------------------------------------------------------------- +-nsFileSpecImpl::nsFileSpecImpl(const nsFileSpec& inSpec) +-//---------------------------------------------------------------------------------------- +- : mFileSpec(inSpec) +- , mInputStream(nsnull) +- , mOutputStream(nsnull) +-{ +-// NS_ASSERTION(0, "nsFileSpec is unsupported - use nsIFile!"); +- +-} +- +-//---------------------------------------------------------------------------------------- +-nsFileSpecImpl::~nsFileSpecImpl() +-//---------------------------------------------------------------------------------------- +-{ +- CloseStream(); +-} +- +-//---------------------------------------------------------------------------------------- +-/* static */ +-nsresult nsFileSpecImpl::MakeInterface(const nsFileSpec& inSpec, nsIFileSpec** result) +-//---------------------------------------------------------------------------------------- +-{ +- nsFileSpecImpl* it = new nsFileSpecImpl(inSpec); +- if (!it) +- return NS_ERROR_OUT_OF_MEMORY; +- return it->QueryInterface(NS_GET_IID(nsIFileSpec), (void **) result); +-} // nsFileSpecImpl::MakeInterface +- +-#define FILESPEC(ifilespec) ((nsFileSpecImpl*)ifilespec)->mFileSpec +- +-//---------------------------------------------------------------------------------------- +-NS_IMETHODIMP nsFileSpecImpl::FromFileSpec(const nsIFileSpec *original) +-//---------------------------------------------------------------------------------------- +-{ +- if (original) { +- nsresult rv = ((nsIFileSpec *)original)->GetFileSpec( &mFileSpec); +- if (NS_SUCCEEDED( rv)) +- return mFileSpec.Error(); +- else +- return( rv); +- } +- else +- return( NS_ERROR_FAILURE); +-} +- +-//---------------------------------------------------------------------------------------- +-NS_IMETHODIMP nsFileSpecImpl::IsChildOf(nsIFileSpec *possibleParent, +- PRBool *_retval) +-{ +- *_retval = mFileSpec.IsChildOf(FILESPEC(possibleParent)); +- return mFileSpec.Error(); +-} +-//---------------------------------------------------------------------------------------- +- +-//---------------------------------------------------------------------------------------- +-NS_IMETHODIMP nsFileSpecImpl::GetURLString(char * *aURLString) +-//---------------------------------------------------------------------------------------- +-{ +- TEST_OUT_PTR(aURLString) +- if (mFileSpec.Failed()) +- return mFileSpec.Error(); +- nsFileURL url(mFileSpec); +- *aURLString = nsCRT::strdup(url.GetURLString()); +- if (!*aURLString) +- return NS_ERROR_OUT_OF_MEMORY; +- return NS_OK; +-} // nsFileSpecImpl::GetURLString +- +-//---------------------------------------------------------------------------------------- +-NS_IMETHODIMP nsFileSpecImpl::SetURLString(const char * aURLString) +-//---------------------------------------------------------------------------------------- +-{ +- mFileSpec = nsFileURL(aURLString); +- return NS_OK; +-} +- +-//---------------------------------------------------------------------------------------- +-NS_IMETHODIMP nsFileSpecImpl::GetUnixStyleFilePath(char * *aUnixStyleFilePath) +-//---------------------------------------------------------------------------------------- +-{ +- TEST_OUT_PTR(aUnixStyleFilePath) +- if (mFileSpec.Failed()) +- return mFileSpec.Error(); +- nsFilePath path(mFileSpec); +- *aUnixStyleFilePath = nsCRT::strdup((const char*) path); +- if (!*aUnixStyleFilePath) +- return NS_ERROR_OUT_OF_MEMORY; +- return NS_OK; +-} +- +-//---------------------------------------------------------------------------------------- +-NS_IMETHODIMP nsFileSpecImpl::SetUnixStyleFilePath(const char * aUnixStyleFilePath) +-//---------------------------------------------------------------------------------------- +-{ +- mFileSpec = nsFilePath(aUnixStyleFilePath); +- return NS_OK; +-} +- +-//---------------------------------------------------------------------------------------- +-NS_IMETHODIMP nsFileSpecImpl::GetPersistentDescriptorString(char * *aPersistentDescriptorString) +-//---------------------------------------------------------------------------------------- +-{ +- TEST_OUT_PTR(aPersistentDescriptorString) +- if (mFileSpec.Failed()) +- return mFileSpec.Error(); +- nsPersistentFileDescriptor desc(mFileSpec); +- nsCAutoString data; +- desc.GetData(data); +- *aPersistentDescriptorString = ToNewCString(data); +- if (!*aPersistentDescriptorString) +- return NS_ERROR_OUT_OF_MEMORY; +- return NS_OK; +-} +- +-//---------------------------------------------------------------------------------------- +-NS_IMETHODIMP nsFileSpecImpl::SetPersistentDescriptorString(const char * aPersistentDescriptorString) +-//---------------------------------------------------------------------------------------- +-{ +- nsPersistentFileDescriptor desc(mFileSpec); +- desc.SetData(nsDependentCString(aPersistentDescriptorString)); +- mFileSpec = desc; +- return NS_OK; +-} +- +-//---------------------------------------------------------------------------------------- +-NS_IMETHODIMP nsFileSpecImpl::GetNativePath(char * *aNativePath) +-//---------------------------------------------------------------------------------------- +-{ +- TEST_OUT_PTR(aNativePath) +- if (mFileSpec.Failed()) +- return mFileSpec.Error(); +- *aNativePath = nsCRT::strdup(mFileSpec.GetNativePathCString()); +- if (!*aNativePath) +- return NS_ERROR_OUT_OF_MEMORY; +- return NS_OK; +-} +- +-//---------------------------------------------------------------------------------------- +-NS_IMETHODIMP nsFileSpecImpl::SetNativePath(const char * aNativePath) +-//---------------------------------------------------------------------------------------- +-{ +- mFileSpec = aNativePath; +- return NS_OK; +-} +- +-//---------------------------------------------------------------------------------------- +-NS_IMETHODIMP nsFileSpecImpl::GetNSPRPath(char * *aNSPRPath) +-//---------------------------------------------------------------------------------------- +-{ +- TEST_OUT_PTR(aNSPRPath) +- if (mFileSpec.Failed()) +- return mFileSpec.Error(); +- nsNSPRPath path(mFileSpec); +- *aNSPRPath = nsCRT::strdup((const char*) path); +- if (!*aNSPRPath) +- return NS_ERROR_OUT_OF_MEMORY; +- return NS_OK; +-} +- +-//---------------------------------------------------------------------------------------- +-NS_IMETHODIMP nsFileSpecImpl::Error() +-//---------------------------------------------------------------------------------------- +-{ +- return mFileSpec.Error(); +-} +- +-//---------------------------------------------------------------------------------------- +-NS_IMETHODIMP nsFileSpecImpl::IsValid(PRBool *_retval) +-//---------------------------------------------------------------------------------------- +-{ +- TEST_OUT_PTR(_retval) +- *_retval = mFileSpec.Valid(); +- return NS_OK; +-} +- +-//---------------------------------------------------------------------------------------- +-NS_IMETHODIMP nsFileSpecImpl::Failed(PRBool *_retval) +-//---------------------------------------------------------------------------------------- +-{ +- *_retval = mFileSpec.Failed(); +- return NS_OK; +-} +- +-//---------------------------------------------------------------------------------------- +-NS_IMETHODIMP nsFileSpecImpl::GetLeafName(char * *aLeafName) +-//---------------------------------------------------------------------------------------- +-{ +- TEST_OUT_PTR(aLeafName) +- *aLeafName = mFileSpec.GetLeafName(); +- return mFileSpec.Error(); +-} +- +-//---------------------------------------------------------------------------------------- +-NS_IMETHODIMP nsFileSpecImpl::SetLeafName(const char * aLeafName) +-//---------------------------------------------------------------------------------------- +-{ +- mFileSpec.SetLeafName(aLeafName); +- return mFileSpec.Error(); +-} +- +-//---------------------------------------------------------------------------------------- +-NS_IMETHODIMP nsFileSpecImpl::GetParent(nsIFileSpec * *aParent) +-//---------------------------------------------------------------------------------------- +-{ +- TEST_OUT_PTR(aParent) +- nsFileSpec parent; +- mFileSpec.GetParent(parent); +- return MakeInterface(parent, aParent); +-} +- +-//---------------------------------------------------------------------------------------- +-NS_IMETHODIMP nsFileSpecImpl::MakeUnique() +-//---------------------------------------------------------------------------------------- +-{ +- mFileSpec.MakeUnique(); +- return mFileSpec.Error(); +-} +- +-//---------------------------------------------------------------------------------------- +-NS_IMETHODIMP nsFileSpecImpl::MakeUniqueWithSuggestedName(const char *suggestedName) +-//---------------------------------------------------------------------------------------- +-{ +- mFileSpec.MakeUnique(suggestedName); +- return mFileSpec.Error(); +-} +- +-//---------------------------------------------------------------------------------------- +-NS_IMETHODIMP nsFileSpecImpl::GetModDate(PRUint32 *aModDate) +-//---------------------------------------------------------------------------------------- +-{ +- TEST_OUT_PTR(aModDate) +- nsFileSpec::TimeStamp stamp; +- mFileSpec.GetModDate(stamp); +- *aModDate = stamp; +- return mFileSpec.Error(); +-} +- +-//---------------------------------------------------------------------------------------- +-NS_IMETHODIMP nsFileSpecImpl::ModDateChanged(PRUint32 oldStamp, PRBool *_retval) +-//---------------------------------------------------------------------------------------- +-{ +- TEST_OUT_PTR(_retval) +- *_retval = mFileSpec.ModDateChanged(oldStamp); +- return mFileSpec.Error(); +-} +- +-//---------------------------------------------------------------------------------------- +-NS_IMETHODIMP nsFileSpecImpl::IsDirectory(PRBool *_retval) +-//---------------------------------------------------------------------------------------- +-{ +- TEST_OUT_PTR(_retval) +- *_retval = mFileSpec.IsDirectory(); +- return mFileSpec.Error(); +-} +- +-//---------------------------------------------------------------------------------------- +-NS_IMETHODIMP nsFileSpecImpl::IsFile(PRBool *_retval) +-//---------------------------------------------------------------------------------------- +-{ +- TEST_OUT_PTR(_retval) +- *_retval = mFileSpec.IsFile(); +- return mFileSpec.Error(); +-} +- +-//---------------------------------------------------------------------------------------- +-NS_IMETHODIMP nsFileSpecImpl::Exists(PRBool *_retval) +-//---------------------------------------------------------------------------------------- +-{ +- TEST_OUT_PTR(_retval) +- *_retval = mFileSpec.Exists(); +- return mFileSpec.Error(); +-} +- +-//---------------------------------------------------------------------------------------- +-NS_IMETHODIMP nsFileSpecImpl::IsHidden(PRBool *_retval) +-//---------------------------------------------------------------------------------------- +-{ +- TEST_OUT_PTR(_retval) +- *_retval = mFileSpec.IsHidden(); +- return mFileSpec.Error(); +-} +- +-//---------------------------------------------------------------------------------------- +-NS_IMETHODIMP nsFileSpecImpl::IsSymlink(PRBool *_retval) +-//---------------------------------------------------------------------------------------- +-{ +- TEST_OUT_PTR(_retval) +- *_retval = mFileSpec.IsSymlink(); +- return mFileSpec.Error(); +-} +- +-//---------------------------------------------------------------------------------------- +-NS_IMETHODIMP nsFileSpecImpl::ResolveSymlink() +-//---------------------------------------------------------------------------------------- +-{ +- PRBool ignore; +- return mFileSpec.ResolveSymlink(ignore); +-} +- +-//---------------------------------------------------------------------------------------- +-NS_IMETHODIMP nsFileSpecImpl::GetFileSize(PRUint32 *aFileSize) +-//---------------------------------------------------------------------------------------- +-{ +- TEST_OUT_PTR(aFileSize) +- *aFileSize = mFileSpec.GetFileSize(); +- return mFileSpec.Error(); +-} +- +-//---------------------------------------------------------------------------------------- +-NS_IMETHODIMP nsFileSpecImpl::GetDiskSpaceAvailable(PRInt64 *aDiskSpaceAvailable) +-//---------------------------------------------------------------------------------------- +-{ +- TEST_OUT_PTR(aDiskSpaceAvailable) +- *aDiskSpaceAvailable = mFileSpec.GetDiskSpaceAvailable(); +- return mFileSpec.Error(); +-} +- +-//---------------------------------------------------------------------------------------- +-NS_IMETHODIMP nsFileSpecImpl::AppendRelativeUnixPath(const char *relativePath) +-//---------------------------------------------------------------------------------------- +-{ +- mFileSpec += relativePath; +- return mFileSpec.Error(); +-} +- +-//---------------------------------------------------------------------------------------- +-NS_IMETHODIMP nsFileSpecImpl::Touch() +-//---------------------------------------------------------------------------------------- +-{ +- // create an empty file, like the UNIX touch command. +- nsresult rv; +- rv = OpenStreamForWriting(); +- if (NS_FAILED(rv)) return rv; +- rv = CloseStream(); +- return rv; +-} +- +-//---------------------------------------------------------------------------------------- +-NS_IMETHODIMP nsFileSpecImpl::CreateDir() +-//---------------------------------------------------------------------------------------- +-{ +- mFileSpec.CreateDir(); +- return mFileSpec.Error(); +-} +- +-//---------------------------------------------------------------------------------------- +-NS_IMETHODIMP nsFileSpecImpl::Delete(PRBool aRecursive) +-//---------------------------------------------------------------------------------------- +-{ +- mFileSpec.Delete(aRecursive); +- return mFileSpec.Error(); +-} +-//---------------------------------------------------------------------------------------- +-NS_IMETHODIMP nsFileSpecImpl::Truncate(PRInt32 aNewLength) +-//---------------------------------------------------------------------------------------- +-{ +- return mFileSpec.Truncate(aNewLength); +-} +- +-//---------------------------------------------------------------------------------------- +-NS_IMETHODIMP nsFileSpecImpl::Rename(const char *newLeafName) +-//---------------------------------------------------------------------------------------- +-{ +- return mFileSpec.Rename(newLeafName); +-} +- +-//---------------------------------------------------------------------------------------- +-NS_IMETHODIMP nsFileSpecImpl::CopyToDir(const nsIFileSpec *newParentDir) +-//---------------------------------------------------------------------------------------- +-{ +- return mFileSpec.CopyToDir(FILESPEC(newParentDir)); +-} +- +-//---------------------------------------------------------------------------------------- +-NS_IMETHODIMP nsFileSpecImpl::MoveToDir(const nsIFileSpec *newParentDir) +-//---------------------------------------------------------------------------------------- +-{ +- return mFileSpec.MoveToDir(FILESPEC(newParentDir)); +-} +- +-//---------------------------------------------------------------------------------------- +-NS_IMETHODIMP nsFileSpecImpl::Execute(const char *args) +-//---------------------------------------------------------------------------------------- +-{ +- return mFileSpec.Execute(args); +-} +- +-//---------------------------------------------------------------------------------------- +-NS_IMETHODIMP nsFileSpecImpl::OpenStreamForReading() +-//---------------------------------------------------------------------------------------- +-{ +- if (mInputStream || mOutputStream) +- return NS_ERROR_FAILURE; +- return NS_NewTypicalInputFileStream((nsISupports**)&mInputStream, mFileSpec); +-} +- +-//---------------------------------------------------------------------------------------- +-NS_IMETHODIMP nsFileSpecImpl::OpenStreamForWriting() +-//---------------------------------------------------------------------------------------- +-{ +- if (mInputStream || mOutputStream) +- return NS_ERROR_FAILURE; +- return NS_NewTypicalOutputFileStream((nsISupports**)&mOutputStream, mFileSpec); +-} +- +-//---------------------------------------------------------------------------------------- +-NS_IMETHODIMP nsFileSpecImpl::OpenStreamForReadingAndWriting() +-//---------------------------------------------------------------------------------------- +-{ +- if (mInputStream || mOutputStream) +- return NS_ERROR_FAILURE; +- nsresult result = NS_NewTypicalInputFileStream((nsISupports**)&mInputStream, mFileSpec); +- if (NS_SUCCEEDED(result)) +- result = NS_NewTypicalOutputFileStream((nsISupports**)&mOutputStream, mFileSpec); +- return result; +-} +- +-//---------------------------------------------------------------------------------------- +-NS_IMETHODIMP nsFileSpecImpl::CloseStream() +-//---------------------------------------------------------------------------------------- +-{ +- NS_IF_RELEASE(mInputStream); +- NS_IF_RELEASE(mOutputStream); +- return NS_OK; +-} +- +-//---------------------------------------------------------------------------------------- +-NS_IMETHODIMP nsFileSpecImpl::IsStreamOpen(PRBool *_retval) +-//---------------------------------------------------------------------------------------- +-{ +- TEST_OUT_PTR(_retval) +- *_retval = (mInputStream || mOutputStream); +- return NS_OK; +-} +- +-//---------------------------------------------------------------------------------------- +-NS_IMETHODIMP nsFileSpecImpl::GetInputStream(nsIInputStream** _retval) +-//---------------------------------------------------------------------------------------- +-{ +- TEST_OUT_PTR(_retval) +- if (!mInputStream) { +- nsresult rv = OpenStreamForReading(); +- if (NS_FAILED(rv)) return rv; +- } +- *_retval = mInputStream; +- NS_IF_ADDREF(mInputStream); +- return NS_OK; +-} +- +-//---------------------------------------------------------------------------------------- +-NS_IMETHODIMP nsFileSpecImpl::GetOutputStream(nsIOutputStream** _retval) +-//---------------------------------------------------------------------------------------- +-{ +- TEST_OUT_PTR(_retval) +- if (!mOutputStream) { +- nsresult rv = OpenStreamForWriting(); +- if (NS_FAILED(rv)) return rv; +- } +- *_retval = mOutputStream; +- NS_IF_ADDREF(mOutputStream); +- return NS_OK; +-} +- +-//---------------------------------------------------------------------------------------- +-NS_IMETHODIMP nsFileSpecImpl::SetFileContents(const char* inString) +-//---------------------------------------------------------------------------------------- +-{ +- nsresult rv = OpenStreamForWriting(); +- if (NS_FAILED(rv)) return rv; +- PRInt32 count; +- rv = Write(inString, PL_strlen(inString), &count); +- nsresult rv2 = CloseStream(); +- return NS_FAILED(rv) ? rv : rv2; +-} +- +-//---------------------------------------------------------------------------------------- +-NS_IMETHODIMP nsFileSpecImpl::GetFileContents(char** _retval) +-//---------------------------------------------------------------------------------------- +-{ +- TEST_OUT_PTR(_retval) +- *_retval = nsnull; +- nsresult rv = OpenStreamForReading(); +- if (NS_FAILED(rv)) return rv; +- PRInt32 theSize; +- rv = GetFileSize((PRUint32*)&theSize); +- if (NS_SUCCEEDED(rv)) +- rv = Read(_retval, theSize, &theSize); +- if (NS_SUCCEEDED(rv)) +- (*_retval)[theSize] = 0; +- nsresult rv2 = CloseStream(); +- return NS_FAILED(rv) ? rv : rv2; +-} +- +-//---------------------------------------------------------------------------------------- +-NS_IMETHODIMP nsFileSpecImpl::GetFileSpec(nsFileSpec *aFileSpec) +-//---------------------------------------------------------------------------------------- +-{ +- TEST_OUT_PTR(aFileSpec) +- *aFileSpec = mFileSpec; +- return NS_OK; +-} +- +-//---------------------------------------------------------------------------------------- +-NS_IMETHODIMP nsFileSpecImpl::Equals(nsIFileSpec *spec, PRBool *result) +-//---------------------------------------------------------------------------------------- +-{ +- nsresult rv; +- +- if (!result || !spec) return NS_ERROR_NULL_POINTER; +- +- nsFileSpec otherSpec; +- +- rv = spec->GetFileSpec(&otherSpec); +- if (NS_FAILED(rv)) return rv; +- +- if (mFileSpec == otherSpec) { +- *result = PR_TRUE; +- } +- else { +- *result = PR_FALSE; +- } +- +- return NS_OK; +-} +- +-//---------------------------------------------------------------------------------------- +-NS_IMETHODIMP nsFileSpecImpl::SetFromFileSpec(const nsFileSpec& aFileSpec) +-//---------------------------------------------------------------------------------------- +-{ +- mFileSpec = aFileSpec; +- return NS_OK; +-} +- +-//---------------------------------------------------------------------------------------- +-NS_IMETHODIMP nsFileSpecImpl::Eof(PRBool *_retval) +-//---------------------------------------------------------------------------------------- +-{ +- TEST_OUT_PTR(_retval) +- if (!mInputStream) +- return NS_ERROR_NULL_POINTER; +- nsInputFileStream s(mInputStream); +- *_retval = s.eof(); +- return NS_OK; +-} +- +-//---------------------------------------------------------------------------------------- +-NS_IMETHODIMP nsFileSpecImpl::Read(char** buffer, PRInt32 requestedCount, PRInt32 *_retval) +-//---------------------------------------------------------------------------------------- +-{ +- TEST_OUT_PTR(_retval) +- TEST_OUT_PTR(buffer) +- if (!mInputStream) { +- nsresult rv = OpenStreamForReading(); +- if (NS_FAILED(rv)) return rv; +- } +- if (!*buffer) +- *buffer = (char*)PR_Malloc(requestedCount + 1); +- if (!mInputStream) +- return NS_ERROR_NULL_POINTER; +- nsInputFileStream s(mInputStream); +- *_retval = s.read(*buffer, requestedCount); +- return s.error(); +-} +- +-//---------------------------------------------------------------------------------------- +-NS_IMETHODIMP nsFileSpecImpl::ReadLine(char** line, PRInt32 bufferSize, PRBool *wasTruncated) +-//---------------------------------------------------------------------------------------- +-{ +- TEST_OUT_PTR(wasTruncated) +- TEST_OUT_PTR(line) +- if (!mInputStream) { +- nsresult rv = OpenStreamForReading(); +- if (NS_FAILED(rv)) return rv; +- } +- if (!*line) +- *line = (char*)PR_Malloc(bufferSize + 1); +- if (!mInputStream) +- return NS_ERROR_NULL_POINTER; +- nsInputFileStream s(mInputStream); +- *wasTruncated = !s.readline(*line, bufferSize); +- return s.error(); +-} +- +-//---------------------------------------------------------------------------------------- +-NS_IMETHODIMP nsFileSpecImpl::Write(const char * data, PRInt32 requestedCount, PRInt32 *_retval) +-//---------------------------------------------------------------------------------------- +-{ +- TEST_OUT_PTR(_retval) +- //if (!mOutputStream) +- // return NS_ERROR_NULL_POINTER; +- if (!mOutputStream) { +- nsresult rv = OpenStreamForWriting(); +- if (NS_FAILED(rv)) +- return rv; +- } +- nsOutputFileStream s(mOutputStream); +- *_retval = s.write(data, requestedCount); +- return s.error(); +-} +- +-//---------------------------------------------------------------------------------------- +-NS_IMETHODIMP nsFileSpecImpl::Flush() +-//---------------------------------------------------------------------------------------- +-{ +- if (!mOutputStream) +- return NS_ERROR_NULL_POINTER; +- nsOutputFileStream s(mOutputStream); +- s.flush(); +- return s.error(); +-} +- +-//---------------------------------------------------------------------------------------- +-NS_IMETHODIMP nsFileSpecImpl::Seek(PRInt32 offset) +-//---------------------------------------------------------------------------------------- +-{ +- nsresult result = NS_OK; +- if (mOutputStream) +- { +- nsOutputFileStream os(mOutputStream); +- os.seek(offset); +- result = os.error(); +- } +- if (NS_SUCCEEDED(result) && mInputStream) +- { +- nsInputFileStream is(mInputStream); +- is.seek(offset); +- result = is.error(); +- } +- return result; +-} +- +-//---------------------------------------------------------------------------------------- +-NS_IMETHODIMP nsFileSpecImpl::Tell(PRInt32 *_retval) +-//---------------------------------------------------------------------------------------- +-{ +- TEST_OUT_PTR(_retval) +- if (!mInputStream) +- return NS_ERROR_NULL_POINTER; +- nsInputFileStream s(mInputStream); +- *_retval = s.tell(); +- return s.error(); +-} +- +-//---------------------------------------------------------------------------------------- +-NS_IMETHODIMP nsFileSpecImpl::EndLine() +-//---------------------------------------------------------------------------------------- +-{ +- nsOutputFileStream s(mOutputStream); +- s << nsEndl; +- return s.error(); +-} +- +-NS_IMPL_ISUPPORTS1(nsDirectoryIteratorImpl, nsIDirectoryIterator) +- +-//---------------------------------------------------------------------------------------- +-nsDirectoryIteratorImpl::nsDirectoryIteratorImpl() +-//---------------------------------------------------------------------------------------- +- : mDirectoryIterator(nsnull) +-{ +-} +- +-//---------------------------------------------------------------------------------------- +-nsDirectoryIteratorImpl::~nsDirectoryIteratorImpl() +-//---------------------------------------------------------------------------------------- +-{ +- delete mDirectoryIterator; +-} +- +-//---------------------------------------------------------------------------------------- +-NS_IMETHODIMP nsDirectoryIteratorImpl::Init(nsIFileSpec *parent, PRBool resolveSymlink) +-//---------------------------------------------------------------------------------------- +-{ +- delete mDirectoryIterator; +- mDirectoryIterator = new nsDirectoryIterator(FILESPEC(parent), resolveSymlink); +- if (!mDirectoryIterator) +- return NS_ERROR_OUT_OF_MEMORY; +- return NS_OK; +-} +- +-//---------------------------------------------------------------------------------------- +-NS_IMETHODIMP nsDirectoryIteratorImpl::Exists(PRBool *_retval) +-//---------------------------------------------------------------------------------------- +-{ +- TEST_OUT_PTR(_retval) +- if (!mDirectoryIterator) +- return NS_ERROR_NULL_POINTER; +- *_retval = mDirectoryIterator->Exists(); +- return NS_OK; +-} +- +-//---------------------------------------------------------------------------------------- +-NS_IMETHODIMP nsDirectoryIteratorImpl::Next() +-//---------------------------------------------------------------------------------------- +-{ +- if (!mDirectoryIterator) +- return NS_ERROR_NULL_POINTER; +- (*mDirectoryIterator)++; +- return NS_OK; +-} +- +-//---------------------------------------------------------------------------------------- +-NS_IMETHODIMP nsDirectoryIteratorImpl::GetCurrentSpec(nsIFileSpec * *aCurrentSpec) +-//---------------------------------------------------------------------------------------- +-{ +- if (!mDirectoryIterator) +- return NS_ERROR_NULL_POINTER; +- return nsFileSpecImpl::MakeInterface(mDirectoryIterator->Spec(), aCurrentSpec); +-} +- +-//---------------------------------------------------------------------------------------- +-NS_IMETHODIMP nsDirectoryIteratorImpl::Create(nsISupports* outer, const nsIID& aIID, void* *aIFileSpec) +-//---------------------------------------------------------------------------------------- +-{ +- if (aIFileSpec == NULL) +- return NS_ERROR_NULL_POINTER; +- +- nsDirectoryIteratorImpl* it = new nsDirectoryIteratorImpl; +- if (!it) +- return NS_ERROR_OUT_OF_MEMORY; +- +- nsresult rv = it->QueryInterface(aIID, aIFileSpec); +- if (NS_FAILED(rv)) +- { +- delete it; +- return rv; +- } +- return rv; +-} +- +-//---------------------------------------------------------------------------------------- +-NS_IMETHODIMP nsFileSpecImpl::Create(nsISupports* outer, const nsIID& aIID, void* *aIFileSpec) +-//---------------------------------------------------------------------------------------- +-{ +- if (aIFileSpec == NULL) +- return NS_ERROR_NULL_POINTER; +- +- nsFileSpecImpl* it = new nsFileSpecImpl; +- if (!it) +- return NS_ERROR_OUT_OF_MEMORY; +- +- nsresult rv = it->QueryInterface(aIID, aIFileSpec); +- if (NS_FAILED(rv)) +- { +- delete it; +- return rv; +- } +- return rv; +-} +- +-//---------------------------------------------------------------------------------------- +-nsresult NS_NewFileSpecWithSpec(const nsFileSpec& aSrcFileSpec, nsIFileSpec **result) +-//---------------------------------------------------------------------------------------- +-{ +- if (!result) +- return NS_ERROR_NULL_POINTER; +- +- return nsFileSpecImpl::MakeInterface(aSrcFileSpec, result); +-} +- +-//---------------------------------------------------------------------------------------- +-nsresult NS_NewFileSpec(nsIFileSpec** result) +-//---------------------------------------------------------------------------------------- +-{ +- return nsFileSpecImpl::Create(nsnull, NS_GET_IID(nsIFileSpec), (void**)result); +-} +- +-//---------------------------------------------------------------------------------------- +-nsresult NS_NewFileSpecFromIFile(nsIFile *aFile, nsIFileSpec **result) +-//---------------------------------------------------------------------------------------- +-{ +- nsresult rv = nsFileSpecImpl::Create(nsnull, NS_GET_IID(nsIFileSpec), (void**)result); +- if (NS_FAILED(rv)) return rv; +- +- nsCAutoString path; +- rv = aFile->GetNativePath(path); +- if (NS_FAILED(rv)) return rv; +- +- rv = (*result)->SetNativePath(path.get()); +- if (NS_FAILED(rv)) +- NS_RELEASE(*result); +- return rv; +-} +- +-//---------------------------------------------------------------------------------------- +-nsresult NS_NewDirectoryIterator(nsIDirectoryIterator** result) +-//---------------------------------------------------------------------------------------- +-{ +- return nsDirectoryIteratorImpl::Create(nsnull, NS_GET_IID(nsIDirectoryIterator), (void**)result); +-} +Index: xpcom/obsolete/component/nsFileSpecImpl.h +=================================================================== +RCS file: xpcom/obsolete/component/nsFileSpecImpl.h +diff -N xpcom/obsolete/component/nsFileSpecImpl.h +--- xpcom/obsolete/component/nsFileSpecImpl.h 18 Apr 2004 14:18:15 -0000 1.3 ++++ /dev/null 1 Jan 1970 00:00:00 -0000 +@@ -1,116 +0,0 @@ +-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +-/* ***** BEGIN LICENSE BLOCK ***** +- * Version: MPL 1.1/GPL 2.0/LGPL 2.1 +- * +- * The contents of this file are subject to the Mozilla 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/MPL/ +- * +- * 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.org code. +- * +- * The Initial Developer of the Original Code is +- * Netscape Communications Corporation. +- * Portions created by the Initial Developer are Copyright (C) 1998 +- * the Initial Developer. All Rights Reserved. +- * +- * Contributor(s): +- * +- * Alternatively, the contents of this file may be used under the terms of +- * either of the GNU General Public License Version 2 or later (the "GPL"), +- * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +- * in which case the provisions of the GPL or the LGPL are applicable instead +- * of those above. If you wish to allow use of your version of this file only +- * under the terms of either the GPL or the LGPL, and not to allow others to +- * use your version of this file under the terms of the MPL, indicate your +- * decision by deleting the provisions above and replace them with the notice +- * and other provisions required by the GPL or the LGPL. If you do not delete +- * the provisions above, a recipient may use your version of this file under +- * the terms of any one of the MPL, the GPL or the LGPL. +- * +- * ***** END LICENSE BLOCK ***** */ +- +-#ifndef _FILESPECIMPL_H_ +-#define _FILESPECIMPL_H_ +- +-#include "nscore.h" +-#include "nsIFileSpec.h" +-#include "nsFileSpec.h" +- +-//======================================================================================== +-class nsFileSpecImpl +-//======================================================================================== +- : public nsIFileSpec +-{ +- +- public: +- +- NS_DECL_ISUPPORTS +- +- NS_DECL_NSIFILESPEC +- +- //---------------------- +- // COM Cruft +- //---------------------- +- +- static NS_METHOD Create(nsISupports* outer, const nsIID& aIID, void* *aIFileSpec); +- +- //---------------------- +- // Implementation +- //---------------------- +- +- nsFileSpecImpl(); +- nsFileSpecImpl(const nsFileSpec& inSpec); +- static nsresult MakeInterface(const nsFileSpec& inSpec, nsIFileSpec** outSpec); +- +- //---------------------- +- // Data +- //---------------------- +- +- nsFileSpec mFileSpec; +- nsIInputStream* mInputStream; +- nsIOutputStream* mOutputStream; +- +-private: +- ~nsFileSpecImpl(); +-}; // class nsFileSpecImpl +- +-//======================================================================================== +-class nsDirectoryIteratorImpl +-//======================================================================================== +- : public nsIDirectoryIterator +-{ +- +-public: +- +- nsDirectoryIteratorImpl(); +- +- NS_DECL_ISUPPORTS +- +- NS_IMETHOD Init(nsIFileSpec *parent, PRBool resolveSymlink); +- +- NS_IMETHOD Exists(PRBool *_retval); +- +- NS_IMETHOD Next(); +- +- NS_IMETHOD GetCurrentSpec(nsIFileSpec * *aCurrentSpec); +- +- //---------------------- +- // COM Cruft +- //---------------------- +- +- static NS_METHOD Create(nsISupports* outer, const nsIID& aIID, void* *aIFileSpec); +- +-private: +- ~nsDirectoryIteratorImpl(); +- +-protected: +- nsDirectoryIterator* mDirectoryIterator; +-}; // class nsDirectoryIteratorImpl +- +-#endif // _FILESPECIMPL_H_ +Index: xpcom/obsolete/component/nsIRegistry.idl +=================================================================== +RCS file: xpcom/obsolete/component/nsIRegistry.idl +diff -N xpcom/obsolete/component/nsIRegistry.idl +--- xpcom/obsolete/component/nsIRegistry.idl 18 Apr 2004 14:18:15 -0000 1.2 ++++ /dev/null 1 Jan 1970 00:00:00 -0000 +@@ -1,186 +0,0 @@ +-/* -*- Mode: IDL; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +-/* ***** BEGIN LICENSE BLOCK ***** +- * Version: MPL 1.1/GPL 2.0/LGPL 2.1 +- * +- * The contents of this file are subject to the Mozilla 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/MPL/ +- * +- * 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.org Code. +- * +- * The Initial Developer of the Original Code is +- * Netscape Communications Corporation. +- * Portions created by the Initial Developer are Copyright (C) 1999 +- * the Initial Developer. All Rights Reserved. +- * +- * Contributor(s): +- * +- * Alternatively, the contents of this file may be used under the terms of +- * either of the GNU General Public License Version 2 or later (the "GPL"), +- * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +- * in which case the provisions of the GPL or the LGPL are applicable instead +- * of those above. If you wish to allow use of your version of this file only +- * under the terms of either the GPL or the LGPL, and not to allow others to +- * use your version of this file under the terms of the MPL, indicate your +- * decision by deleting the provisions above and replace them with the notice +- * and other provisions required by the GPL or the LGPL. If you do not delete +- * the provisions above, a recipient may use your version of this file under +- * the terms of any one of the MPL, the GPL or the LGPL. +- * +- * ***** END LICENSE BLOCK ***** */ +-#include "nsISupports.idl" +-#include "nsIEnumerator.idl" +- +-interface nsIFile; +- +-typedef PRUint32 nsRegistryKey; +-typedef long nsWellKnownRegistry; +- +-[scriptable,uuid(5D41A440-8E37-11d2-8059-00600811A9C3)] +-interface nsIRegistry : nsISupports +-{ +- const long None = 0; +- const long Users = 1; +- const long Common = 2; +- const long CurrentUser = 3; +- +- const long ApplicationComponentRegistry = 1; +- const long ApplicationRegistry = 2; +- +- // Dont use this one. This for internal use only. +- const long ApplicationCustomRegistry = -1; +- +- void open(in nsIFile regFile); +- void openWellKnownRegistry(in nsWellKnownRegistry regid); +- +- void flush(); +- boolean isOpen(); +- +- 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); +- +- void getBytesUTF8(in nsRegistryKey baseKey, in string path, out PRUint32 length, [retval, array, size_is(length)] out PRUint8 valueArray); +- void setBytesUTF8(in nsRegistryKey baseKey, in string path, in PRUint32 length, [array, size_is(length)] in PRUint8 valueArray); +- 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); +- void setLongLong(in nsRegistryKey baseKey, in string path, inout PRInt64 value); +- +- /** +- * addSubtree() and friends need to be renamed to addKeyUTF8(). +- * If you are using these forms make sure you pass UTF8 data +- */ +- nsRegistryKey addSubtree(in nsRegistryKey baseKey, in string path); +- void removeSubtree(in nsRegistryKey baseKey, in string path); +- nsRegistryKey getSubtree(in nsRegistryKey baseKey, in string path); +- +- nsRegistryKey addSubtreeRaw(in nsRegistryKey baseKey, in string path); +- void removeSubtreeRaw(in nsRegistryKey baseKey, in string path); +- nsRegistryKey getSubtreeRaw(in nsRegistryKey baseKey, in string path); +- +- nsIEnumerator enumerateSubtrees(in nsRegistryKey baseKey); +- nsIEnumerator enumerateAllSubtrees(in nsRegistryKey baseKey); +- nsIEnumerator enumerateValues(in nsRegistryKey baseKey); +- +- const unsigned long String = 1; +- const unsigned long Int32 = 2; +- const unsigned long Bytes = 3; +- const unsigned long File = 4; +- +- unsigned long getValueType(in nsRegistryKey baseKey, in string path); +- PRUint32 getValueLength(in nsRegistryKey baseKey, in string path); +- void deleteValue(in nsRegistryKey baseKey, in string path); +- +- /** +- * escapeKey() takes arbitrary binary data and converts it into +- * valid ASCII which can be used as registry key or value names +- */ +- void escapeKey([array, size_is(length)] in PRUint8 key, in PRUint32 terminator, inout PRUint32 length, [retval, array, size_is(length)] out PRUint8 escaped); +- void unescapeKey([array, size_is(length)] in PRUint8 escaped, in PRUint32 terminator, inout PRUint32 length, [retval, array, size_is(length)] out PRUint8 key); +- +- attribute string currentUserName; +- +- void pack(); +-}; +- +-[scriptable, uuid(8cecf236-1dd2-11b2-893c-f9848956eaec)] +-interface nsIRegistryEnumerator : nsIEnumerator +-{ +- void currentItemInPlaceUTF8(out nsRegistryKey key, +- [shared, retval] out string item); +-}; +- +-[scriptable, uuid(D1B54831-AC07-11d2-805E-00600811A9C3)] +-interface nsIRegistryNode : nsISupports +-{ +- readonly attribute string nameUTF8; +- readonly attribute wstring name; +- readonly attribute nsRegistryKey key; +-}; +- +-[scriptable,uuid(5316C380-B2F8-11d2-A374-0080C6F80E4B)] +-interface nsIRegistryValue : nsISupports +-{ +- readonly attribute wstring name; +- readonly attribute string nameUTF8; +- readonly attribute unsigned long type; +- readonly attribute PRUint32 length; +-}; +- +-[uuid(3A15FC88-7A61-4Ab4-8E58-31E95fAB3DA8)] +-/** +- * It sucks that nsIRegistry has to always allocate and return +- * strings. nsIRegistryGetter adds in interfaces for non allocating getters +- * to registry values. +- */ +-interface nsIRegistryGetter : nsISupports +-{ +- /** +- * Get a string value of attribute valname in widestring or utf8 format +- * +- * @return +- * NS_OK on success. +- * buf has the string value copied into it. length is NOT changed. +- * NS_ERROR_REG_BUFFER_TOO_SMALL if not enough buffer space. +- * length is updated to actual length in chars including +- * terminating NULL and buf will be unchanged. +- * NS_ERROR_FAILURE if an unknown error happened. state of buf and +- * length undefined. +- * various failure codes otherwise. buf and length wont be updated. +- */ +- void getStringUTF8IntoBuffer(in nsRegistryKey baseKey, in string path, +- inout char buf, inout PRUint32 length); +- +- /** +- * Get a a byte array value of attribute valname +- * +- * @return +- * NS_OK on success. buf has the string value copied into it. +- * length is updated to actual number of bytes copied into buf. +- * NS_ERROR_REG_BUFFER_TOO_SMALL if not enough buffer space. +- * length is updated to actual length in PRUint8s including +- * terminating NULL and buf will be unchanged. +- * NS_ERROR_FAILURE if an unknown error happened. state of buf and +- * length undefined. +- * various other failure codes otherwise. buf and length wont be updated. +- */ +- void getBytesUTF8IntoBuffer(in nsRegistryKey baseKey, in string path, +- inout PRUint8 buf, inout PRUint32 length); +-}; +- +-%{ C++ +-#include "nsIRegistryUtils.h" +-%} +Index: xpcom/obsolete/component/nsIRegistryUtils.h +=================================================================== +RCS file: xpcom/obsolete/component/nsIRegistryUtils.h +diff -N xpcom/obsolete/component/nsIRegistryUtils.h +--- xpcom/obsolete/component/nsIRegistryUtils.h 18 Apr 2004 14:18:15 -0000 1.2 ++++ /dev/null 1 Jan 1970 00:00:00 -0000 +@@ -1,63 +0,0 @@ +-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +-/* ***** BEGIN LICENSE BLOCK ***** +- * Version: MPL 1.1/GPL 2.0/LGPL 2.1 +- * +- * The contents of this file are subject to the Mozilla 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/MPL/ +- * +- * 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.org code. +- * +- * The Initial Developer of the Original Code is +- * Netscape Communications Corporation. +- * Portions created by the Initial Developer are Copyright (C) 1998 +- * the Initial Developer. All Rights Reserved. +- * +- * Contributor(s): +- * +- * Alternatively, the contents of this file may be used under the terms of +- * either of the GNU General Public License Version 2 or later (the "GPL"), +- * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +- * in which case the provisions of the GPL or the LGPL are applicable instead +- * of those above. If you wish to allow use of your version of this file only +- * under the terms of either the GPL or the LGPL, and not to allow others to +- * use your version of this file under the terms of the MPL, indicate your +- * decision by deleting the provisions above and replace them with the notice +- * and other provisions required by the GPL or the LGPL. If you do not delete +- * the provisions above, a recipient may use your version of this file under +- * the terms of any one of the MPL, the GPL or the LGPL. +- * +- * ***** END LICENSE BLOCK ***** */ +-#ifndef __nsIRegistryUtils_h +-#define __nsIRegistryUtils_h +- +-#define NS_REGISTRY_CONTRACTID "@mozilla.org/registry;1" +-#define NS_REGISTRY_CLASSNAME "Mozilla Registry" +-/* be761f00-a3b0-11d2-996c-0080c7cb1081 */ +-#define NS_REGISTRY_CID \ +-{ \ +- 0xbe761f00, \ +- 0xa3b0, \ +- 0x11d2, \ +- {0x99, 0x6c, 0x00, 0x80, 0xc7, 0xcb, 0x10, 0x81} \ +-} +- +-/*------------------------------- Error Codes ---------------------------------- +-------------------------------------------------------------------------------*/ +-#define NS_ERROR_REG_BADTYPE NS_ERROR_GENERATE_FAILURE( NS_ERROR_MODULE_REG, 1 ) +-#define NS_ERROR_REG_NO_MORE NS_ERROR_GENERATE_SUCCESS( NS_ERROR_MODULE_REG, 2 ) +-#define NS_ERROR_REG_NOT_FOUND NS_ERROR_GENERATE_FAILURE( NS_ERROR_MODULE_REG, 3 ) +-#define NS_ERROR_REG_NOFILE NS_ERROR_GENERATE_FAILURE( NS_ERROR_MODULE_REG, 4 ) +-#define NS_ERROR_REG_BUFFER_TOO_SMALL NS_ERROR_GENERATE_FAILURE( NS_ERROR_MODULE_REG, 5 ) +-#define NS_ERROR_REG_NAME_TOO_LONG NS_ERROR_GENERATE_FAILURE( NS_ERROR_MODULE_REG, 6 ) +-#define NS_ERROR_REG_NO_PATH NS_ERROR_GENERATE_FAILURE( NS_ERROR_MODULE_REG, 7 ) +-#define NS_ERROR_REG_READ_ONLY NS_ERROR_GENERATE_FAILURE( NS_ERROR_MODULE_REG, 8 ) +-#define NS_ERROR_REG_BAD_UTF8 NS_ERROR_GENERATE_FAILURE( NS_ERROR_MODULE_REG, 9 ) +- +-#endif +Index: xpcom/obsolete/component/regExport.cpp +=================================================================== +RCS file: xpcom/obsolete/component/regExport.cpp +diff -N xpcom/obsolete/component/regExport.cpp +--- xpcom/obsolete/component/regExport.cpp 18 Apr 2004 14:18:15 -0000 1.2 ++++ /dev/null 1 Jan 1970 00:00:00 -0000 +@@ -1,357 +0,0 @@ +-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +-/* ***** BEGIN LICENSE BLOCK ***** +- * Version: MPL 1.1/GPL 2.0/LGPL 2.1 +- * +- * The contents of this file are subject to the Mozilla 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/MPL/ +- * +- * 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.org code. +- * +- * The Initial Developer of the Original Code is +- * Netscape Communications Corporation. +- * Portions created by the Initial Developer are Copyright (C) 1998 +- * the Initial Developer. All Rights Reserved. +- * +- * Contributor(s): +- * +- * Alternatively, the contents of this file may be used under the terms of +- * either of the GNU General Public License Version 2 or later (the "GPL"), +- * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +- * in which case the provisions of the GPL or the LGPL are applicable instead +- * of those above. If you wish to allow use of your version of this file only +- * under the terms of either the GPL or the LGPL, and not to allow others to +- * use your version of this file under the terms of the MPL, indicate your +- * decision by deleting the provisions above and replace them with the notice +- * and other provisions required by the GPL or the LGPL. If you do not delete +- * the provisions above, a recipient may use your version of this file under +- * the terms of any one of the MPL, the GPL or the LGPL. +- * +- * ***** END LICENSE BLOCK ***** */ +- +-#include +- +-#include "nsIServiceManager.h" +-#include "nsIComponentManager.h" +-#include "nsCOMPtr.h" +-#include "nsIRegistry.h" +-#include "nsIEnumerator.h" +-#include "nsILocalFile.h" +-#include "nsDependentString.h" +-#include "prmem.h" +-#include "plstr.h" +-#include "nsMemory.h" +- +-static void display( nsIRegistry *reg, nsRegistryKey root, const char *name ); +-static void displayValues( nsIRegistry *reg, nsRegistryKey root ); +-static void printString( const char *value, int indent ); +- +-int main( int argc, char *argv[] ) { +- +- +-#ifdef __MWERKS__ +- // Hack in some arguments. A NULL registry name is supposed to tell libreg +- // to use the default registry (which does seem to work). +- argc = 1; +- const char* myArgs[] = +- { +- "regExport" +- }; +- argv = const_cast(myArgs); +-#endif +- +- nsresult rv; +- +- // Initialize XPCOM +- nsIServiceManager *servMgr = NULL; +- rv = NS_InitXPCOM2(&servMgr, NULL, NULL); +- if (NS_FAILED(rv)) +- { +- // Cannot initialize XPCOM +- printf("Cannot initialize XPCOM. Exit. [rv=0x%08X]\n", (int)rv); +- exit(-1); +- } +- { +- // Get the component manager +- static NS_DEFINE_CID(kComponentManagerCID, NS_COMPONENTMANAGER_CID); +- nsCOMPtr compMgr = do_GetService(kComponentManagerCID, &rv); +- if (NS_FAILED(rv)) +- { +- // Cant get component manager +- printf("Cannot get component manager from service manager.. Exit. [rv=0x%08X]\n", (int)rv); +- exit(-1); +- } +- +- nsIRegistry *reg; +- +- if (argc>1) { +- // Create the registry +- rv = compMgr->CreateInstanceByContractID(NS_REGISTRY_CONTRACTID, NULL, +- NS_GET_IID(nsIRegistry), +- (void **) ®); +- // Check result. +- if ( NS_FAILED(rv) ) +- { +- printf( "Error opening registry file %s, rv=0x%08X\n", argv[1] , (int)rv ); +- return rv; +- } +- // Open it against the input file name. +- nsCOMPtr regFile; +- rv = NS_NewNativeLocalFile( nsDependentCString(argv[1]), PR_FALSE, getter_AddRefs(regFile) ); +- if ( NS_FAILED(rv) ) { +- printf( "Error instantiating local file for %s, rv=0x%08X\n", argv[1], (int)rv ); +- return rv; +- } +- +- rv = reg->Open( regFile ); +- +- if ( rv == NS_OK ) +- { +- printf( "Registry %s opened OK.\n", argv[1] ); +- +- // Recurse over all 3 branches. +- display( reg, nsIRegistry::Common, "nsRegistry::Common" ); +- display( reg, nsIRegistry::Users, "nsRegistry::Users" ); +- } +- NS_RELEASE(reg); +- } +- else +- { +- // 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->CreateInstanceByContractID(NS_REGISTRY_CONTRACTID, 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_ERROR_REG_BADTYPE ) { +- printf( "\n\n\nThere is no \n" ); +- } +- else if ( rv == NS_OK ) { +- +- printf( "\n\n\nRegistry %s opened OK.\n", "\n" ); +- +- // Recurse over all 3 branches. +- display( reg, nsIRegistry::Common, "nsRegistry::Common" ); +- display( reg, nsIRegistry::Users, "nsRegistry::Users" ); +- } +- NS_RELEASE(reg); +- } +- } +- NS_ShutdownXPCOM( servMgr ); +- +- return rv; +-} +- +-void display( nsIRegistry *reg, nsRegistryKey root, const char *rootName ) { +- // Print out key name. +- printf( "%s\n", rootName ); +- +- // Make sure it isn't a "root" key. +- if ( root != nsIRegistry::Common +- && +- root != nsIRegistry::Users +- && +- root != nsIRegistry::CurrentUser ) { +- // Print values stored under this key. +- displayValues( reg, root ); +- } +- +- // Enumerate all subkeys (immediately) under the given node. +- nsIEnumerator *keys; +- nsresult rv = reg->EnumerateSubtrees( root, &keys ); +- +- // Check result. +- if ( rv == NS_OK ) { +- // Set enumerator to beginning. +- rv = keys->First(); +- // Enumerate subkeys till done. +- while( NS_SUCCEEDED( rv ) && (NS_OK != keys->IsDone()) ) { +- nsISupports *base; +- rv = keys->CurrentItem( &base ); +- // Test result. +- if ( rv == NS_OK ) { +- // Get specific interface. +- nsIRegistryNode *node; +- nsIID nodeIID = NS_IREGISTRYNODE_IID; +- rv = base->QueryInterface( nodeIID, (void**)&node ); +- // Test that result. +- if ( rv == NS_OK ) { +- // Get node name. +- char *name; +- rv = node->GetNameUTF8( &name ); +- // Test result. +- if ( rv == NS_OK ) { +- // Build complete name. +- char *fullName = new char[ PL_strlen(rootName) + PL_strlen(name) + 5 ]; +- PL_strcpy( fullName, rootName ); +- PL_strcat( fullName, " - " ); +- PL_strcat( fullName, name ); +- // Display contents under this subkey. +- nsRegistryKey key; +- rv = reg->GetSubtreeRaw( root, name, &key ); +- if ( rv == NS_OK ) { +- display( reg, key, fullName ); +- printf( "\n" ); +- } else { +- printf( "Error getting key, rv=0x%08X\n", (int)rv ); +- } +- delete [] fullName; +- } else { +- printf( "Error getting subtree name, rv=0x%08X\n", (int)rv ); +- } +- // Release node. +- node->Release(); +- } else { +- printf( "Error converting base node ptr to nsIRegistryNode, rv=0x%08X\n", (int)rv ); +- } +- // Release item. +- base->Release(); +- +- // Advance to next key. +- rv = keys->Next(); +- // Check result. +- if ( NS_SUCCEEDED( rv ) ) { +- } else { +- printf( "Error advancing enumerator, rv=0x%08X\n", (int)rv ); +- } +- } else { +- printf( "Error getting current item, rv=0x%08X\n", (int)rv ); +- } +- } +- // Release key enumerator. +- keys->Release(); +- } else { +- printf( "Error creating enumerator for %s, root=0x%08X, rv=0x%08X\n", +- rootName, (int)root, (int)rv ); +- } +- return; +-} +- +-static void displayValues( nsIRegistry *reg, nsRegistryKey root ) { +- // Emumerate values at this registry location. +- nsIEnumerator *values; +- nsresult rv = reg->EnumerateValues( root, &values ); +- +- // Check result. +- if ( rv == NS_OK ) { +- // Go to beginning. +- rv = values->First(); +- +- // Enumerate values till done. +- while( rv == NS_OK && (NS_OK != values->IsDone()) ) { +- nsISupports *base; +- rv = values->CurrentItem( &base ); +- // Test result. +- if ( rv == NS_OK ) { +- // Get specific interface. +- nsIRegistryValue *value; +- nsIID valueIID = NS_IREGISTRYVALUE_IID; +- rv = base->QueryInterface( valueIID, (void**)&value ); +- // Test that result. +- if ( rv == NS_OK ) { +- // Get node name. +- char *name; +- rv = value->GetNameUTF8( &name ); +- // Test result. +- if ( rv == NS_OK ) { +- // Print name: +- printf( "\t\t%s", name ); +- // Get info about this value. +- PRUint32 type; +- rv = reg->GetValueType( root, name, &type ); +- if ( rv == NS_OK ) { +- // Print value contents. +- switch ( type ) { +- case nsIRegistry::String: { +- char *strValue; +- rv = reg->GetStringUTF8( root, name, &strValue ); +- if ( rv == NS_OK ) { +- printString( strValue, strlen(name) ); +- nsMemory::Free( strValue ); +- } else { +- printf( "\t Error getting string value, rv=0x%08X", (int)rv ); +- } +- } +- break; +- +- case nsIRegistry::Int32: +- { +- PRInt32 val = 0; +- rv = reg->GetInt( root, name, &val ); +- if (NS_SUCCEEDED(rv)) { +- printf( "\t= Int32 [%d, 0x%x]", val, val); +- } +- else { +- printf( "\t Error getting int32 value, rv=%08X", (int)rv); +- } +- } +- break; +- +- case nsIRegistry::Bytes: +- printf( "\t= Bytes" ); +- break; +- +- case nsIRegistry::File: +- printf( "\t= File (?)" ); +- break; +- +- default: +- printf( "\t= ? (unknown type=0x%02X)", (int)type ); +- break; +- } +- } else { +- printf( "\t= ? (error getting value, rv=0x%08X)", (int)rv ); +- } +- printf("\n"); +- nsMemory::Free( name ); +- } else { +- printf( "Error getting value name, rv=0x%08X\n", (int)rv ); +- } +- // Release node. +- value->Release(); +- } else { +- printf( "Error converting base node ptr to nsIRegistryNode, rv=0x%08X\n", (int)rv ); +- } +- // Release item. +- base->Release(); +- +- // Advance to next key. +- rv = values->Next(); +- // Check result. +- if ( NS_SUCCEEDED( rv ) ) { +- } else { +- printf( "Error advancing enumerator, rv=0x%08X\n", (int)rv ); +- break; +- } +- } else { +- printf( "Error getting current item, rv=0x%08X\n", (int)rv ); +- break; +- } +- } +- +- values->Release(); +- } else { +- printf( "\t\tError enumerating values, rv=0x%08X\n", (int)rv ); +- } +- return; +-} +- +-static void printString( const char *value, int /*indent*/ ) { +- // For now, just dump contents. +- printf( "\t = %s", value ); +- return; +-} diff --git a/thunderbird.desktop b/thunderbird.desktop index 679fd8c..d11bf5e 100644 --- a/thunderbird.desktop +++ b/thunderbird.desktop @@ -5,7 +5,7 @@ Name=Thunderbird Email GenericName=Email Comment=Send and Receive Email Exec=thunderbird -Icon=thunderbird.png +Icon=thunderbird Terminal=false Type=Application StartupWMClass=Thunderbird-bin diff --git a/thunderbird.spec b/thunderbird.spec index 10dc55a..201bd88 100644 --- a/thunderbird.spec +++ b/thunderbird.spec @@ -7,8 +7,8 @@ Summary: Mozilla Thunderbird mail/newsgroup client Name: thunderbird -Version: 2.0.0.9 -Release: 2%{?dist} +Version: 2.0.0.12 +Release: 1%{?dist} URL: http://www.mozilla.org/projects/thunderbird/ License: MPLv1.1 or GPLv2+ or LGPLv2+ Group: Applications/Internet @@ -18,7 +18,7 @@ Group: Applications/Internet %define tarball thunderbird-2.0.0.0rc1-source.tar.bz2 %endif Source0: %{tarball} -Source1: thunderbird-langpacks-%{version}-20071115.tar.bz2 +Source1: thunderbird-langpacks-%{version}-20080226.tar.bz2 Source10: thunderbird-mozconfig Source11: thunderbird-mozconfig-branded Source12: thunderbird-redhat-default-prefs.js @@ -31,6 +31,7 @@ Source100: find-external-requires # Build patches Patch1: firefox-2.0-link-layout.patch Patch2: firefox-1.0-prdtoa.patch +Patch3: thunderbird-2.0.0.12-gcc43.patch Patch10: thunderbird-0.7.3-psfonts.patch Patch11: thunderbird-0.7.3-gnome-uriloader.patch @@ -102,6 +103,7 @@ Mozilla Thunderbird is a standalone mail and newsgroup client. %setup -q -n mozilla %patch1 -p1 -b .link-layout %patch2 -p0 +%patch3 -p0 -b .gcc43 %patch10 -p1 -b .psfonts %patch11 -p1 -b .gnome-uriloader @@ -178,9 +180,9 @@ make -f client.mk build DESTDIR=$RPM_BUILD_ROOT make install -%{__mkdir_p} $RPM_BUILD_ROOT{%{_libdir},%{_bindir},%{_datadir}/applications} +%{__mkdir_p} $RPM_BUILD_ROOT{%{_libdir},%{_bindir},%{_datadir}/applications,%{_datadir}/icons/hicolor/48x48/apps} -%{__install} -p -D %{SOURCE22} $RPM_BUILD_ROOT%{_datadir}/pixmaps/%{name}.png +%{__install} -p -D %{SOURCE22} $RPM_BUILD_ROOT%{_datadir}/icons/hicolor/48x48/apps/%{name}.png desktop-file-install --vendor mozilla \ --dir $RPM_BUILD_ROOT%{_datadir}/applications \ @@ -258,17 +260,24 @@ touch $RPM_BUILD_ROOT%{mozappdir}/components/xpti.dat %{__rm} -rf $RPM_BUILD_ROOT %post -update-desktop-database %{_datadir}/applications +update-desktop-database &> /dev/null || : +touch --no-create %{_datadir}/icons/hicolor +if [ -x %{_bindir}/gtk-update-icon-cache ]; then + %{_bindir}/gtk-update-icon-cache --quiet %{_datadir}/icons/hicolor || : +fi %postun -update-desktop-database %{_datadir}/applications - +update-desktop-database &> /dev/null || : +touch --no-create %{_datadir}/icons/hicolor +if [ -x %{_bindir}/gtk-update-icon-cache ]; then + %{_bindir}/gtk-update-icon-cache --quiet %{_datadir}/icons/hicolor || : +fi %files %defattr(-,root,root,-) %attr(755,root,root) %{_bindir}/thunderbird %attr(644,root,root) %{_datadir}/applications/mozilla-thunderbird.desktop -%attr(644,root,root) %{_datadir}/pixmaps/thunderbird.png +%attr(644,root,root) %{_datadir}/icons/hicolor/48x48/apps/thunderbird.png %dir %{mozappdir} %doc %{mozappdir}/LICENSE %{mozappdir}/chrome @@ -308,6 +317,10 @@ update-desktop-database %{_datadir}/applications #=============================================================================== %changelog +* Tue Feb 26 2008 Christopher Aillon 2.0.0.12-1 +- Update to 2.0.0.12 +- Fix up icon location and some scriptlets + * Sun Dec 9 2007 Christopher Aillon 2.0.0.9-2 - Fix some rpmlint warnings - Drop some old patches and obsoletes