From e7707914e45e84bb84cd7961e6c87a96b2ff2e77 Mon Sep 17 00:00:00 2001 From: "gerv%gerv.net" Date: Sat, 19 May 2001 15:57:08 +0000 Subject: [PATCH] Make it possible to set the location of the bookmarks file. Bug 31623. r=timeless, sr=waterson. Pref for this is browser.bookmarks.file - you need to edit your pref.js manually. I seem to remember you need to double your backslashes on Windows... git-svn-id: svn://10.0.0.236/trunk@95544 18797224-902f-48f8-a5cc-f745e15eee43 --- .../bookmarks/src/nsBookmarksService.cpp | 50 ++++++++++++------- 1 file changed, 31 insertions(+), 19 deletions(-) diff --git a/mozilla/xpfe/components/bookmarks/src/nsBookmarksService.cpp b/mozilla/xpfe/components/bookmarks/src/nsBookmarksService.cpp index bae98049b6d..eaa69485061 100644 --- a/mozilla/xpfe/components/bookmarks/src/nsBookmarksService.cpp +++ b/mozilla/xpfe/components/bookmarks/src/nsBookmarksService.cpp @@ -1,4 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8; c-file-style: "stroustrup" -*- +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- * * The contents of this file are subject to the Netscape Public * License Version 1.1 (the "License"); you may not use this file @@ -3907,26 +3907,38 @@ nsBookmarksService::Flush() nsresult nsBookmarksService::GetBookmarksFile(nsFileSpec* aResult) { - nsresult rv; + nsresult rv; - // Look for bookmarks.html in the current profile - // directory. This is as convoluted as it seems because we - // want to 1) not break viewer (which has no profiles), and 2) - // still deal reasonably (in the short term) when no - // bookmarks.html is installed in the profile directory. - - nsCOMPtr bookmarksFile; - rv = NS_GetSpecialDirectory(NS_APP_BOOKMARKS_50_FILE, getter_AddRefs(bookmarksFile)); + // First we see if the user has set a pref for the location of the + // bookmarks file. + NS_WITH_SERVICE(nsIPref, prefServ, kPrefCID, &rv); if (NS_SUCCEEDED(rv)) { - - // TODO: When the code which calls this can us nsIFIle - // or nsILocalFile, this conversion from nsiFile to - // nsFileSpec can go away. - - nsXPIDLCString pathBuf; - rv = bookmarksFile->GetPath(getter_Copies(pathBuf)); - if (NS_SUCCEEDED(rv)) - *aResult = (const char *)pathBuf; + nsXPIDLCString prefVal; + rv = prefServ->CopyCharPref("browser.bookmarks.file", + getter_Copies(prefVal)); + if (NS_SUCCEEDED(rv)) { + *aResult = prefVal; + } + } + + + if (NS_FAILED(rv)) { + // Otherwise, we look for bookmarks.html in the current profile + // directory using the magic directory service. + nsCOMPtr bookmarksFile; + rv = NS_GetSpecialDirectory(NS_APP_BOOKMARKS_50_FILE, + getter_AddRefs(bookmarksFile)); + if (NS_SUCCEEDED(rv)) { + + // XXX: When the code which calls this can us nsIFile + // or nsILocalFile, this conversion from nsIFile to + // nsFileSpec can go away. Bug 36974. + + nsXPIDLCString pathBuf; + rv = bookmarksFile->GetPath(getter_Copies(pathBuf)); + if (NS_SUCCEEDED(rv)) + *aResult = pathBuf.get(); + } } #ifdef DEBUG