You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
gentoo-overlay/app-admin/keepass/files/keepass-2.20-xsl-path-detec...

46 lines
1.6 KiB

KeePass looks for some resources (XSL files) in the executable directory,
however under UNIX system this not a good idea, so we look into the
CommonApplicationData SpecialFolder, which usually maps to "/usr/share/".
So the final search path should be "/usr/share/KeePass/XSL/".
diff --git a/KeePass/Forms/AboutForm.cs b/KeePass/Forms/AboutForm.cs
index 8a04c87..6083c00 100644
--- a/KeePass/Forms/AboutForm.cs
+++ b/KeePass/Forms/AboutForm.cs
@@ -31,9 +31,11 @@ using KeePass.UI;
using KeePass.Resources;
using KeePass.Util;
using KeePass.DataExchange;
+using KeePass.Native;
using KeePassLib;
using KeePassLib.Utility;
+using KeePassLib.Native;
namespace KeePass.Forms
{
@@ -92,8 +94,21 @@ namespace KeePass.Forms
m_lvComponents.Items.Add(lvi);
lvi = new ListViewItem(KPRes.XslStylesheetsKdbx);
- string strPath = WinUtil.GetExecutable();
- strPath = UrlUtil.GetFileDirectory(strPath, true, false);
+
+ string strPath;
+ if (NativeLib.IsUnix())
+ {
+ strPath = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData);
+ strPath = UrlUtil.EnsureTerminatingSeparator(strPath, false);
+ strPath += PwDefs.ShortProductName.ToLower();
+ strPath = UrlUtil.EnsureTerminatingSeparator(strPath, false);
+ }
+ else
+ {
+ strPath = WinUtil.GetExecutable();
+ strPath = UrlUtil.GetFileDirectory(strPath, true, false);
+ }
+
strPath += AppDefs.XslFilesDir;
strPath = UrlUtil.EnsureTerminatingSeparator(strPath, false);
bool bInstalled = File.Exists(strPath + AppDefs.XslFileHtmlLite);