summaryrefslogtreecommitdiff
blob: 1a24fd51179dd8e5fd4fbb5a953878d4efdf279f (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
--- ../foo/arts-1.0.4/mcop/mcoputils.cc	2002-02-09 14:10:12.000000000 +0100
+++ mcop/mcoputils.cc	2002-12-15 21:41:24.000000000 +0100
@@ -31,6 +31,7 @@
 #include <errno.h>
 #include <config.h>
 #include <ctype.h>
+#include <pwd.h>	//included to get logname from uid
 #include <map>
 	
 using namespace std;
@@ -73,8 +74,20 @@
 
 string MCOPUtils::createFilePath(string name)
 {
-	string logname = "unknown";
-	if(getenv("LOGNAME")) logname = getenv("LOGNAME");
+// changed to get logname from uid instead of environment variable
+// LOGNAME to avoid trouble when LOGNAME does not exist or
+// is wrong (such as in kdesu environment)
+// S. Voitzsch Sebastian.Voitzsch@web.de
+// 2002-12-03
+
+	struct passwd *pwd = NULL;
+	pwd = getpwuid(geteuid());
+	if (pwd == NULL) arts_fatal("could not get user name from user id");
+
+ 	string logname = "unknown";
+	logname = pwd->pw_name;
+ 
+//	if(getenv("LOGNAME")) logname = getenv("LOGNAME");
 
 	string tmpdir = "/tmp/mcop-"+uglify(logname);
 	if(mkdir(tmpdir.c_str(),0700) != 0 && errno != EEXIST)