On Fri, Jul 22, 2011 at 4:49 PM, Julien Cristau <[email protected]> wrote:
> On Mon, Jun 27, 2011 at 21:04:25 +0200, Cyril Brulebois wrote:
>
>> +static int openCKSession(struct verify_info *verify, struct display *d)
>> +{
>> + int ret;
>> + DBusError error;
>> + char *remote_host_name = "";
>> + dbus_bool_t is_local;
>> + char *display_name = "";
>> + char *display_device = "";
>> + char devtmp[16];
>> +
>> + if (!use_consolekit)
>> + return 1;
>> +
>> + is_local = d->displayType.location == Local;
>> + if (d->peerlen > 0 && d->peer)
>> + remote_host_name = d->peer;
>> + if (d->name)
>> + display_name = d->name;
>> + /* how can we get the corresponding tty at best...? */
>> + if (d->windowPath) {
>> + display_device = strchr(d->windowPath, ':');
>> + if (display_device && display_device[1])
>> + display_device++;
>> + else
>> + display_device = d->windowPath;
>> + snprintf(devtmp, sizeof(devtmp), "/dev/tty%s", display_device);
>
> Is ck relevant to anything !linux? If so, that path is probably wrong.
> I'm not quite sure what ck users would do with that information, though,
> and a quick codesearch doesn't really help. So maybe we should just not
> set that…
Good point. It's ported to FreeBSD, and FreeBSD supports /dev/tty* too
(actually all BSDs do). I have no idea about other platforms, and I'm
not sure there's a portable way to do it. On the other hand, I would
think most (all?) platforms where an user would want to enable CK
support are covered, but that's more of a guess.
>
>> + display_device = devtmp;
>> + }
>> +
>> + connector = ck_connector_new();
>> + if (!connector) {
>> + LogOutOfMem("ck_connector");
>> + return 0;
>> + }
>> +
>> + dbus_error_init(&error);
>> + ret = ck_connector_open_session_with_parameters(
>> + connector, &error,
>> + "unix-user", &verify->uid,
>> + "x11-display", &display_name,
>> + "x11-display-device", &display_device,
>> + "remote-host-name", &remote_host_name,
>> + "is-local", &is_local,
>> + NULL);
>> + if (!ret) {
>> + if (dbus_error_is_set(&error)) {
>> + LogError("Dbus error: %s\n", error.message);
>> + dbus_error_free(&error);
>> + } else {
>> + LogError("ConsoleKit error\n");
>> + }
>> + LogError("console-kit-daemon not running?\n");
>> + ck_connector_unref(connector);
>> + connector = NULL;
>> + return 0;
>
> Is "ck-daemon isn't running" a good reason to prevent the user from
> logging in? (Why?)
I agree it's better to let the user log in. Without a ck session, the
user might be unable to do some pretty important stuff (configure NM,
shutdown, etc.), but that's still better than not being able to log
in.
_______________________________________________
[email protected]: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel