You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
241 lines
8.1 KiB
241 lines
8.1 KiB
13 years ago
|
Index: kinit/wrapper.c
|
||
|
===================================================================
|
||
|
--- kinit/wrapper.c.orig
|
||
|
+++ kinit/wrapper.c
|
||
|
@@ -164,7 +164,9 @@ static int openSocket()
|
||
|
sock_file[strlen(sock_file)-1] = 0;
|
||
|
|
||
|
strncat(sock_file, "/socket-", MAX_SOCK_FILE - strlen(sock_file));
|
||
|
- if (gethostname(sock_file+strlen(sock_file), MAX_SOCK_FILE - strlen(sock_file) - 1) != 0)
|
||
|
+ if( getenv("XAUTHLOCALHOSTNAME"))
|
||
|
+ strncat(sock_file, getenv("XAUTHLOCALHOSTNAME"), MAX_SOCK_FILE - strlen(sock_file) - 1);
|
||
|
+ else if (gethostname(sock_file+strlen(sock_file), MAX_SOCK_FILE - strlen(sock_file) - 1) != 0)
|
||
|
{
|
||
|
perror("Warning: Could not determine hostname: ");
|
||
|
return -1;
|
||
|
Index: kinit/lnusertemp.c
|
||
|
===================================================================
|
||
|
--- kinit/lnusertemp.c.orig
|
||
|
+++ kinit/lnusertemp.c
|
||
|
@@ -39,7 +39,7 @@
|
||
|
|
||
|
int check_tmp_dir(const char *tmp_dir);
|
||
|
int create_link(const char *file, const char *tmp_dir);
|
||
|
-int build_link(const char *tmp_prefix, const char *kde_prefix);
|
||
|
+int build_link(const char *tmp_prefix, const char *kde_prefix, int kdehostname);
|
||
|
|
||
|
int check_tmp_dir(const char *tmp_dir)
|
||
|
{
|
||
|
@@ -89,7 +89,7 @@ int create_link(const char *file, const
|
||
|
}
|
||
|
|
||
|
|
||
|
-int build_link(const char *tmp_prefix, const char *kde_prefix)
|
||
|
+int build_link(const char *tmp_prefix, const char *kde_prefix, int kdehostname)
|
||
|
{
|
||
|
struct passwd *pw_ent;
|
||
|
char kde_tmp_dir[PATH_MAX+1];
|
||
|
@@ -157,10 +157,21 @@ int build_link(const char *tmp_prefix, c
|
||
|
}
|
||
|
|
||
|
strncat(kde_tmp_dir, kde_prefix, PATH_MAX - strlen(kde_tmp_dir));
|
||
|
- if (gethostname(kde_tmp_dir+strlen(kde_tmp_dir), PATH_MAX - strlen(kde_tmp_dir) - 1) != 0)
|
||
|
+
|
||
|
+ if( kdehostname )
|
||
|
+ {
|
||
|
+ if( getenv("XAUTHLOCALHOSTNAME"))
|
||
|
+ strncat(kde_tmp_dir+strlen(kde_tmp_dir), getenv("XAUTHLOCALHOSTNAME"), PATH_MAX - strlen(kde_tmp_dir) - 1);
|
||
|
+ else
|
||
|
+ return 0;
|
||
|
+ }
|
||
|
+ else
|
||
|
{
|
||
|
- perror("Aborting. Could not determine hostname: ");
|
||
|
- exit(255);
|
||
|
+ if (gethostname(kde_tmp_dir+strlen(kde_tmp_dir), PATH_MAX - strlen(kde_tmp_dir) - 1) != 0)
|
||
|
+ {
|
||
|
+ perror("Could not determine hostname: ");
|
||
|
+ return 1;
|
||
|
+ }
|
||
|
}
|
||
|
kde_tmp_dir[sizeof(kde_tmp_dir)-1] = '\0';
|
||
|
|
||
|
@@ -266,7 +277,9 @@ int main(int argc, char **argv)
|
||
|
kde_prefix = "/cache-";
|
||
|
}
|
||
|
|
||
|
- res = build_link(tmp_prefix, kde_prefix);
|
||
|
+ res = build_link(tmp_prefix, kde_prefix, 1);
|
||
|
+ if( build_link(tmp_prefix, kde_prefix, 0))
|
||
|
+ res = 1;
|
||
|
|
||
|
free(tmp_prefix);
|
||
|
|
||
|
Index: kdecore/kstandarddirs.cpp
|
||
|
===================================================================
|
||
|
--- kdecore/kstandarddirs.cpp.orig
|
||
|
+++ kdecore/kstandarddirs.cpp
|
||
|
@@ -719,7 +719,10 @@ void KStandardDirs::createSpecialResourc
|
||
|
{
|
||
|
char hostname[256];
|
||
|
hostname[0] = 0;
|
||
|
- gethostname(hostname, 255);
|
||
|
+ if( getenv("XAUTHLOCALHOSTNAME"))
|
||
|
+ strlcpy(hostname, getenv("XAUTHLOCALHOSTNAME"), 255 );
|
||
|
+ else
|
||
|
+ gethostname(hostname, 255);
|
||
|
QString dir = QString("%1%2-%3").arg(localkdedir()).arg(type).arg(hostname);
|
||
|
char link[1024];
|
||
|
link[1023] = 0;
|
||
|
Index: kdecore/kcrash.cpp
|
||
|
===================================================================
|
||
|
--- kdecore/kcrash.cpp.orig
|
||
|
+++ kdecore/kcrash.cpp
|
||
|
@@ -466,7 +466,9 @@ static int openSocket()
|
||
|
sock_file[strlen(sock_file)-1] = 0;
|
||
|
|
||
|
strncat(sock_file, "/socket-", MAX_SOCK_FILE - strlen(sock_file));
|
||
|
- if (gethostname(sock_file+strlen(sock_file), MAX_SOCK_FILE - strlen(sock_file) - 1) != 0)
|
||
|
+ if( getenv("XAUTHLOCALHOSTNAME"))
|
||
|
+ strncat(sock_file, getenv("XAUTHLOCALHOSTNAME"), MAX_SOCK_FILE - strlen(sock_file) - 1);
|
||
|
+ else if (gethostname(sock_file+strlen(sock_file), MAX_SOCK_FILE - strlen(sock_file) - 1) != 0)
|
||
|
{
|
||
|
perror("Warning: Could not determine hostname: ");
|
||
|
return -1;
|
||
|
Index: dcop/dcopserver_shutdown.c
|
||
|
===================================================================
|
||
|
--- dcop/dcopserver_shutdown.c.orig
|
||
|
+++ dcop/dcopserver_shutdown.c
|
||
|
@@ -95,7 +95,9 @@ static void getDCOPFile(char *dcop_file,
|
||
|
strncat(dcop_file, "/.DCOPserver_", n);
|
||
|
n -= strlen("/.DCOPserver_");
|
||
|
|
||
|
- if (gethostname(dcop_file+strlen(dcop_file), n) != 0)
|
||
|
+ if (getenv("XAUTHLOCALHOSTNAME"))
|
||
|
+ strncat(dcop_file+strlen(dcop_file), getenv("XAUTHLOCALHOSTNAME"), n);
|
||
|
+ else if (gethostname(dcop_file+strlen(dcop_file), n) != 0)
|
||
|
{
|
||
|
perror("Error. Could not determine hostname: ");
|
||
|
dcop_file[0] = '\0';
|
||
|
Index: dcop/dcopc.c
|
||
|
===================================================================
|
||
|
--- dcop/dcopc.c.orig
|
||
|
+++ dcop/dcopc.c
|
||
|
@@ -684,7 +684,9 @@ dcop_connect()
|
||
|
}
|
||
|
|
||
|
hostName[0] = '\0';
|
||
|
- if (gethostname(hostName, sizeof(hostName)))
|
||
|
+ if (getenv("XAUTHLOCALHOSTNAME"))
|
||
|
+ strlcpy(hostName, getenv("XAUTHLOCALHOSTNAME"),sizeof(hostName)-1);
|
||
|
+ else if (gethostname(hostName, sizeof(hostName)))
|
||
|
strcpy(hostName, "localhost");
|
||
|
else
|
||
|
hostName[sizeof(hostName)-1] = '\0';
|
||
|
Index: dcop/dcopclient.cpp
|
||
|
===================================================================
|
||
|
--- dcop/dcopclient.cpp.orig
|
||
|
+++ dcop/dcopclient.cpp
|
||
|
@@ -277,7 +277,9 @@ static QCString dcopServerFile(const QCS
|
||
|
{
|
||
|
char hostName[256];
|
||
|
hostName[0] = '\0';
|
||
|
- if (gethostname(hostName, sizeof(hostName)))
|
||
|
+ if (getenv("XAUTHLOCALHOSTNAME"))
|
||
|
+ fName += getenv("XAUTHLOCALHOSTNAME");
|
||
|
+ else if (gethostname(hostName, sizeof(hostName)))
|
||
|
{
|
||
|
fName += "localhost";
|
||
|
}
|
||
|
Index: dcop/KDE-ICE/Xtranssock.c
|
||
|
===================================================================
|
||
|
--- dcop/KDE-ICE/Xtranssock.c.orig
|
||
|
+++ dcop/KDE-ICE/Xtranssock.c
|
||
|
@@ -1444,6 +1444,7 @@ UnixHostReallyLocal (char *host)
|
||
|
|
||
|
{
|
||
|
char hostnamebuf[256];
|
||
|
+ char* xauthlocalname = getenv("XAUTHLOCALHOSTNAME");
|
||
|
|
||
|
TRANS(GetHostname) (hostnamebuf, sizeof (hostnamebuf));
|
||
|
|
||
|
@@ -1451,6 +1452,10 @@ UnixHostReallyLocal (char *host)
|
||
|
{
|
||
|
return (1);
|
||
|
}
|
||
|
+ else if(xauthlocalname && strcmp (xauthlocalname, host) == 0)
|
||
|
+ {
|
||
|
+ return (1);
|
||
|
+ }
|
||
|
else
|
||
|
{
|
||
|
/*
|
||
|
Index: kded/khostname.cpp
|
||
|
===================================================================
|
||
|
--- kded/khostname.cpp.orig
|
||
|
+++ kded/khostname.cpp
|
||
|
@@ -111,7 +111,8 @@ static QCStringList split(const QCString
|
||
|
|
||
|
void KHostName::changeX()
|
||
|
{
|
||
|
- QString cmd = "xauth list";
|
||
|
+ const char* xauthlocalhostname = getenv("XAUTHLOCALHOSTNAME");
|
||
|
+ QString cmd = "xauth -n list";
|
||
|
FILE *xFile = popen(QFile::encodeName(cmd), "r");
|
||
|
if (!xFile)
|
||
|
{
|
||
|
@@ -123,6 +124,7 @@ void KHostName::changeX()
|
||
|
char buf[1024+1];
|
||
|
while (!feof(xFile))
|
||
|
{
|
||
|
+ buf[1024]='\0';
|
||
|
QCString line = fgets(buf, 1024, xFile);
|
||
|
if (line.length())
|
||
|
line.truncate(line.length()-1); // Strip LF.
|
||
|
@@ -157,12 +159,17 @@ void KHostName::changeX()
|
||
|
QCString newNetId = newName+netId.mid(i);
|
||
|
QCString oldNetId = netId.left(i);
|
||
|
|
||
|
- if(oldNetId != oldName)
|
||
|
- continue;
|
||
|
+ if(oldNetId != oldName
|
||
|
+ && (!xauthlocalhostname || strcmp(xauthlocalhostname, oldNetId.data()) != 0))
|
||
|
+ continue;
|
||
|
|
||
|
- cmd = "xauth remove "+KProcess::quote(netId);
|
||
|
- system(QFile::encodeName(cmd));
|
||
|
- cmd = "xauth add ";
|
||
|
+ // don't nuke the xauth when XAUTHLOCALHOSTNAME points to it
|
||
|
+ if (!xauthlocalhostname || oldNetId != xauthlocalhostname)
|
||
|
+ {
|
||
|
+ cmd = "xauth -n remove "+KProcess::quote(netId);
|
||
|
+ system(QFile::encodeName(cmd));
|
||
|
+ }
|
||
|
+ cmd = "xauth -n add ";
|
||
|
cmd += KProcess::quote(newNetId);
|
||
|
cmd += " ";
|
||
|
cmd += KProcess::quote(authName);
|
||
|
@@ -276,7 +283,10 @@ void KHostName::changeDcop()
|
||
|
}
|
||
|
}
|
||
|
|
||
|
- // Remove old entries
|
||
|
+ // Remove old entries, but only if XAUTHLOCALHOSTNAME doesn't point
|
||
|
+ // to it
|
||
|
+ char* xauthlocalhostname = getenv("XAUTHLOCALHOSTNAME");
|
||
|
+ if (!xauthlocalhostname || !oldNetId.contains(xauthlocalhostname))
|
||
|
{
|
||
|
QString cmd = "iceauth remove "+KProcess::quote("netid="+oldNetId);
|
||
|
system(QFile::encodeName(cmd));
|
||
|
@@ -368,9 +378,7 @@ int main(int argc, char **argv)
|
||
|
|
||
|
KHostName hn;
|
||
|
|
||
|
- if(!getenv("XAUTHLOCALHOSTNAME"))
|
||
|
- hn.changeX();
|
||
|
-
|
||
|
+ hn.changeX();
|
||
|
hn.changeDcop();
|
||
|
hn.changeStdDirs("socket");
|
||
|
hn.changeStdDirs("tmp");
|