summaryrefslogtreecommitdiffstats
path: root/opensuse/tdelibs/use-xauthlocalhostname.diff
diff options
context:
space:
mode:
Diffstat (limited to 'opensuse/tdelibs/use-xauthlocalhostname.diff')
-rw-r--r--opensuse/tdelibs/use-xauthlocalhostname.diff240
1 files changed, 240 insertions, 0 deletions
diff --git a/opensuse/tdelibs/use-xauthlocalhostname.diff b/opensuse/tdelibs/use-xauthlocalhostname.diff
new file mode 100644
index 000000000..42ef39b9c
--- /dev/null
+++ b/opensuse/tdelibs/use-xauthlocalhostname.diff
@@ -0,0 +1,240 @@
+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");