summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'app-admin/keepass/files/keepass-2.19-xsl-path-detection.patch')
-rw-r--r--app-admin/keepass/files/keepass-2.19-xsl-path-detection.patch43
1 files changed, 43 insertions, 0 deletions
diff --git a/app-admin/keepass/files/keepass-2.19-xsl-path-detection.patch b/app-admin/keepass/files/keepass-2.19-xsl-path-detection.patch
new file mode 100644
index 000000000000..76b924111141
--- /dev/null
+++ b/app-admin/keepass/files/keepass-2.19-xsl-path-detection.patch
@@ -0,0 +1,43 @@
+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/".
+
+--- 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.XslStylesheets);
+- 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);