From kde-core-devel Mon Jan 29 23:40:12 2001 From: Thiago Macieira Date: Mon, 29 Jan 2001 23:40:12 +0000 To: kde-core-devel Subject: Re: http://bugs.kde.org/db/19/19124.html X-MARC-Message: https://marc.info/?l=kde-core-devel&m=98081192317214 Stephan Kulow wrote: > > Hi! > > The above is a compilation problem with kdesu on RH 5.2 > Does someone have an idea about ancient systems? :) Hi! I have done a superficial check on glibc's header files and in kdelibs/kdesu/client.cpp. The compilation problem is caused by the fact that structure "struct ucred" wasn't ever defined. Please ignore the "cmsg_data" warning. That's glibc's fault, not KDE's. The code in kdelibs/kdesu/client.cpp using ucred is wrapped around an #ifdef for SO_PEERCRED (Peer credentials, I take it). Unfortunately, even though glibc 2.1.3 I have defines "struct ucred" in bits/socket.h, it is never mentioned in the documentation, so I don't know how standard it is. Anyways, the problem is because bits/socket.h includes asm/socket.h (in Linux, at least), which defines SO_PEERCRED, but not struct ucred, which is defined in linux/socket.h. So, since changing glibc is out of the question for KDE :->, here's the solution I propose (sorry, no patch and no test now): - in the configure script, add a check for "struct ucred" in sys/socket.h, which is where we expect that to be. It's just a simple AC_TRY_COMPILE and AC_DEFINE(HAVE_STRUCT_UCRED) - in kdelibs/kdesu/client.cpp, change the #ifndef SO_PEERCRED to: #if !defined(SO_PEERCRED) || !defined(HAVE_STRUCT_UCRED) ==== for kdelibs/configure.in.in: AC_SUBST(HAVE_STRUCT_UCRED) AC_MSG_CHECKING([for struct ucred]) AC_TRY_COMPILE( [ #include struct ucred cred; ], [ ], [ AC_DEFINE(HAVE_STRUCT_UCRED,1,[Define if struct ucred is present from sys/socket.h]) AC_MSG_RESULT(yes) ], AC_MSG_RESULT(no) ) ==== -- Thiago Macieira - UFOT Registry number: 1001 thiagom@mail.com talha@geocities.com ICQ UIN: 1967141 PGP: 0x8F2978D5 and 0xEA9037A5 Registered Linux user #65028 102/380. You have achieved in disgrace what I always wanted to be. -- Lt. Cmdr. Data, "Deja Q"