зеркало из https://github.com/mozilla/pjs.git
remove nsIFileSpec from filter and related code, sr=mscott 33451
This commit is contained in:
Родитель
c7dc835ec2
Коммит
8177e8a274
|
@ -41,7 +41,6 @@
|
|||
#include "nsIMsgFilter.idl"
|
||||
#include "nsIMsgFilterHitNotify.idl"
|
||||
|
||||
interface nsIOFileStream;
|
||||
interface nsIOutputStream;
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -53,7 +52,7 @@ interface nsIOutputStream;
|
|||
|
||||
typedef long nsMsgFilterFileAttribValue;
|
||||
|
||||
[scriptable, uuid(ab0105ad-86bf-4862-9adb-84f4e266577c)]
|
||||
[scriptable, uuid(a5cf1698-251a-4c5a-9fcd-9ae518fda452)]
|
||||
interface nsIMsgFilterList : nsISupports {
|
||||
|
||||
const nsMsgFilterFileAttribValue attribNone = 0;
|
||||
|
@ -91,13 +90,13 @@ interface nsIMsgFilterList : nsISupports {
|
|||
|
||||
nsIMsgFilter createFilter(in wstring name);
|
||||
|
||||
void saveToFile(in nsIOFileStream stream);
|
||||
void saveToFile(in nsIOutputStream stream);
|
||||
|
||||
void parseCondition(in nsIMsgFilter aFilter, in string condition);
|
||||
// this is temporary so that we can save the filterlist to disk
|
||||
// without knowing where the filters were read from intially
|
||||
// (such as the filter list dialog)
|
||||
attribute nsIFileSpec defaultFile;
|
||||
attribute nsILocalFile defaultFile;
|
||||
void saveToDefaultFile();
|
||||
|
||||
|
||||
|
@ -116,10 +115,10 @@ interface nsIMsgFilterList : nsISupports {
|
|||
in nsILocalFile aMessageFile);
|
||||
|
||||
// IO routines, used by filter object filing code.
|
||||
void writeIntAttr(in nsMsgFilterFileAttribValue attrib, in long value, in nsIOFileStream stream);
|
||||
void writeStrAttr(in nsMsgFilterFileAttribValue attrib, in string value, in nsIOFileStream stream);
|
||||
void writeWstrAttr(in nsMsgFilterFileAttribValue attrib, in wstring value, in nsIOFileStream stream);
|
||||
void writeBoolAttr(in nsMsgFilterFileAttribValue attrib, in boolean value, in nsIOFileStream stream);
|
||||
void writeIntAttr(in nsMsgFilterFileAttribValue attrib, in long value, in nsIOutputStream stream);
|
||||
void writeStrAttr(in nsMsgFilterFileAttribValue attrib, in string value, in nsIOutputStream stream);
|
||||
void writeWstrAttr(in nsMsgFilterFileAttribValue attrib, in wstring value, in nsIOutputStream stream);
|
||||
void writeBoolAttr(in nsMsgFilterFileAttribValue attrib, in boolean value, in nsIOutputStream stream);
|
||||
boolean matchOrChangeFilterTarget(in string oldUri, in string newUri, in boolean caseInsensitive);
|
||||
|
||||
// for filter logging
|
||||
|
|
|
@ -60,9 +60,9 @@ public:
|
|||
with dialog boxes. To apply the new list call MSG_CloseFilterList.
|
||||
|
||||
*/
|
||||
NS_IMETHOD OpenFilterList(nsFileSpec *filterFile, nsIMsgFilterList **filterList) = 0;
|
||||
NS_IMETHOD OpenFilterList(nsILocalFile *filterFile, nsIMsgFilterList **filterList) = 0;
|
||||
NS_IMETHOD CloseFilterList(nsIMsgFilterList *filterList) = 0;
|
||||
NS_IMETHOD SaveFilterList(nsIMsgFilterList *filterList, nsFileSpec *filterFile) = 0; /* save without deleting */
|
||||
NS_IMETHOD SaveFilterList(nsIMsgFilterList *filterList, nsILocalFile *filterFile) = 0; /* save without deleting */
|
||||
NS_IMETHOD CancelFilterList(nsIMsgFilterList *filterList) = 0;
|
||||
|
||||
};
|
||||
|
|
|
@ -40,14 +40,14 @@
|
|||
#include "nsIMsgFilterList.idl"
|
||||
#include "nsIMsgWindow.idl"
|
||||
|
||||
[scriptable, uuid(6673cad0-072e-11d3-8d70-00805f8a6617)]
|
||||
[scriptable, uuid(fda31be9-b5c1-465b-99c9-c90835a214a3)]
|
||||
interface nsIMsgFilterService : nsISupports {
|
||||
|
||||
nsIMsgFilterList OpenFilterList(in nsIFileSpec filterFile, in nsIMsgFolder rootFolder, in nsIMsgWindow msgWindow);
|
||||
nsIMsgFilterList OpenFilterList(in nsILocalFile filterFile, in nsIMsgFolder rootFolder, in nsIMsgWindow msgWindow);
|
||||
void CloseFilterList(in nsIMsgFilterList filterList);
|
||||
|
||||
void SaveFilterList(in nsIMsgFilterList filterList,
|
||||
in nsIFileSpec filterFile);
|
||||
in nsILocalFile filterFile);
|
||||
|
||||
void CancelFilterList(in nsIMsgFilterList filterList);
|
||||
nsIMsgFilterList getTempFilterList(in nsIMsgFolder aFolder);
|
||||
|
|
|
@ -732,15 +732,15 @@ nsresult nsMsgFilter::ConvertMoveOrCopyToFolderValue(nsIMsgRuleAction *filterAct
|
|||
// set m_action.m_value.m_folderUri
|
||||
}
|
||||
|
||||
nsresult nsMsgFilter::SaveToTextFile(nsIOFileStream *aStream)
|
||||
nsresult nsMsgFilter::SaveToTextFile(nsIOutputStream *aStream)
|
||||
{
|
||||
NS_ENSURE_ARG_POINTER(aStream);
|
||||
if (m_unparseable)
|
||||
{
|
||||
PRUint32 bytesWritten;
|
||||
//we need to trim leading whitespaces before filing out
|
||||
m_unparsedBuffer.Trim(kWhitespace, PR_TRUE /*leadingCharacters*/, PR_FALSE /*trailingCharacters*/);
|
||||
*aStream << m_unparsedBuffer.get();
|
||||
return NS_OK;
|
||||
return aStream->Write(m_unparsedBuffer.get(), m_unparsedBuffer.Length(), &bytesWritten);
|
||||
}
|
||||
nsresult err = m_filterList->WriteWstrAttr(nsIMsgFilterList::attribName, m_filterName.get(), aStream);
|
||||
err = m_filterList->WriteBoolAttr(nsIMsgFilterList::attribEnabled, m_enabled, aStream);
|
||||
|
@ -753,7 +753,7 @@ nsresult nsMsgFilter::SaveToTextFile(nsIOFileStream *aStream)
|
|||
return err;
|
||||
}
|
||||
|
||||
nsresult nsMsgFilter::SaveRule(nsIOFileStream *aStream)
|
||||
nsresult nsMsgFilter::SaveRule(nsIOutputStream *aStream)
|
||||
{
|
||||
nsresult err = NS_OK;
|
||||
nsCOMPtr<nsIMsgFilterList> filterList;
|
||||
|
|
|
@ -93,8 +93,8 @@ public:
|
|||
nsMsgFilterType::NewsJavaScript)) != 0;}
|
||||
|
||||
// filing routines.
|
||||
nsresult SaveToTextFile(nsIOFileStream *aStream);
|
||||
nsresult SaveRule(nsIOFileStream *aStream);
|
||||
nsresult SaveToTextFile(nsIOutputStream *aStream);
|
||||
nsresult SaveRule(nsIOutputStream *aStream);
|
||||
|
||||
PRInt16 GetVersion();
|
||||
#ifdef DEBUG
|
||||
|
|
|
@ -117,7 +117,7 @@ NS_IMETHODIMP nsMsgFilterList::SetFolder(nsIMsgFolder *aFolder)
|
|||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsMsgFilterList::SaveToFile(nsIOFileStream *stream)
|
||||
NS_IMETHODIMP nsMsgFilterList::SaveToFile(nsIOutputStream *stream)
|
||||
{
|
||||
if (!stream)
|
||||
return NS_ERROR_NULL_POINTER;
|
||||
|
@ -127,7 +127,7 @@ NS_IMETHODIMP nsMsgFilterList::SaveToFile(nsIOFileStream *stream)
|
|||
NS_IMETHODIMP nsMsgFilterList::EnsureLogFile()
|
||||
{
|
||||
nsCOMPtr <nsILocalFile> file;
|
||||
nsresult rv = GetLogFileSpec(getter_AddRefs(file));
|
||||
nsresult rv = GetLogFile(getter_AddRefs(file));
|
||||
NS_ENSURE_SUCCESS(rv,rv);
|
||||
|
||||
PRBool exists;
|
||||
|
@ -146,7 +146,7 @@ nsresult nsMsgFilterList::TruncateLog()
|
|||
NS_ENSURE_SUCCESS(rv,rv);
|
||||
|
||||
nsCOMPtr <nsILocalFile> file;
|
||||
rv = GetLogFileSpec(getter_AddRefs(file));
|
||||
rv = GetLogFile(getter_AddRefs(file));
|
||||
NS_ENSURE_SUCCESS(rv,rv);
|
||||
|
||||
file->Remove(PR_FALSE);
|
||||
|
@ -174,7 +174,7 @@ NS_IMETHODIMP nsMsgFilterList::ClearLog()
|
|||
}
|
||||
|
||||
nsresult
|
||||
nsMsgFilterList::GetLogFileSpec(nsILocalFile **aFile)
|
||||
nsMsgFilterList::GetLogFile(nsILocalFile **aFile)
|
||||
{
|
||||
NS_ENSURE_ARG_POINTER(aFile);
|
||||
|
||||
|
@ -205,16 +205,13 @@ nsMsgFilterList::GetLogFileSpec(nsILocalFile **aFile)
|
|||
// mcom.test.htm
|
||||
if (type.Equals("nntp") && !isServer)
|
||||
{
|
||||
nsCOMPtr<nsIFileSpec> thisFolder;
|
||||
rv = m_folder->GetPath(getter_AddRefs(thisFolder));
|
||||
nsCOMPtr<nsILocalFile> thisFolder;
|
||||
rv = m_folder->GetFilePath(getter_AddRefs(thisFolder));
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
nsFileSpec spec;
|
||||
rv = thisFolder->GetFileSpec(&spec);
|
||||
nsCOMPtr<nsILocalFile> filterLogFile = do_CreateInstance(NS_LOCAL_FILE_CONTRACTID, &rv);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
nsCOMPtr<nsILocalFile> filterLogFile;
|
||||
rv = NS_FileSpecToIFile(&spec, getter_AddRefs(filterLogFile));
|
||||
rv = filterLogFile->InitWithFile(thisFolder);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
// NOTE:
|
||||
|
@ -247,7 +244,7 @@ nsMsgFilterList::GetLogURL(char **aLogURL)
|
|||
NS_ENSURE_ARG_POINTER(aLogURL);
|
||||
|
||||
nsCOMPtr <nsILocalFile> file;
|
||||
nsresult rv = GetLogFileSpec(getter_AddRefs(file));
|
||||
nsresult rv = GetLogFile(getter_AddRefs(file));
|
||||
NS_ENSURE_SUCCESS(rv,rv);
|
||||
|
||||
nsCString url;
|
||||
|
@ -285,7 +282,7 @@ nsMsgFilterList::GetLogStream(nsIOutputStream **aLogStream)
|
|||
|
||||
if (!m_logStream) {
|
||||
nsCOMPtr <nsILocalFile> logFile;
|
||||
rv = GetLogFileSpec(getter_AddRefs(logFile));
|
||||
rv = GetLogFile(getter_AddRefs(logFile));
|
||||
NS_ENSURE_SUCCESS(rv,rv);
|
||||
|
||||
// append to the end of the log file
|
||||
|
@ -377,33 +374,17 @@ nsMsgFilterList::ApplyFiltersToHdr(nsMsgFilterTypeType filterType,
|
|||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsMsgFilterList::SetDefaultFile(nsIFileSpec *aFileSpec)
|
||||
nsMsgFilterList::SetDefaultFile(nsILocalFile *aFile)
|
||||
{
|
||||
nsresult rv;
|
||||
m_defaultFile = do_CreateInstance(NS_FILESPEC_CONTRACTID, &rv);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
rv = m_defaultFile->FromFileSpec(aFileSpec);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
return NS_OK;
|
||||
m_defaultFile = aFile;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsMsgFilterList::GetDefaultFile(nsIFileSpec **aResult)
|
||||
nsMsgFilterList::GetDefaultFile(nsILocalFile **aResult)
|
||||
{
|
||||
NS_ENSURE_ARG_POINTER(aResult);
|
||||
|
||||
nsresult rv;
|
||||
nsCOMPtr<nsIFileSpec> fileSpec =
|
||||
do_CreateInstance(NS_FILESPEC_CONTRACTID, &rv);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
rv = fileSpec->FromFileSpec(m_defaultFile);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
*aResult = fileSpec;
|
||||
NS_ADDREF(*aResult);
|
||||
|
||||
NS_IF_ADDREF(*aResult = m_defaultFile);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
@ -440,11 +421,16 @@ static FilterFileAttribEntry FilterFileAttribTable[] =
|
|||
};
|
||||
|
||||
// If we want to buffer file IO, wrap it in here.
|
||||
char nsMsgFilterList::ReadChar(nsIOFileStream *aStream)
|
||||
char nsMsgFilterList::ReadChar(nsIInputStream *aStream)
|
||||
{
|
||||
char newChar;
|
||||
*aStream >> newChar;
|
||||
if (aStream->eof())
|
||||
PRUint32 bytesRead;
|
||||
nsresult rv = aStream->Read(&newChar, 1, &bytesRead);
|
||||
if (NS_FAILED(rv) || !bytesRead)
|
||||
return -1;
|
||||
PRUint32 bytesAvailable;
|
||||
rv = aStream->Available(&bytesAvailable);
|
||||
if (NS_FAILED(rv))
|
||||
return -1;
|
||||
else
|
||||
{
|
||||
|
@ -454,7 +440,7 @@ char nsMsgFilterList::ReadChar(nsIOFileStream *aStream)
|
|||
}
|
||||
}
|
||||
|
||||
char nsMsgFilterList::SkipWhitespace(nsIOFileStream *aStream)
|
||||
char nsMsgFilterList::SkipWhitespace(nsIInputStream *aStream)
|
||||
{
|
||||
char ch;
|
||||
do
|
||||
|
@ -469,7 +455,7 @@ PRBool nsMsgFilterList::StrToBool(nsCString &str)
|
|||
return str.Equals("yes") ;
|
||||
}
|
||||
|
||||
char nsMsgFilterList::LoadAttrib(nsMsgFilterFileAttribValue &attrib, nsIOFileStream *aStream)
|
||||
char nsMsgFilterList::LoadAttrib(nsMsgFilterFileAttribValue &attrib, nsIInputStream *aStream)
|
||||
{
|
||||
char attribStr[100];
|
||||
char curChar;
|
||||
|
@ -506,7 +492,7 @@ const char *nsMsgFilterList::GetStringForAttrib(nsMsgFilterFileAttribValue attri
|
|||
return nsnull;
|
||||
}
|
||||
|
||||
nsresult nsMsgFilterList::LoadValue(nsCString &value, nsIOFileStream *aStream)
|
||||
nsresult nsMsgFilterList::LoadValue(nsCString &value, nsIInputStream *aStream)
|
||||
{
|
||||
nsCAutoString valueStr;
|
||||
char curChar;
|
||||
|
@ -547,17 +533,17 @@ nsresult nsMsgFilterList::LoadValue(nsCString &value, nsIOFileStream *aStream)
|
|||
valueStr += curChar;
|
||||
curChar = ReadChar(aStream);
|
||||
}
|
||||
while (!aStream->eof());
|
||||
while (curChar != -1);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
nsresult nsMsgFilterList::LoadTextFilters(nsIOFileStream *aStream)
|
||||
nsresult nsMsgFilterList::LoadTextFilters(nsIInputStream *aStream)
|
||||
{
|
||||
nsresult err = NS_OK;
|
||||
PRUint32 bytesAvailable;
|
||||
nsMsgFilterFileAttribValue attrib;
|
||||
nsCOMPtr<nsIMsgRuleAction> currentFilterAction;
|
||||
// We'd really like to move lot's of these into the objects that they refer to.
|
||||
aStream->seek(PR_SEEK_SET, 0);
|
||||
do
|
||||
{
|
||||
nsCAutoString value;
|
||||
|
@ -731,7 +717,7 @@ nsresult nsMsgFilterList::LoadTextFilters(nsIOFileStream *aStream)
|
|||
}
|
||||
break;
|
||||
}
|
||||
} while (!aStream->eof());
|
||||
} while (NS_SUCCEEDED(aStream->Available(&bytesAvailable)));
|
||||
|
||||
if (m_curFilter)
|
||||
{
|
||||
|
@ -841,58 +827,62 @@ NS_IMETHODIMP nsMsgFilterList::ParseCondition(nsIMsgFilter *aFilter, const char
|
|||
return err;
|
||||
}
|
||||
|
||||
nsresult nsMsgFilterList::WriteIntAttr(nsMsgFilterFileAttribValue attrib, int value, nsIOFileStream *aStream)
|
||||
nsresult nsMsgFilterList::WriteIntAttr(nsMsgFilterFileAttribValue attrib, int value, nsIOutputStream *aStream)
|
||||
{
|
||||
const char *attribStr = GetStringForAttrib(attrib);
|
||||
if (attribStr)
|
||||
{
|
||||
*aStream << attribStr;
|
||||
*aStream << "=\"";
|
||||
*aStream << value;
|
||||
*aStream << "\"" MSG_LINEBREAK;
|
||||
}
|
||||
// XP_FilePrintf(fid, "%s=\"%d\"%s", attribStr, value, LINEBREAK);
|
||||
return NS_OK;
|
||||
nsresult rv = NS_OK;
|
||||
const char *attribStr = GetStringForAttrib(attrib);
|
||||
if (attribStr)
|
||||
{
|
||||
PRUint32 bytesWritten;
|
||||
nsCAutoString writeStr(attribStr);
|
||||
writeStr.AppendLiteral("=\"");
|
||||
writeStr.AppendInt(value);
|
||||
writeStr.AppendLiteral("\"" MSG_LINEBREAK);
|
||||
rv = aStream->Write(writeStr.get(), writeStr.Length(), &bytesWritten);
|
||||
}
|
||||
return rv;
|
||||
}
|
||||
|
||||
nsresult
|
||||
nsMsgFilterList::WriteStrAttr(nsMsgFilterFileAttribValue attrib,
|
||||
const char *str, nsIOFileStream *aStream)
|
||||
const char *str, nsIOutputStream *aStream)
|
||||
{
|
||||
if (str && str[0] && aStream) // only proceed if we actually have a string to write out.
|
||||
{
|
||||
char *escapedStr = nsnull;
|
||||
if (PL_strchr(str, '"'))
|
||||
escapedStr = nsMsgSearchTerm::EscapeQuotesInStr(str);
|
||||
nsresult rv = NS_OK;
|
||||
if (str && str[0] && aStream) // only proceed if we actually have a string to write out.
|
||||
{
|
||||
char *escapedStr = nsnull;
|
||||
if (PL_strchr(str, '"'))
|
||||
escapedStr = nsMsgSearchTerm::EscapeQuotesInStr(str);
|
||||
|
||||
const char *attribStr = GetStringForAttrib(attrib);
|
||||
if (attribStr)
|
||||
{
|
||||
*aStream << attribStr;
|
||||
*aStream << "=\"";
|
||||
*aStream << ((escapedStr) ? escapedStr : (const char *) str);
|
||||
*aStream << "\"" MSG_LINEBREAK;
|
||||
// XP_FilePrintf(fid, "%s=\"%s\"%s", attribStr, (escapedStr) ? escapedStr : str, LINEBREAK);
|
||||
}
|
||||
PR_FREEIF(escapedStr);
|
||||
}
|
||||
return NS_OK;
|
||||
const char *attribStr = GetStringForAttrib(attrib);
|
||||
if (attribStr)
|
||||
{
|
||||
PRUint32 bytesWritten;
|
||||
nsCAutoString writeStr(attribStr);
|
||||
writeStr.AppendLiteral("=\"");
|
||||
writeStr.Append((escapedStr) ? escapedStr : (const char *) str);
|
||||
writeStr.AppendLiteral("\"" MSG_LINEBREAK);
|
||||
rv = aStream->Write(writeStr.get(), writeStr.Length(), &bytesWritten);
|
||||
}
|
||||
PR_Free(escapedStr);
|
||||
}
|
||||
return rv;
|
||||
}
|
||||
|
||||
nsresult nsMsgFilterList::WriteBoolAttr(nsMsgFilterFileAttribValue attrib, PRBool boolVal, nsIOFileStream *aStream)
|
||||
nsresult nsMsgFilterList::WriteBoolAttr(nsMsgFilterFileAttribValue attrib, PRBool boolVal, nsIOutputStream *aStream)
|
||||
{
|
||||
return WriteStrAttr(attrib, (boolVal) ? "yes" : "no", aStream);
|
||||
return WriteStrAttr(attrib, (boolVal) ? "yes" : "no", aStream);
|
||||
}
|
||||
|
||||
nsresult
|
||||
nsMsgFilterList::WriteWstrAttr(nsMsgFilterFileAttribValue attrib,
|
||||
const PRUnichar *aFilterName, nsIOFileStream *aStream)
|
||||
const PRUnichar *aFilterName, nsIOutputStream *aStream)
|
||||
{
|
||||
WriteStrAttr(attrib, NS_ConvertUTF16toUTF8(aFilterName).get(), aStream);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
nsresult nsMsgFilterList::SaveTextFilters(nsIOFileStream *aStream)
|
||||
nsresult nsMsgFilterList::SaveTextFilters(nsIOutputStream *aStream)
|
||||
{
|
||||
nsresult err = NS_OK;
|
||||
const char *attribStr;
|
||||
|
|
|
@ -45,7 +45,6 @@
|
|||
#include "nsCOMPtr.h"
|
||||
#include "nsISupportsArray.h"
|
||||
#include "nsILocalFile.h"
|
||||
#include "nsIFileSpec.h"
|
||||
#include "nsIOutputStream.h"
|
||||
|
||||
const PRInt16 kFileVersion = 8;
|
||||
|
@ -73,7 +72,7 @@ public:
|
|||
virtual ~nsMsgFilterList();
|
||||
|
||||
nsresult Close();
|
||||
nsresult LoadTextFilters(nsIOFileStream *aStream);
|
||||
nsresult LoadTextFilters(nsIInputStream *aStream);
|
||||
|
||||
PRBool m_temporaryList;
|
||||
|
||||
|
@ -85,14 +84,14 @@ protected:
|
|||
#endif
|
||||
protected:
|
||||
nsresult ComputeArbitraryHeaders();
|
||||
nsresult SaveTextFilters(nsIOFileStream *aStream);
|
||||
nsresult SaveTextFilters(nsIOutputStream *aStream);
|
||||
// file streaming methods
|
||||
char ReadChar(nsIOFileStream *aStream);
|
||||
char SkipWhitespace(nsIOFileStream *aStream);
|
||||
char ReadChar(nsIInputStream *aStream);
|
||||
char SkipWhitespace(nsIInputStream *aStream);
|
||||
PRBool StrToBool(nsCString &str);
|
||||
char LoadAttrib(nsMsgFilterFileAttribValue &attrib, nsIOFileStream *aStream);
|
||||
char LoadAttrib(nsMsgFilterFileAttribValue &attrib, nsIInputStream *aStream);
|
||||
const char *GetStringForAttrib(nsMsgFilterFileAttribValue attrib);
|
||||
nsresult LoadValue(nsCString &value, nsIOFileStream *aStream);
|
||||
nsresult LoadValue(nsCString &value, nsIInputStream *aStream);
|
||||
PRInt16 m_fileVersion;
|
||||
PRPackedBool m_loggingEnabled;
|
||||
PRPackedBool m_startWritingToBuffer; //tells us when to start writing one whole filter to m_unparsedBuffer
|
||||
|
@ -101,12 +100,12 @@ protected:
|
|||
const char *m_filterFileName;
|
||||
nsCOMPtr<nsISupportsArray> m_filters;
|
||||
nsCString m_arbitraryHeaders;
|
||||
nsCOMPtr<nsIFileSpec> m_defaultFile;
|
||||
nsCOMPtr<nsILocalFile> m_defaultFile;
|
||||
nsCString m_unparsedFilterBuffer; //holds one entire filter unparsed
|
||||
|
||||
private:
|
||||
nsresult TruncateLog();
|
||||
nsresult GetLogFileSpec(nsILocalFile **aFileSpec);
|
||||
nsresult GetLogFile(nsILocalFile **aFile);
|
||||
nsCOMPtr<nsIOutputStream> m_logStream;
|
||||
};
|
||||
|
||||
|
|
|
@ -42,7 +42,6 @@
|
|||
|
||||
#include "msgCore.h"
|
||||
#include "nsMsgFilterService.h"
|
||||
#include "nsFileStream.h"
|
||||
#include "nsMsgFilterList.h"
|
||||
#include "nsDirectoryServiceDefs.h"
|
||||
#include "nsIPrompt.h"
|
||||
|
@ -64,6 +63,7 @@
|
|||
#include "nsIOutputStream.h"
|
||||
#include "nsIMsgComposeService.h"
|
||||
#include "nsMsgCompCID.h"
|
||||
#include "nsNetUtil.h"
|
||||
#include "nsMsgUtils.h"
|
||||
|
||||
NS_IMPL_ISUPPORTS1(nsMsgFilterService, nsIMsgFilterService)
|
||||
|
@ -76,13 +76,14 @@ nsMsgFilterService::~nsMsgFilterService()
|
|||
{
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsMsgFilterService::OpenFilterList(nsIFileSpec *filterFile, nsIMsgFolder *rootFolder, nsIMsgWindow *aMsgWindow, nsIMsgFilterList **resultFilterList)
|
||||
NS_IMETHODIMP nsMsgFilterService::OpenFilterList(nsILocalFile *aFilterFile, nsIMsgFolder *rootFolder, nsIMsgWindow *aMsgWindow, nsIMsgFilterList **resultFilterList)
|
||||
{
|
||||
nsresult ret = NS_OK;
|
||||
nsresult rv = NS_OK;
|
||||
|
||||
nsCOMPtr <nsIInputStream> fileStream;
|
||||
rv = NS_NewLocalFileInputStream(getter_AddRefs(fileStream), aFilterFile);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
nsFileSpec filterSpec;
|
||||
filterFile->GetFileSpec(&filterSpec);
|
||||
nsIOFileStream *fileStream = new nsIOFileStream(filterSpec);
|
||||
if (!fileStream)
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
|
||||
|
@ -93,16 +94,15 @@ NS_IMETHODIMP nsMsgFilterService::OpenFilterList(nsIFileSpec *filterFile, nsIMsg
|
|||
filterList->SetFolder(rootFolder);
|
||||
|
||||
// temporarily tell the filter where it's file path is
|
||||
filterList->SetDefaultFile(filterFile);
|
||||
filterList->SetDefaultFile(aFilterFile);
|
||||
|
||||
PRUint32 size;
|
||||
ret = filterFile->GetFileSize(&size);
|
||||
if (NS_SUCCEEDED(ret) && size > 0)
|
||||
ret = filterList->LoadTextFilters(fileStream);
|
||||
fileStream->close();
|
||||
delete fileStream;
|
||||
PRInt64 size;
|
||||
rv = aFilterFile->GetFileSize(&size);
|
||||
if (NS_SUCCEEDED(rv) && size > 0)
|
||||
rv = filterList->LoadTextFilters(fileStream);
|
||||
fileStream->Close();
|
||||
fileStream =nsnull;
|
||||
if (NS_SUCCEEDED(ret))
|
||||
if (NS_SUCCEEDED(rv))
|
||||
{
|
||||
*resultFilterList = filterList;
|
||||
PRInt16 version;
|
||||
|
@ -110,26 +110,26 @@ NS_IMETHODIMP nsMsgFilterService::OpenFilterList(nsIFileSpec *filterFile, nsIMsg
|
|||
if (version != kFileVersion)
|
||||
{
|
||||
|
||||
SaveFilterList(filterList, filterFile);
|
||||
SaveFilterList(filterList, aFilterFile);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
NS_RELEASE(filterList);
|
||||
if (ret == NS_MSG_FILTER_PARSE_ERROR && aMsgWindow)
|
||||
if (rv == NS_MSG_FILTER_PARSE_ERROR && aMsgWindow)
|
||||
{
|
||||
ret = BackUpFilterFile(filterFile, aMsgWindow);
|
||||
NS_ENSURE_SUCCESS(ret, ret);
|
||||
ret = filterFile->Truncate(0);
|
||||
NS_ENSURE_SUCCESS(ret, ret);
|
||||
return OpenFilterList(filterFile, rootFolder, aMsgWindow, resultFilterList);
|
||||
rv = BackUpFilterFile(aFilterFile, aMsgWindow);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
rv = aFilterFile->SetFileSize(0);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
return OpenFilterList(aFilterFile, rootFolder, aMsgWindow, resultFilterList);
|
||||
}
|
||||
else if(ret == NS_MSG_CUSTOM_HEADERS_OVERFLOW && aMsgWindow)
|
||||
else if (rv == NS_MSG_CUSTOM_HEADERS_OVERFLOW && aMsgWindow)
|
||||
ThrowAlertMsg("filterCustomHeaderOverflow", aMsgWindow);
|
||||
else if(ret == NS_MSG_INVALID_CUSTOM_HEADER && aMsgWindow)
|
||||
else if(rv == NS_MSG_INVALID_CUSTOM_HEADER && aMsgWindow)
|
||||
ThrowAlertMsg("invalidCustomHeader", aMsgWindow);
|
||||
}
|
||||
return ret;
|
||||
return rv;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsMsgFilterService::CloseFilterList(nsIMsgFilterList *filterList)
|
||||
|
@ -139,100 +139,69 @@ NS_IMETHODIMP nsMsgFilterService::CloseFilterList(nsIMsgFilterList *filterList)
|
|||
}
|
||||
|
||||
/* save without deleting */
|
||||
NS_IMETHODIMP nsMsgFilterService::SaveFilterList(nsIMsgFilterList *filterList, nsIFileSpec *filterFile)
|
||||
NS_IMETHODIMP nsMsgFilterService::SaveFilterList(nsIMsgFilterList *filterList, nsILocalFile *filterFile)
|
||||
{
|
||||
NS_ENSURE_ARG_POINTER(filterFile);
|
||||
NS_ENSURE_ARG_POINTER(filterList);
|
||||
|
||||
nsresult ret = NS_OK;
|
||||
nsCOMPtr <nsIFileSpec> tmpFiltersFile;
|
||||
nsCOMPtr <nsIFileSpec> realFiltersFile;
|
||||
nsCOMPtr <nsIFileSpec> parentDir;
|
||||
|
||||
nsCOMPtr <nsILocalFile> realFiltersFile;
|
||||
nsCOMPtr <nsIFile> parentDir;
|
||||
nsCOMPtr <nsIFile> tmpFile;
|
||||
ret = GetSpecialDirectoryWithFileName(NS_OS_TEMP_DIR,
|
||||
"tmprules.dat",
|
||||
getter_AddRefs(tmpFiltersFile));
|
||||
getter_AddRefs(tmpFile));
|
||||
|
||||
|
||||
NS_ASSERTION(NS_SUCCEEDED(ret),"writing filters file: failed to append filename");
|
||||
if (NS_FAILED(ret))
|
||||
return ret;
|
||||
|
||||
ret = tmpFiltersFile->MakeUnique(); //need a unique tmp file to prevent dataloss in multiuser environment
|
||||
nsCOMPtr <nsILocalFile> tmpFiltersFile = do_QueryInterface(tmpFile);
|
||||
ret = tmpFiltersFile->CreateUnique(nsIFile::NORMAL_FILE_TYPE, 00600); //need a unique tmp file to prevent dataloss in multiuser environment
|
||||
NS_ENSURE_SUCCESS(ret, ret);
|
||||
|
||||
nsFileSpec tmpFileSpec;
|
||||
tmpFiltersFile->GetFileSpec(&tmpFileSpec);
|
||||
|
||||
nsIOFileStream *tmpFileStream = nsnull;
|
||||
|
||||
if (NS_SUCCEEDED(ret))
|
||||
ret = filterFile->GetParent(getter_AddRefs(parentDir));
|
||||
|
||||
nsCOMPtr <nsIOutputStream> tmpFileStream;
|
||||
|
||||
if (NS_SUCCEEDED(ret))
|
||||
tmpFileStream = new nsIOFileStream(tmpFileSpec);
|
||||
if (!tmpFileStream)
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
ret = NS_NewLocalFileOutputStream(getter_AddRefs(tmpFileStream), tmpFiltersFile, -1, 00600);
|
||||
NS_ENSURE_SUCCESS(ret, ret);
|
||||
|
||||
ret = filterList->SaveToFile(tmpFileStream);
|
||||
tmpFileStream->close();
|
||||
delete tmpFileStream;
|
||||
tmpFileStream->Close();
|
||||
tmpFileStream = nsnull;
|
||||
|
||||
if (NS_SUCCEEDED(ret))
|
||||
{
|
||||
// can't move across drives
|
||||
ret = tmpFiltersFile->CopyToDir(parentDir);
|
||||
if (NS_SUCCEEDED(ret))
|
||||
{
|
||||
filterFile->Delete(PR_FALSE);
|
||||
nsXPIDLCString tmpFileName;
|
||||
tmpFiltersFile->GetLeafName(getter_Copies(tmpFileName));
|
||||
parentDir->AppendRelativeUnixPath(tmpFileName.get());
|
||||
nsXPIDLCString finalLeafName;
|
||||
filterFile->GetLeafName(getter_Copies(finalLeafName));
|
||||
if (!finalLeafName.IsEmpty())
|
||||
parentDir->Rename(finalLeafName);
|
||||
else // fall back to msgFilterRules.dat
|
||||
parentDir->Rename("msgFilterRules.dat");
|
||||
|
||||
tmpFiltersFile->Delete(PR_FALSE);
|
||||
}
|
||||
|
||||
|
||||
nsXPIDLCString finalLeafName;
|
||||
filterFile->GetNativeLeafName(finalLeafName);
|
||||
ret = tmpFiltersFile->MoveToNative(parentDir, finalLeafName);
|
||||
}
|
||||
NS_ASSERTION(NS_SUCCEEDED(ret), "error opening/saving filter list");
|
||||
return ret;
|
||||
return ret;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsMsgFilterService::CancelFilterList(nsIMsgFilterList *filterList)
|
||||
{
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
nsresult nsMsgFilterService::BackUpFilterFile(nsIFileSpec *aFilterFile, nsIMsgWindow *aMsgWindow)
|
||||
nsresult nsMsgFilterService::BackUpFilterFile(nsILocalFile *aFilterFile, nsIMsgWindow *aMsgWindow)
|
||||
{
|
||||
nsresult rv;
|
||||
AlertBackingUpFilterFile(aMsgWindow);
|
||||
aFilterFile->CloseStream();
|
||||
|
||||
nsCOMPtr<nsILocalFile> localFilterFile;
|
||||
nsFileSpec filterFileSpec;
|
||||
aFilterFile->GetFileSpec(&filterFileSpec);
|
||||
rv = NS_FileSpecToIFile(&filterFileSpec, getter_AddRefs(localFilterFile));
|
||||
NS_ENSURE_SUCCESS(rv,rv);
|
||||
|
||||
nsCOMPtr<nsILocalFile> localParentDir;
|
||||
nsCOMPtr <nsIFileSpec> parentDir;
|
||||
rv = aFilterFile->GetParent(getter_AddRefs(parentDir));
|
||||
NS_ENSURE_SUCCESS(rv,rv);
|
||||
|
||||
nsFileSpec parentDirSpec;
|
||||
parentDir->GetFileSpec(&parentDirSpec);
|
||||
|
||||
rv = NS_FileSpecToIFile(&parentDirSpec, getter_AddRefs(localParentDir));
|
||||
nsCOMPtr<nsIFile> localParentDir;
|
||||
rv = aFilterFile->GetParent(getter_AddRefs(localParentDir));
|
||||
NS_ENSURE_SUCCESS(rv,rv);
|
||||
|
||||
//if back-up file exists delete the back up file otherwise copy fails.
|
||||
nsCOMPtr <nsILocalFile> backupFile;
|
||||
rv = NS_FileSpecToIFile(&parentDirSpec, getter_AddRefs(backupFile));
|
||||
nsCOMPtr <nsIFile> backupFile;
|
||||
rv = localParentDir->Clone(getter_AddRefs(backupFile));
|
||||
NS_ENSURE_SUCCESS(rv,rv);
|
||||
backupFile->AppendNative(NS_LITERAL_CSTRING("rulesbackup.dat"));
|
||||
PRBool exists;
|
||||
|
@ -240,7 +209,7 @@ nsresult nsMsgFilterService::BackUpFilterFile(nsIFileSpec *aFilterFile, nsIMsgWi
|
|||
if (exists)
|
||||
backupFile->Remove(PR_FALSE);
|
||||
|
||||
return localFilterFile->CopyToNative(localParentDir, NS_LITERAL_CSTRING("rulesbackup.dat"));
|
||||
return aFilterFile->CopyToNative(localParentDir, NS_LITERAL_CSTRING("rulesbackup.dat"));
|
||||
}
|
||||
|
||||
nsresult nsMsgFilterService::AlertBackingUpFilterFile(nsIMsgWindow *aMsgWindow)
|
||||
|
|
|
@ -61,7 +61,7 @@ public:
|
|||
with dialog boxes. To apply the new list call MSG_CloseFilterList.
|
||||
|
||||
*/
|
||||
nsresult BackUpFilterFile(nsIFileSpec *aFilterFile, nsIMsgWindow *aMsgWindow);
|
||||
nsresult BackUpFilterFile(nsILocalFile *aFilterFile, nsIMsgWindow *aMsgWindow);
|
||||
nsresult AlertBackingUpFilterFile(nsIMsgWindow *aMsgWindow);
|
||||
nsresult ThrowAlertMsg(const char*aMsgName, nsIMsgWindow *aMsgWindow);
|
||||
nsresult GetStringFromBundle(const char *aMsgName, PRUnichar **aResult);
|
||||
|
|
|
@ -1167,47 +1167,31 @@ nsMsgIncomingServer::GetFilterList(nsIMsgWindow *aMsgWindow, nsIMsgFilterList **
|
|||
nsresult rv = GetRootFolder(getter_AddRefs(msgFolder));
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
nsCOMPtr<nsIFileSpec> thisFolder;
|
||||
rv = msgFolder->GetPath(getter_AddRefs(thisFolder));
|
||||
nsCOMPtr<nsILocalFile> thisFolder;
|
||||
rv = msgFolder->GetFilePath(getter_AddRefs(thisFolder));
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
mFilterFile = do_CreateInstance(NS_FILESPEC_CONTRACTID, &rv);
|
||||
mFilterFile = do_CreateInstance(NS_LOCAL_FILE_CONTRACTID, &rv);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
rv = mFilterFile->InitWithFile(thisFolder);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
rv = mFilterFile->FromFileSpec(thisFolder);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
mFilterFile->AppendRelativeUnixPath("msgFilterRules.dat");
|
||||
mFilterFile->AppendNative(NS_LITERAL_CSTRING("msgFilterRules.dat"));
|
||||
|
||||
PRBool fileExists;
|
||||
mFilterFile->Exists(&fileExists);
|
||||
if (!fileExists)
|
||||
{
|
||||
nsCOMPtr<nsIFileSpec> oldFilterFile = do_CreateInstance(NS_FILESPEC_CONTRACTID, &rv);
|
||||
nsCOMPtr<nsILocalFile> oldFilterFile = do_CreateInstance(NS_LOCAL_FILE_CONTRACTID, &rv);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
rv = oldFilterFile->FromFileSpec(thisFolder);
|
||||
rv = oldFilterFile->InitWithFile(thisFolder);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
oldFilterFile->AppendRelativeUnixPath("rules.dat");
|
||||
oldFilterFile->AppendNative(NS_LITERAL_CSTRING("rules.dat"));
|
||||
|
||||
oldFilterFile->Exists(&fileExists);
|
||||
if (fileExists) //copy rules.dat --> msgFilterRules.dat
|
||||
{
|
||||
nsFileSpec rootFolderSpec;
|
||||
thisFolder->GetFileSpec(&rootFolderSpec);
|
||||
|
||||
nsCOMPtr<nsILocalFile> rootFolderDir;
|
||||
rv = NS_FileSpecToIFile(&rootFolderSpec, getter_AddRefs(rootFolderDir));
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
nsFileSpec oldFilterSpec;
|
||||
oldFilterFile->GetFileSpec(&oldFilterSpec);
|
||||
|
||||
nsCOMPtr<nsILocalFile> localFilterFile;
|
||||
rv = NS_FileSpecToIFile(&oldFilterSpec, getter_AddRefs(localFilterFile));
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
rv = localFilterFile->CopyToNative(rootFolderDir, NS_LITERAL_CSTRING("msgFilterRules.dat"));
|
||||
rv = oldFilterFile->CopyToNative(thisFolder, NS_LITERAL_CSTRING("msgFilterRules.dat"));
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
}
|
||||
}
|
||||
|
@ -1933,14 +1917,11 @@ nsMsgIncomingServer::ConfigureTemporaryServerSpamFilters(nsIMsgFilterList *filte
|
|||
if (!file)
|
||||
return NS_OK;
|
||||
|
||||
nsCOMPtr<nsIFileSpec> serverFilterSpec;
|
||||
rv = NS_NewFileSpecFromIFile(file, getter_AddRefs(serverFilterSpec));
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
|
||||
nsCOMPtr<nsIMsgFilterService> filterService = do_GetService(NS_MSGFILTERSERVICE_CONTRACTID, &rv);
|
||||
nsCOMPtr<nsIMsgFilterList> serverFilterList;
|
||||
|
||||
rv = filterService->OpenFilterList(serverFilterSpec, NULL, NULL, getter_AddRefs(serverFilterList));
|
||||
nsCOMPtr <nsILocalFile> localFile = do_QueryInterface(file);
|
||||
rv = filterService->OpenFilterList(localFile, NULL, NULL, getter_AddRefs(serverFilterList));
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
rv = serverFilterList->GetFilterNamed(yesFilterName.get(),
|
||||
|
|
|
@ -105,7 +105,7 @@ protected:
|
|||
nsresult InternalSetHostName(const char *aHostname, const char *prefName);
|
||||
|
||||
nsresult getProtocolInfo(nsIMsgProtocolInfo **aResult);
|
||||
nsCOMPtr <nsIFileSpec> mFilterFile;
|
||||
nsCOMPtr <nsILocalFile> mFilterFile;
|
||||
nsCOMPtr <nsIMsgFilterList> mFilterList;
|
||||
// these allow us to handle duplicate incoming messages, e.g. delete them.
|
||||
nsHashtable m_downloadedHdrs;
|
||||
|
|
|
@ -280,20 +280,16 @@ nsresult nsMsgMailViewList::LoadMailViews()
|
|||
// now copy the file over to the profile directory
|
||||
defaultMailViewSpec->CopyToDir(profileDirSpec);
|
||||
}
|
||||
|
||||
nsCOMPtr<nsIFileSpec> mailViewSpec;
|
||||
rv = NS_NewFileSpecFromIFile(file, getter_AddRefs(mailViewSpec));
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
|
||||
// this is kind of a hack but I think it will be an effective hack. The filter service already knows how to
|
||||
// take a nsIFileSpec and parse the contents into filters which are very similar to mail views. Intead of
|
||||
// take a nsILocalFile and parse the contents into filters which are very similar to mail views. Intead of
|
||||
// re-writing all of that dirty parsing code, let's just re-use it then convert the results into a data strcuture
|
||||
// we wish to give to our consumers.
|
||||
|
||||
nsCOMPtr<nsIMsgFilterService> filterService = do_GetService(NS_MSGFILTERSERVICE_CONTRACTID, &rv);
|
||||
nsCOMPtr<nsIMsgFilterList> mfilterList;
|
||||
|
||||
rv = filterService->OpenFilterList(mailViewSpec, NULL, NULL, getter_AddRefs(mFilterList));
|
||||
nsCOMPtr <nsILocalFile> localFile = do_QueryInterface(file);
|
||||
rv = filterService->OpenFilterList(localFile, NULL, NULL, getter_AddRefs(mFilterList));
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
// now convert the filter list into our mail view objects, stripping out just the info we need
|
||||
|
|
|
@ -61,7 +61,6 @@
|
|||
#include "nsIMsgMailSession.h"
|
||||
#include "nsNetUtil.h"
|
||||
#include "nsIFileURL.h"
|
||||
#include "nsIFileSpec.h"
|
||||
|
||||
static NS_DEFINE_CID(kCMailDB, NS_MAILDB_CID);
|
||||
|
||||
|
|
|
@ -41,7 +41,6 @@
|
|||
#include "plstr.h"
|
||||
#include "prprf.h"
|
||||
|
||||
#include "nsIFileSpec.h"
|
||||
#include "nsXPIDLString.h"
|
||||
|
||||
#include "nsNoIncomingServer.h"
|
||||
|
|
|
@ -42,7 +42,6 @@
|
|||
#include "nsINoIncomingServer.h"
|
||||
#include "nsILocalMailIncomingServer.h"
|
||||
#include "nsMsgIncomingServer.h"
|
||||
#include "nsIFileSpec.h"
|
||||
|
||||
/* get some implementation from nsMsgIncomingServer */
|
||||
class nsNoIncomingServer : public nsMsgIncomingServer,
|
||||
|
|
|
@ -49,7 +49,6 @@
|
|||
#include "nsMsgBaseCID.h"
|
||||
#include "nsXPIDLString.h"
|
||||
#include "nsCOMPtr.h"
|
||||
#include "nsIFileSpec.h"
|
||||
#include "nsMsgUtils.h"
|
||||
|
||||
#include "nsIDirectoryService.h"
|
||||
|
|
|
@ -44,7 +44,6 @@
|
|||
#include "nscore.h"
|
||||
#include <stdio.h>
|
||||
#include <time.h>
|
||||
#include "nsIFileSpec.h"
|
||||
#include "nsParseMailbox.h"
|
||||
#include "nsIMsgLocalMailFolder.h"
|
||||
#include "nsIMsgIncomingServer.h"
|
||||
|
@ -868,17 +867,17 @@ nsPop3Sink::IncorporateComplete(nsIMsgWindow *aMsgWindow, PRInt32 aSize)
|
|||
}
|
||||
else
|
||||
{
|
||||
nsFileSpec destFolderSpec;
|
||||
nsCOMPtr<nsIFileSpec> path;
|
||||
nsCOMPtr<nsILocalFile> path;
|
||||
// cleanup after mailHdr in source DB because we moved the message.
|
||||
m_newMailParser->m_mailDB->RemoveHeaderMdbRow(hdr);
|
||||
|
||||
// if the filter moved the message, it called nsParseMailMessageState::Init
|
||||
// to truncate the source folder, which resets m_envelopePos and m_position.
|
||||
// So set the envelopePos explicitly here.
|
||||
m_folder->GetPath(getter_AddRefs(path));
|
||||
path->GetFileSpec(&destFolderSpec);
|
||||
m_newMailParser->SetEnvelopePos(destFolderSpec.GetFileSize());
|
||||
m_folder->GetFilePath(getter_AddRefs(path));
|
||||
PRInt64 fileSize;
|
||||
path->GetFileSize(&fileSize);
|
||||
m_newMailParser->SetEnvelopePos(fileSize);
|
||||
}
|
||||
m_newMailParser->m_newMsgHdr = nsnull;
|
||||
m_outFileStream->close(); // close so we can truncate.
|
||||
|
|
|
@ -39,7 +39,6 @@
|
|||
#include "nsCOMPtr.h"
|
||||
#include "nsILocalFile.h"
|
||||
#include "nsFileSpec.h"
|
||||
#include "nsIFileSpec.h"
|
||||
#include "nsAppDirectoryServiceDefs.h"
|
||||
|
||||
nsRssService::nsRssService()
|
||||
|
|
|
@ -1881,11 +1881,13 @@ nsMsgNewsFolder::GetFilterList(nsIMsgWindow *aMsgWindow, nsIMsgFilterList **aRes
|
|||
|
||||
if (!mFilterList)
|
||||
{
|
||||
nsCOMPtr<nsIFileSpec> thisFolder;
|
||||
nsresult rv = GetPath(getter_AddRefs(thisFolder));
|
||||
nsCOMPtr<nsILocalFile> thisFolder;
|
||||
nsresult rv = GetFilePath(getter_AddRefs(thisFolder));
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
nsCOMPtr <nsIFileSpec> mFilterFile = do_CreateInstance(NS_FILESPEC_CONTRACTID, &rv);
|
||||
nsCOMPtr <nsILocalFile> filterFile = do_CreateInstance(NS_LOCAL_FILE_CONTRACTID, &rv);
|
||||
NS_ENSURE_SUCCESS(rv, rv);;
|
||||
rv = filterFile->InitWithFile(thisFolder);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
// in 4.x, the news filter file was
|
||||
|
@ -1893,26 +1895,24 @@ nsMsgNewsFolder::GetFilterList(nsIMsgWindow *aMsgWindow, nsIMsgFilterList **aRes
|
|||
// where the summary file was
|
||||
// C:\Program Files\Netscape\Users\meer\News\host-news.mcom.com\mcom.test.snm
|
||||
// we make the rules file ".dat" in mozilla, so that migration works.
|
||||
rv = mFilterFile->FromFileSpec(thisFolder);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
// NOTE:
|
||||
// we don't we need to call NS_MsgHashIfNecessary()
|
||||
// it's already been hashed, if necessary
|
||||
nsXPIDLCString filterFileName;
|
||||
rv = mFilterFile->GetLeafName(getter_Copies(filterFileName));
|
||||
rv = filterFile->GetNativeLeafName(filterFileName);
|
||||
NS_ENSURE_SUCCESS(rv,rv);
|
||||
|
||||
filterFileName.Append(".dat");
|
||||
|
||||
rv = mFilterFile->SetLeafName(filterFileName.get());
|
||||
rv = filterFile->SetNativeLeafName(filterFileName);
|
||||
NS_ENSURE_SUCCESS(rv,rv);
|
||||
|
||||
nsCOMPtr<nsIMsgFilterService> filterService =
|
||||
do_GetService(NS_MSGFILTERSERVICE_CONTRACTID, &rv);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
rv = filterService->OpenFilterList(mFilterFile, this, aMsgWindow, getter_AddRefs(mFilterList));
|
||||
rv = filterService->OpenFilterList(filterFile, this, aMsgWindow, getter_AddRefs(mFilterList));
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
}
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче