summaryrefslogtreecommitdiff
path: root/x11/kdelibs3/patches/patch-an
blob: 5a271fb7047d10555258cf1142616de168974537 (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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
$NetBSD: patch-an,v 1.3.4.1 2004/08/13 13:05:04 agc Exp $

--- kdecore/kstandarddirs.cpp.orig	2004-01-26 06:24:42.000000000 +1300
+++ kdecore/kstandarddirs.cpp
@@ -651,7 +651,28 @@ void KStandardDirs::createSpecialResourc
    char link[1024];
    link[1023] = 0;
    int result = readlink(QFile::encodeName(dir).data(), link, 1023);
-   if ((result == -1) && (errno == ENOENT))
+   bool relink = (result == -1) && (errno == ENOENT);
+   if ((result > 0) && (link[0] == '/'))
+   {
+      link[result] = 0;
+      struct stat stat_buf;
+      int res = lstat(link, &stat_buf);
+      if ((res == -1) && (errno == ENOENT))
+      {
+         relink = true;
+      }
+      else if ((res == -1) || (!S_ISDIR(stat_buf.st_mode)))
+      {
+         fprintf(stderr, "Error: \"%s\" is not a directory.\n", link);
+         relink = true;
+      }
+      else if (stat_buf.st_uid != getuid())
+      {
+         fprintf(stderr, "Error: \"%s\" is owned by uid %d instead of uid %d.\n", link, stat_buf.st_uid, getuid());
+         relink = true;
+      }
+   }
+   if (relink)
    {
       QString srv = findExe(QString::fromLatin1("lnusertemp"), KDEDIR+QString::fromLatin1("/bin"));
       if (srv.isEmpty())
@@ -847,33 +847,33 @@ static int tokenize( QStringList& tokens
 
 QString KStandardDirs::kde_default(const char *type) {
     if (!strcmp(type, "data"))
-	return "share/apps/";
+	return "share/kde/apps/";
     if (!strcmp(type, "html"))
-	return "share/doc/HTML/";
+	return "share/doc/kde/HTML/";
     if (!strcmp(type, "icon"))
-	return "share/icons/";
+	return "share/kde/icons/";
     if (!strcmp(type, "config"))
-	return "share/config/";
+	return "share/kde/config/";
     if (!strcmp(type, "pixmap"))
-	return "share/pixmaps/";
+	return "share/kde/pixmaps/";
     if (!strcmp(type, "apps"))
-	return "share/applnk/";
+	return "share/kde/applnk/";
     if (!strcmp(type, "sound"))
-	return "share/sounds/";
+	return "share/kde/sounds/";
     if (!strcmp(type, "locale"))
-	return "share/locale/";
+	return "share/kde/locale/";
     if (!strcmp(type, "services"))
-	return "share/services/";
+	return "share/kde/services/";
     if (!strcmp(type, "servicetypes"))
-	return "share/servicetypes/";
+	return "share/kde/servicetypes/";
     if (!strcmp(type, "mime"))
-	return "share/mimelnk/";
+	return "share/kde/mimelnk/";
     if (!strcmp(type, "cgi"))
-	return "cgi-bin/";
+	return "kde-cgi-bin/";
     if (!strcmp(type, "wallpaper"))
-	return "share/wallpapers/";
+	return "share/kde/wallpapers/";
     if (!strcmp(type, "templates"))
-	return "share/templates/";
+	return "share/kde/templates/";
     if (!strcmp(type, "exe"))
 	return "bin/";
     if (!strcmp(type, "lib"))
@@ -889,7 +889,7 @@ QString KStandardDirs::kde_default(const
     if (!strcmp(type, "xdgconf-menu"))
         return "menus/";
     if (!strcmp(type, "kcfg"))
-	return "share/config.kcfg";
+	return "share/kde/config.kcfg";
     qFatal("unknown resource type %s", type);
     return QString::null;
 }
@@ -1129,6 +1129,7 @@ void KStandardDirs::addKDEDefaults()
         }
 
         xdgdirList.append("/usr/local/share/");
+        xdgdirList.append(KDEDIR "/share/");
         xdgdirList.append("/usr/share/");
     }