/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- * * Copyright (c) 2007 David Zeuthen * Copyright (c) 2007 William Jon McCann * * Permission is hereby granted, free of charge, to any person * obtaining a copy of this software and associated documentation * files (the "Software"), to deal in the Software without * restriction, including without limitation the rights to use, * copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the * Software is furnished to do so, subject to the following * conditions: * * The above copyright notice and this permission notice shall be * included in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR * OTHER DEALINGS IN THE SOFTWARE. */ #include #include #include #include "ck-connector.h" int main (int argc, char *argv[]) { CkConnector *connector; int ret; int res; DBusError error; int user; const char *display_device; const char *x11_display; const char *remote_host_name; ret = 1; connector = ck_connector_new (); if (connector == NULL) { printf ("OOM creating CkConnector\n"); goto out; } user = 730; display_device = "/dev/tty3"; x11_display = ":20"; remote_host_name = ""; dbus_error_init (&error); res = ck_connector_open_session_with_parameters (connector, &error, "unix-user", &user, "display-device", &display_device, "x11-display", &x11_display, "remote-host-name", &remote_host_name, NULL); if (! res) { if (dbus_error_is_set (&error)) { printf ("%s\n", error.message); dbus_error_free (&error); } else { printf ("cannot open CK session: OOM, D-Bus system bus not available,\n" "ConsoleKit not available or insufficient privileges.\n"); } goto out; } printf ("Session cookie is '%s'\n", ck_connector_get_cookie (connector)); if (ck_connector_get_runtime_dir (connector, &error) == NULL) { if (dbus_error_is_set (&error)) { printf ("Failed to get XDG_RUNTIME_DIR error is '%s'\n", error.message); dbus_error_free (&error); } else { printf ("Cannot get XDG_RUNTIME_DIR, out of memory error\n"); } } else { printf ("XDG_RUNTIME_DIR is '%s'\n", ck_connector_get_runtime_dir (connector, &error)); } sleep (20); dbus_error_init (&error); if (! ck_connector_close_session (connector, &error)) { if (dbus_error_is_set (&error)) { printf ("%s\n", error.message); dbus_error_free (&error); } else { printf ("Cannot close CK session: OOM, D-Bus system bus not available,\n" "ConsoleKit not available or insufficient privileges.\n"); } goto out; } ret = 0; out: if (connector != NULL) { ck_connector_unref (connector); } return ret; }