80 lines
3.0 KiB
Diff
80 lines
3.0 KiB
Diff
From 3be3354126953a51625015b43ab5abc11315cd40 Mon Sep 17 00:00:00 2001
|
|
From: Lennart Poettering <lennart@poettering.net>
|
|
Date: Mon, 26 Jun 2023 18:55:14 +0200
|
|
Subject: [PATCH] sd-path: add support for XDG_STATE_HOME
|
|
|
|
(cherry picked from commit 9a653235d12a795a8bd6adf6289ea735ccae71af)
|
|
|
|
Related: RHEL-137252
|
|
---
|
|
man/sd_path_lookup.xml | 1 +
|
|
src/libsystemd/sd-path/sd-path.c | 3 +++
|
|
src/path/path.c | 2 ++
|
|
src/systemd/sd-path.h | 5 ++++-
|
|
4 files changed, 10 insertions(+), 1 deletion(-)
|
|
|
|
diff --git a/man/sd_path_lookup.xml b/man/sd_path_lookup.xml
|
|
index 01fb1ed8f1..c2ea6469a1 100644
|
|
--- a/man/sd_path_lookup.xml
|
|
+++ b/man/sd_path_lookup.xml
|
|
@@ -55,6 +55,7 @@
|
|
|
|
<constant>SD_PATH_USER_CONFIGURATION</constant>,
|
|
<constant>SD_PATH_USER_RUNTIME</constant>,
|
|
+ <constant>SD_PATH_USER_STATE_PRIVATE</constant>,
|
|
<constant>SD_PATH_USER_STATE_CACHE</constant>,
|
|
|
|
<constant>SD_PATH_USER</constant>,
|
|
diff --git a/src/libsystemd/sd-path/sd-path.c b/src/libsystemd/sd-path/sd-path.c
|
|
index 2c8181fbfb..73a51aebc2 100644
|
|
--- a/src/libsystemd/sd-path/sd-path.c
|
|
+++ b/src/libsystemd/sd-path/sd-path.c
|
|
@@ -281,6 +281,9 @@ static int get_path(uint64_t type, char **buffer, const char **ret) {
|
|
case SD_PATH_USER_STATE_CACHE:
|
|
return from_home_dir("XDG_CACHE_HOME", ".cache", buffer, ret);
|
|
|
|
+ case SD_PATH_USER_STATE_PRIVATE:
|
|
+ return from_home_dir("XDG_STATE_HOME", ".local/state", buffer, ret);
|
|
+
|
|
case SD_PATH_USER:
|
|
r = get_home_dir(buffer);
|
|
if (r < 0)
|
|
diff --git a/src/path/path.c b/src/path/path.c
|
|
index 0024a60611..9d9b24d5e2 100644
|
|
--- a/src/path/path.c
|
|
+++ b/src/path/path.c
|
|
@@ -41,6 +41,8 @@ static const char* const path_table[_SD_PATH_MAX] = {
|
|
[SD_PATH_USER_CONFIGURATION] = "user-configuration",
|
|
[SD_PATH_USER_RUNTIME] = "user-runtime",
|
|
[SD_PATH_USER_STATE_CACHE] = "user-state-cache",
|
|
+ [SD_PATH_USER_STATE_PRIVATE] = "user-state-private",
|
|
+
|
|
[SD_PATH_USER] = "user",
|
|
[SD_PATH_USER_DOCUMENTS] = "user-documents",
|
|
[SD_PATH_USER_MUSIC] = "user-music",
|
|
diff --git a/src/systemd/sd-path.h b/src/systemd/sd-path.h
|
|
index 161a8e0c8d..0c04e7c22e 100644
|
|
--- a/src/systemd/sd-path.h
|
|
+++ b/src/systemd/sd-path.h
|
|
@@ -53,9 +53,10 @@ enum {
|
|
SD_PATH_USER_SHARED,
|
|
|
|
/* User configuration, state, runtime ... */
|
|
- SD_PATH_USER_CONFIGURATION, /* takes both actual configuration (like /etc) and state (like /var/lib) */
|
|
+ SD_PATH_USER_CONFIGURATION,
|
|
SD_PATH_USER_RUNTIME,
|
|
SD_PATH_USER_STATE_CACHE,
|
|
+ /* → SD_PATH_USER_STATE_PRIVATE is added at the bottom */
|
|
|
|
/* User resources */
|
|
SD_PATH_USER, /* $HOME itself */
|
|
@@ -110,6 +111,8 @@ enum {
|
|
/* systemd-networkd search paths */
|
|
SD_PATH_SYSTEMD_SEARCH_NETWORK,
|
|
|
|
+ SD_PATH_USER_STATE_PRIVATE,
|
|
+
|
|
_SD_PATH_MAX
|
|
};
|
|
|