blob: d875cec12013ed5fccf23a5b3068432d0e8ffd2b (
plain)
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
73
74
75
76
77
78
79
|
#include "xdgbasedir.h"
#include <QStringList>
static inline QString user()
{
QString user = QString::fromUtf8(qgetenv("USER"));
if(user.isEmpty()) return "root";
return user;
}
static inline QString home()
{
QString home = QString::fromUtf8(qgetenv("HOME"));
if(home.isEmpty())
{
QString u = user();
if(u == "root")
return "/root";
else
return "/home/" + u;
}
return home;
}
static inline QString envOrDefault(const char *name, const QString &def)
{
QString env = QString::fromUtf8(qgetenv(name));
if(env.isEmpty())
{
return def;
}
return env;
}
QString KaZoe::dataHome()
{
return envOrDefault("XDG_DATA_HOME", home() + "/.local/share");
}
QString KaZoe::configHome()
{
return envOrDefault("XDG_CONFIG_HOME", home() + "/.config");
}
QString KaZoe::cacheHome()
{
return envOrDefault("XDG_CACHE_HOME", home() + "/.cache");
}
QString KaZoe::stateHome()
{
return envOrDefault("XDG_STATE_HOME", home() + "/.local/state");
}
QStringList KaZoe::dataDirs()
{
QString dataDirs = QString::fromUtf8(qgetenv("XDG_DATA_DIRS"));
if(dataDirs.isEmpty())
{
return QStringList() << "/usr/local/share" << "/usr/share";
}
return dataDirs.split(":");
}
QStringList KaZoe::configDirs()
{
QString configDirs = QString::fromUtf8(qgetenv("XDG_CONFIG_DIRS"));
if(configDirs.isEmpty())
{
return QStringList() << "/etc/xdg";
}
return configDirs.split(":");
}
QString KaZoe::runtimeDir()
{
return envOrDefault("XDG_RUNTIME_DIR", QString("/run/user/%i").arg(user()));
}
|