[kde-solaris] dcopserver statup problem and /tmp/.ICE-unix
Stefan Teleman
steleman at nyc.rr.com
Sun Feb 12 02:09:19 CET 2006
On Saturday 11 February 2006 19:49, Avi Schwartz wrote:
> > Is this a Blastwave related question ?
>
> It is a KDE related question. The build is the Blastwave build.
And the build doesn't handle this particular problem correctly, which
a known problem, and has been known for years.
There are three directories under /tmp which need to have their
permissions set correctly by the startup script:
/tmp/.ICE-unix
/tmp/.X11-unix
/tmp/.X11-pipe
/* kchmod.c */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <errno.h>
static const char* unixPath = "/tmp/.X11-unix";
static const char* pipePath = "/tmp/.X11-pipe";
static const char* icePath = "/tmp/.ICE-unix";
static const char* fontPath = "/tmp/.font-unix";
extern int errno;
int
main (int argc, char* argv[])
{
mode_t mode = 0;
uid_t uid = 0;
gid_t gid = 0;
mode = (S_IRWXU | S_IRWXG | S_IRWXO | S_ISVTX);
if (setuid (uid) != 0)
{
perror ("setuid"), strerror (errno);
return -1;
}
if (mkdir (unixPath, mode) != 0)
{
if (EEXIST != errno)
{
perror("mkdir"), strerror(errno);
return -2;
}
}
if (chmod (unixPath, mode) != 0)
perror ("chmod"), strerror (errno);
if (chown (unixPath, uid, gid) != 0)
perror ("chown"), strerror (errno);
if (mkdir (pipePath, mode) != 0)
{
if (EEXIST != errno)
{
perror("mkdir"), strerror(errno);
return -2;
}
}
if (chmod (pipePath, mode) != 0)
perror ("chmod"), strerror (errno);
if (chown (pipePath, uid, gid) != 0)
perror ("chown"), strerror (errno);
if (mkdir (icePath, mode) != 0)
{
if (EEXIST != errno)
{
perror("mkdir"), strerror(errno);
return -2;
}
}
if (chmod (icePath, mode) != 0)
perror ("chmod"), strerror (errno);
if (chown (icePath, uid, gid) != 0)
perror ("chown"), strerror (errno);
if (mkdir (fontPath, mode) != 0)
{
if (EEXIST != errno)
{
perror("mkdir"), strerror(errno);
return -2;
}
}
if (chmod (fontPath, mode) != 0)
perror ("chmod"), strerror (errno);
if (chown (fontPath, uid, gid) != 0)
perror ("chown"), strerror (errno);
return 0;
}
// vim: ts=2 sw=2 et
/* kchmod.c */
Compile and install as ${KDE}/bin/kchmod, permissions 4755, owned
root:root and run it directly from startkde, somewhere near the top
before anything KDE-related starts happening.
Do not keep deleting these directories because that will not fix
anything.
--Stefan
--
Stefan Teleman 'Nobody Expects the Spanish Inquisition'
steleman at nyc.rr.com -Monty Python
More information about the kde-solaris
mailing list