On 02/26/2014 11:38 AM, Slávek Banko wrote:
As I noted in the bug report: This is not a problem. Presence code for ConsoleKit has no effect unless ConsoleKit present on system. With the ConsoleKit communicates via D-Bus. If ConsoleKit not present, not with whom to communicate => code has no effect == same as it was not used.
Slavek,
dm.h:40: #define WITH_CONSOLE_KIT
** there is NO conditional surround this define, it is defined always.
dm.h:488: #ifdef WITH_CONSOLE_KIT dm.h:489: int StartClient( const char *ck_session_cookie ); dm.h:490: #else dm.h:491: int StartClient( void ); dm.h:492: #endif
client.c:1205: #ifdef WITH_CONSOLE_KIT client.c:1206: int client.c:1207: StartClient( const char *ck_session_cookie ) client.c:1208: #else client.c:1209: int client.c:1210: StartClient() client.c:1211: #endif
client.c:1311: env = setEnv ( env, "XDG_SESSION_COOKIE", ck_session_cookie );
session.c:642: #ifdef WITH_CONSOLE_KIT session.c:643: ck_session_cookie = open_ck_session (getpwnam(curuser), d); session.c:644: if (!(clientPid = StartClient(ck_session_cookie))) { session.c:645: #else session.c:646: if (!(clientPid = StartClient())) { session.c:647: #endif
Even without consolekit installed on the system, this still causes StartClient to be declared as:
int StartClient( const char *ck_session_cookie );
instead of
int StartClient( void );
and client.c causes StartClient to be initialized with the character pointer ck_session_cookie (hopefully NULL) and part of the XDG_SESSION_COOKIE environment to be set (if not NULL).
It may not matter, but it does not seem like good practice to leave code like that hanging around in the absence of concolekit. I have put fprintf statements inside all WITH_CONSOLE_KIT preprocessor conditionals and will report back with which ones are being executed..