0ad27f
From 2a28dcd3f6e4af7a5b2d7d7810b26b6321dd1bf1 Mon Sep 17 00:00:00 2001
0ad27f
From: Jakub Jelen <jjelen@redhat.com>
0ad27f
Date: Tue, 10 Nov 2020 14:44:43 +0100
0ad27f
Subject: [PATCH 1/3] ctx: Use more standard cache directory
0ad27f
0ad27f
https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html
0ad27f
---
0ad27f
 src/libopensc/ctx.c | 9 +++++++--
0ad27f
 1 file changed, 7 insertions(+), 2 deletions(-)
0ad27f
0ad27f
diff --git a/src/libopensc/ctx.c b/src/libopensc/ctx.c
0ad27f
index 6b57170f01..d6058c070e 100644
0ad27f
--- a/src/libopensc/ctx.c
0ad27f
+++ b/src/libopensc/ctx.c
0ad27f
@@ -1008,7 +1008,12 @@ int sc_get_cache_dir(sc_context_t *ctx, char *buf, size_t bufsize)
0ad27f
 	}
0ad27f
 
0ad27f
 #ifndef _WIN32
0ad27f
-	cache_dir = ".eid/cache";
0ad27f
+	cache_dir = getenv("XDG_CACHE_HOME");
0ad27f
+	if (cache_dir != NULL && cache_dir[0] != '\0') {
0ad27f
+		snprintf(buf, bufsize, "%s/%s", cache_dir, "opensc");
0ad27f
+		return SC_SUCCESS;
0ad27f
+	}
0ad27f
+	cache_dir = ".cache/opensc";
0ad27f
 	homedir = getenv("HOME");
0ad27f
 #else
0ad27f
 	cache_dir = "eid-cache";
0ad27f
@@ -1020,7 +1025,7 @@ int sc_get_cache_dir(sc_context_t *ctx, char *buf, size_t bufsize)
0ad27f
 		homedir = temp_path;
0ad27f
 	}
0ad27f
 #endif
0ad27f
-	if (homedir == NULL)
0ad27f
+	if (homedir == NULL || homedir[0] == '\0')
0ad27f
 		return SC_ERROR_INTERNAL;
0ad27f
 	if (snprintf(buf, bufsize, "%s/%s", homedir, cache_dir) < 0)
0ad27f
 		return SC_ERROR_BUFFER_TOO_SMALL;
0ad27f
0ad27f
From 7c1c6f6be47f55693647827259edcacc98761371 Mon Sep 17 00:00:00 2001
0ad27f
From: Jakub Jelen <jjelen@redhat.com>
0ad27f
Date: Tue, 10 Nov 2020 15:07:42 +0100
0ad27f
Subject: [PATCH 3/3] doc: Update documentation about the cache location
0ad27f
0ad27f
---
0ad27f
 doc/files/opensc.conf.5.xml.in | 9 +++++++--
0ad27f
 2 files changed, 11 insertions(+), 4 deletions(-)
0ad27f
0ad27f
diff --git a/doc/files/opensc.conf.5.xml.in b/doc/files/opensc.conf.5.xml.in
0ad27f
index 118922a877..791f11669a 100644
0ad27f
--- a/doc/files/opensc.conf.5.xml.in
0ad27f
+++ b/doc/files/opensc.conf.5.xml.in
0ad27f
@@ -1116,12 +1116,17 @@ app <replaceable>application</replaceable> {
0ad27f
 							<itemizedlist>
0ad27f
 								<listitem>
0ad27f
 									<para>
0ad27f
-										<filename><envar>HOME</envar>/.eid/cache/</filename> (Unix)
0ad27f
+										<filename><envar>$XDG_CACHE_HOME</envar>/opensc/</filename> (If <envar>$XDG_CACHE_HOME</envar> is defined)
0ad27f
 									</para>
0ad27f
 								</listitem>
0ad27f
 								<listitem>
0ad27f
 									<para>
0ad27f
-										<filename><envar>USERPROFILE</envar>\.eid-cache\</filename> (Windows)
0ad27f
+										<filename><envar>$HOME</envar>/.cache/opensc/</filename> (Unix)
0ad27f
+									</para>
0ad27f
+								</listitem>
0ad27f
+								<listitem>
0ad27f
+									<para>
0ad27f
+										<filename><envar>$USERPROFILE</envar>\.eid-cache\</filename> (Windows)
0ad27f
 									</para>
0ad27f
 								</listitem>
0ad27f
 							</itemizedlist>
0ad27f
0ad27f
diff -up opensc-0.20.0/etc/opensc.conf.file-cache opensc-0.20.0/etc/opensc.conf
0ad27f
--- opensc-0.20.0/etc/opensc.conf.file-cache	2020-11-20 16:49:30.995526825 +0100
0ad27f
+++ opensc-0.20.0/etc/opensc.conf	2020-11-20 16:50:07.665053280 +0100
0ad27f
@@ -2,7 +2,7 @@ app default {
0ad27f
 	# debug = 3;
0ad27f
 	# debug_file = opensc-debug.txt;
0ad27f
 	framework pkcs15 {
0ad27f
-		# use_file_caching = true;
0ad27f
+		use_file_caching = true;
0ad27f
 	}
0ad27f
 	reader_driver pcsc {
0ad27f
 		# The pinpad is disabled by default,
0ad27f