diff --git a/mailnews/news/src/nsNewsUtils.cpp b/mailnews/news/src/nsNewsUtils.cpp index e04c4dfe2c84036a8a3cddf7a9227e01b4ef8c01..6cc833a99317ee007076766616ad4fed74d1267f 100644 --- a/mailnews/news/src/nsNewsUtils.cpp +++ b/mailnews/news/src/nsNewsUtils.cpp @@ -20,6 +20,7 @@ #include "nsNewsUtils.h" #include "nsIServiceManager.h" #include "prsystem.h" +#include "nsCOMPtr.h" // stuff for temporary root folder hack #include "nsIMsgMailSession.h" @@ -38,31 +39,17 @@ nsGetNewsRoot(nsFileSpec &result) nsresult rv = NS_OK; if (gNewsRoot == nsnull) { - nsIMsgMailSession *session; - rv = nsServiceManager::GetService(kMsgMailSessionCID, - nsIMsgMailSession::GetIID(), - (nsISupports **)&session); + NS_WITH_SERVICE(nsIMsgMailSession, session, kMsgMailSessionCID, &rv); if (NS_SUCCEEDED(rv)) { - nsIMsgIncomingServer *server; - rv = session->GetCurrentServer(&server); - if (NS_FAILED(rv)) printf("nsGetNewsRoot: Couldn't get current server\n"); - if (NS_SUCCEEDED(rv)) { - nsINntpIncomingServer *nntpServer; - rv = server->QueryInterface(nsINntpIncomingServer::GetIID(), - (void **)&nntpServer); - if (NS_FAILED(rv)) printf("nsGetNewsRoot: Couldn't get nntp server\n"); - if (NS_SUCCEEDED(rv)) { - rv = nntpServer->GetRootFolderPath(&gNewsRoot); - if (NS_FAILED(rv)) printf("nsGetNewsRoot: Couldn't get root\n"); - NS_RELEASE(nntpServer); - } - NS_RELEASE(server); - - } - nsServiceManager::ReleaseService(kMsgMailSessionCID, session); + nsCOMPtr<nsIMsgIncomingServer> server; + rv = session->GetCurrentServer(getter_AddRefs(server)); + + if (NS_SUCCEEDED(rv)) + rv = server->GetLocalPath(&gNewsRoot); } } /* if (gNewsRoot == nsnull) .. */ + result = gNewsRoot; return rv; } @@ -263,4 +250,4 @@ nsresult nsBuildNewsMessageURI(const nsFileSpec& path, PRUint32 key, char** uri) return NS_OK; -} \ No newline at end of file +}