1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
|
From 58585679f08bf79b707659756041486215d21385 Mon Sep 17 00:00:00 2001
From: Li Hua <lihua@email.com>
Date: Wed, 11 Feb 2026 19:21:46 +0800
Subject: [PATCH] Replace xdg-user-dir shell script with C implementation
Fixes: https://gitlab.freedesktop.org/xdg/xdg-user-dirs/-/issues/42
--- a/.gitignore
+++ b/.gitignore
@@ -30,3 +30,5 @@ xdg-user-dir-lookup
xdg-user-dirs-update
xdg-user-dirs-*.tar*
+
+.cache
--- a/meson.build
+++ b/meson.build
@@ -98,14 +98,15 @@ xdg_user_dir_lookup = executable('xdg-user-dir-lookup',
install: false
)
+xdg_user_dir = executable('xdg-user-dir',
+ 'xdg-user-dir.c',
+ include_directories: config_inc,
+ install: true
+)
+
#
# Data
#
-install_data('xdg-user-dir',
- install_dir: get_option('bindir'),
- install_mode: 'rwxr-xr-x'
-)
-
xdg_config_dir = get_option('sysconfdir') / 'xdg'
install_data(['user-dirs.conf', 'user-dirs.defaults'],
install_dir: xdg_config_dir
--- a/xdg-user-dir
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/bin/sh
-
-test -f ${XDG_CONFIG_HOME:-~/.config}/user-dirs.dirs && . ${XDG_CONFIG_HOME:-~/.config}/user-dirs.dirs
-if [ "x$1" = "xDESKTOP" ]; then
- eval echo \${XDG_${1}_DIR:-$HOME/Desktop}
-else
- eval echo \${XDG_${1}_DIR:-$HOME}
-fi
--- /dev/null
+++ b/xdg-user-dir.c
@@ -0,0 +1,18 @@
+#include "xdg-user-dir-lookup.c"
+#include <stddef.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+int
+main (int argc, char *argv[])
+{
+ char *dir;
+ dir = xdg_user_dir_lookup (argc >= 2 ? argv[1] : "");
+ if (dir != NULL)
+ {
+ printf ("%s\n", dir);
+ free (dir);
+ return 0;
+ }
+ return 1;
+}
--
GitLab
|