summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Ancell <robert.ancell@canonical.com>2018-01-12 11:10:07 +1300
committerRobert Ancell <robert.ancell@canonical.com>2018-01-12 16:11:44 +1300
commita95eded633eaff672e2a5b3bee7483a6a050c7e4 (patch)
tree8ff2a4de86ea36a942284d5ade9c87cfeab60125
parent6b08e3cf1c54d1943a4ccaab139e959eb7b04092 (diff)
downloadlightdm-git-a95eded633eaff672e2a5b3bee7483a6a050c7e4.tar.gz
Move variable declarations from the start of function blocks.
It's well past 1999...
-rw-r--r--src/accounts.c14
-rw-r--r--src/console-kit.c223
-rw-r--r--src/display-manager-service.c150
-rw-r--r--src/display-manager.c13
-rw-r--r--src/dm-tool.c170
-rw-r--r--src/greeter-session.c22
-rw-r--r--src/greeter-socket.c15
-rw-r--r--src/greeter.c284
-rw-r--r--src/greeter.h2
-rw-r--r--src/guest-account.c38
-rw-r--r--src/lightdm.c320
-rw-r--r--src/log-file.c4
-rw-r--r--src/logger.c6
-rw-r--r--src/login1.c212
-rw-r--r--src/plymouth.c7
-rw-r--r--src/process.c35
-rw-r--r--src/seat-local.c124
-rw-r--r--src/seat-unity.c105
-rw-r--r--src/seat-xdmcp-session.c11
-rw-r--r--src/seat-xremote.c27
-rw-r--r--src/seat-xvnc.c33
-rw-r--r--src/seat.c445
-rw-r--r--src/session-child.c214
-rw-r--r--src/session-config.c16
-rw-r--r--src/session.c120
-rw-r--r--src/shared-data-manager.c58
-rw-r--r--src/shared-data-manager.h2
-rw-r--r--src/unity-system-compositor.c68
-rw-r--r--src/vnc-server.c33
-rw-r--r--src/vt.c27
-rw-r--r--src/wayland-session.h2
-rw-r--r--src/x-authority.c53
-rw-r--r--src/x-server-local.c86
-rw-r--r--src/x-server-local.h2
-rw-r--r--src/x-server-xmir.c8
-rw-r--r--src/x-server-xmir.h2
-rw-r--r--src/x-server-xvnc.h2
-rw-r--r--src/x-server.c10
-rw-r--r--src/x-server.h2
-rw-r--r--src/xdmcp-protocol.c95
-rw-r--r--src/xdmcp-server.c162
41 files changed, 1219 insertions, 2003 deletions
diff --git a/src/accounts.c b/src/accounts.c
index 91f05cab..968bd235 100644
--- a/src/accounts.c
+++ b/src/accounts.c
@@ -27,18 +27,14 @@ G_DEFINE_TYPE (User, user, G_TYPE_OBJECT)
User *
accounts_get_user_by_name (const gchar *username)
{
- User *user = NULL;
- CommonUser *common_user;
-
g_return_val_if_fail (username != NULL, NULL);
- common_user = common_user_list_get_user_by_name (common_user_list_get_instance (), username);
- if (common_user != NULL)
- {
- user = g_object_new (USER_TYPE, NULL);
- user->priv->common_user = common_user;
- }
+ CommonUser *common_user = common_user_list_get_user_by_name (common_user_list_get_instance (), username);
+ if (common_user == NULL)
+ return NULL;
+ User *user = g_object_new (USER_TYPE, NULL);
+ user->priv->common_user = common_user;
return user;
}
diff --git a/src/console-kit.c b/src/console-kit.c
index 093bf118..bd01de7d 100644
--- a/src/console-kit.c
+++ b/src/console-kit.c
@@ -17,35 +17,32 @@
gchar *
ck_open_session (GVariantBuilder *parameters)
{
- g_autoptr(GDBusConnection) bus = NULL;
- g_autoptr(GVariant) result = NULL;
- g_autofree gchar *cookie = NULL;
- g_autoptr(GError) error = NULL;
-
g_return_val_if_fail (parameters != NULL, NULL);
- bus = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, &error);
+ g_autoptr(GError) error = NULL;
+ g_autoptr(GDBusConnection) bus = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, &error);
if (error)
g_warning ("Failed to get system bus: %s", error->message);
if (!bus)
return NULL;
- result = g_dbus_connection_call_sync (bus,
- "org.freedesktop.ConsoleKit",
- "/org/freedesktop/ConsoleKit/Manager",
- "org.freedesktop.ConsoleKit.Manager",
- "OpenSessionWithParameters",
- g_variant_new ("(a(sv))", parameters),
- G_VARIANT_TYPE ("(s)"),
- G_DBUS_CALL_FLAGS_NONE,
- -1,
- NULL,
- &error);
+ g_autoptr(GVariant) result = g_dbus_connection_call_sync (bus,
+ "org.freedesktop.ConsoleKit",
+ "/org/freedesktop/ConsoleKit/Manager",
+ "org.freedesktop.ConsoleKit.Manager",
+ "OpenSessionWithParameters",
+ g_variant_new ("(a(sv))", parameters),
+ G_VARIANT_TYPE ("(s)"),
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ NULL,
+ &error);
if (error)
g_warning ("Failed to open CK session: %s", error->message);
if (!result)
return NULL;
+ g_autofree gchar *cookie = NULL;
g_variant_get (result, "(s)", &cookie);
g_debug ("Opened ConsoleKit session %s", cookie);
@@ -55,27 +52,24 @@ ck_open_session (GVariantBuilder *parameters)
static gchar *
get_ck_session (GDBusConnection *bus, const gchar *cookie)
{
- g_autoptr(GVariant) result = NULL;
- g_autofree gchar *session_path = NULL;
g_autoptr(GError) error = NULL;
-
- bus = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, &error);
- result = g_dbus_connection_call_sync (bus,
- "org.freedesktop.ConsoleKit",
- "/org/freedesktop/ConsoleKit/Manager",
- "org.freedesktop.ConsoleKit.Manager",
- "GetSessionForCookie",
- g_variant_new ("(s)", cookie),
- G_VARIANT_TYPE ("(o)"),
- G_DBUS_CALL_FLAGS_NONE,
- -1,
- NULL,
- &error);
+ g_autoptr(GVariant) result = g_dbus_connection_call_sync (bus,
+ "org.freedesktop.ConsoleKit",
+ "/org/freedesktop/ConsoleKit/Manager",
+ "org.freedesktop.ConsoleKit.Manager",
+ "GetSessionForCookie",
+ g_variant_new ("(s)", cookie),
+ G_VARIANT_TYPE ("(o)"),
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ NULL,
+ &error);
if (error)
g_warning ("Error getting ConsoleKit session: %s", error->message);
if (!result)
return NULL;
+ g_autofree gchar *session_path = NULL;
g_variant_get (result, "(o)", &session_path);
return g_steal_pointer (&session_path);
@@ -84,36 +78,32 @@ get_ck_session (GDBusConnection *bus, const gchar *cookie)
void
ck_lock_session (const gchar *cookie)
{
- g_autoptr(GDBusConnection) bus = NULL;
- g_autofree gchar *session_path = NULL;
- g_autoptr(GVariant) result = NULL;
- g_autoptr(GError) error = NULL;
-
g_return_if_fail (cookie != NULL);
g_debug ("Locking ConsoleKit session %s", cookie);
- bus = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, &error);
+ g_autoptr(GError) error = NULL;
+ g_autoptr(GDBusConnection) bus = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, &error);
if (error)
g_warning ("Failed to get system bus: %s", error->message);
if (!bus)
return;
- session_path = get_ck_session (bus, cookie);
+ g_autofree gchar *session_path = get_ck_session (bus, cookie);
if (!session_path)
return;
- result = g_dbus_connection_call_sync (bus,
- "org.freedesktop.ConsoleKit",
- session_path,
- "org.freedesktop.ConsoleKit.Session",
- "Lock",
- g_variant_new ("()"),
- G_VARIANT_TYPE ("()"),
- G_DBUS_CALL_FLAGS_NONE,
- -1,
- NULL,
- &error);
+ g_autoptr(GVariant) result = g_dbus_connection_call_sync (bus,
+ "org.freedesktop.ConsoleKit",
+ session_path,
+ "org.freedesktop.ConsoleKit.Session",
+ "Lock",
+ g_variant_new ("()"),
+ G_VARIANT_TYPE ("()"),
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ NULL,
+ &error);
if (error)
g_warning ("Error locking ConsoleKit session: %s", error->message);
}
@@ -121,36 +111,32 @@ ck_lock_session (const gchar *cookie)
void
ck_unlock_session (const gchar *cookie)
{
- g_autoptr(GDBusConnection) bus = NULL;
- g_autofree gchar *session_path = NULL;
- g_autoptr(GVariant) result = NULL;
- g_autoptr(GError) error = NULL;
-
g_return_if_fail (cookie != NULL);
g_debug ("Unlocking ConsoleKit session %s", cookie);
- bus = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, &error);
+ g_autoptr(GError) error = NULL;
+ g_autoptr(GDBusConnection) bus = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, &error);
if (error)
g_warning ("Failed to get system bus: %s", error->message);
if (!bus)
return;
- session_path = get_ck_session (bus, cookie);
+ g_autofree gchar *session_path = get_ck_session (bus, cookie);
if (!session_path)
return;
- result = g_dbus_connection_call_sync (bus,
- "org.freedesktop.ConsoleKit",
- session_path,
- "org.freedesktop.ConsoleKit.Session",
- "Unlock",
- g_variant_new ("()"),
- G_VARIANT_TYPE ("()"),
- G_DBUS_CALL_FLAGS_NONE,
- -1,
- NULL,
- &error);
+ g_autoptr(GVariant) result = g_dbus_connection_call_sync (bus,
+ "org.freedesktop.ConsoleKit",
+ session_path,
+ "org.freedesktop.ConsoleKit.Session",
+ "Unlock",
+ g_variant_new ("()"),
+ G_VARIANT_TYPE ("()"),
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ NULL,
+ &error);
if (error)
g_warning ("Error unlocking ConsoleKit session: %s", error->message);
}
@@ -158,36 +144,32 @@ ck_unlock_session (const gchar *cookie)
void
ck_activate_session (const gchar *cookie)
{
- g_autoptr(GDBusConnection) bus = NULL;
- g_autofree gchar *session_path = NULL;
- g_autoptr(GVariant) result = NULL;
- g_autoptr(GError) error = NULL;
-
g_return_if_fail (cookie != NULL);
g_debug ("Activating ConsoleKit session %s", cookie);
- bus = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, &error);
+ g_autoptr(GError) error = NULL;
+ g_autoptr(GDBusConnection) bus = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, &error);
if (error)
g_warning ("Failed to get system bus: %s", error->message);
if (!bus)
return;
- session_path = get_ck_session (bus, cookie);
+ g_autofree gchar *session_path = get_ck_session (bus, cookie);
if (!session_path)
return;
- result = g_dbus_connection_call_sync (bus,
- "org.freedesktop.ConsoleKit",
- session_path,
- "org.freedesktop.ConsoleKit.Session",
- "Activate",
- g_variant_new ("()"),
- G_VARIANT_TYPE ("()"),
- G_DBUS_CALL_FLAGS_NONE,
- -1,
- NULL,
- &error);
+ g_autoptr(GVariant) result = g_dbus_connection_call_sync (bus,
+ "org.freedesktop.ConsoleKit",
+ session_path,
+ "org.freedesktop.ConsoleKit.Session",
+ "Activate",
+ g_variant_new ("()"),
+ G_VARIANT_TYPE ("()"),
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ NULL,
+ &error);
if (error)
g_warning ("Error activating ConsoleKit session: %s", error->message);
}
@@ -195,37 +177,34 @@ ck_activate_session (const gchar *cookie)
void
ck_close_session (const gchar *cookie)
{
- g_autoptr(GDBusConnection) bus = NULL;
- g_autoptr(GVariant) result = NULL;
- gboolean is_closed;
- g_autoptr(GError) error = NULL;
-
g_return_if_fail (cookie != NULL);
g_debug ("Ending ConsoleKit session %s", cookie);
- bus = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, &error);
+ g_autoptr(GError) error = NULL;
+ g_autoptr(GDBusConnection) bus = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, &error);
if (error)
g_warning ("Failed to get system bus: %s", error->message);
if (!bus)
return;
- result = g_dbus_connection_call_sync (bus,
- "org.freedesktop.ConsoleKit",
- "/org/freedesktop/ConsoleKit/Manager",
- "org.freedesktop.ConsoleKit.Manager",
- "CloseSession",
- g_variant_new ("(s)", cookie),
- G_VARIANT_TYPE ("(b)"),
- G_DBUS_CALL_FLAGS_NONE,
- -1,
- NULL,
- &error);
+ g_autoptr(GVariant) result = g_dbus_connection_call_sync (bus,
+ "org.freedesktop.ConsoleKit",
+ "/org/freedesktop/ConsoleKit/Manager",
+ "org.freedesktop.ConsoleKit.Manager",
+ "CloseSession",
+ g_variant_new ("(s)", cookie),
+ G_VARIANT_TYPE ("(b)"),
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ NULL,
+ &error);
if (error)
g_warning ("Error ending ConsoleKit session: %s", error->message);
if (!result)
return;
+ gboolean is_closed;
g_variant_get (result, "(b)", &is_closed);
if (!is_closed)
g_warning ("ConsoleKit.Manager.CloseSession() returned false");
@@ -234,44 +213,40 @@ ck_close_session (const gchar *cookie)
gchar *
ck_get_xdg_runtime_dir (const gchar *cookie)
{
- g_autoptr(GDBusConnection) bus = NULL;
- g_autofree gchar *session_path = NULL;
- g_autoptr(GVariant) result = NULL;
- g_autofree gchar *runtime_dir = NULL;
- g_autoptr(GError) error = NULL;
-
g_return_val_if_fail (cookie != NULL, NULL);
g_debug ("Getting XDG_RUNTIME_DIR from ConsoleKit for session %s", cookie);
- bus = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, &error);
+ g_autoptr(GError) error = NULL;
+ g_autoptr(GDBusConnection) bus = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, &error);
if (error)
g_warning ("Failed to get system bus: %s", error->message);
if (!bus)
return NULL;
- session_path = get_ck_session (bus, cookie);
+ g_autofree gchar *session_path = get_ck_session (bus, cookie);
if (!session_path)
return NULL;
- result = g_dbus_connection_call_sync (bus,
- "org.freedesktop.ConsoleKit",
- session_path,
- "org.freedesktop.ConsoleKit.Session",
- "GetXDGRuntimeDir",
- g_variant_new ("()"),
- G_VARIANT_TYPE ("(s)"),
- G_DBUS_CALL_FLAGS_NONE,
- -1,
- NULL,
- &error);
+ g_autoptr(GVariant) result = g_dbus_connection_call_sync (bus,
+ "org.freedesktop.ConsoleKit",
+ session_path,
+ "org.freedesktop.ConsoleKit.Session",
+ "GetXDGRuntimeDir",
+ g_variant_new ("()"),
+ G_VARIANT_TYPE ("(s)"),
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ NULL,
+ &error);
if (error)
g_warning ("Error getting XDG_RUNTIME_DIR from ConsoleKit: %s", error->message);
if (!result)
return NULL;
- g_variant_get (result, "(s)", &runtime_dir);
+ const gchar *runtime_dir;
+ g_variant_get (result, "(&s)", &runtime_dir);
g_debug ("ConsoleKit XDG_RUNTIME_DIR is %s", runtime_dir);
- return g_steal_pointer (&runtime_dir);
+ return g_strdup (runtime_dir);
}
diff --git a/src/display-manager-service.c b/src/display-manager-service.c
index 9fbf4413..6e3e1c5c 100644
--- a/src/display-manager-service.c
+++ b/src/display-manager-service.c
@@ -70,9 +70,7 @@ typedef struct
DisplayManagerService *
display_manager_service_new (DisplayManager *manager)
{
- DisplayManagerService *service;
-
- service = g_object_new (DISPLAY_MANAGER_SERVICE_TYPE, NULL);
+ DisplayManagerService *service = g_object_new (DISPLAY_MANAGER_SERVICE_TYPE, NULL);
service->priv->manager = g_object_ref (manager);
return service;
@@ -81,9 +79,7 @@ display_manager_service_new (DisplayManager *manager)
static SeatBusEntry *
seat_bus_entry_new (DisplayManagerService *service, Seat *seat, const gchar *path)
{
- SeatBusEntry *entry;
-
- entry = g_malloc0 (sizeof (SeatBusEntry));
+ SeatBusEntry *entry = g_malloc0 (sizeof (SeatBusEntry));
entry->service = service;
entry->seat = seat;
entry->path = g_strdup (path);
@@ -94,9 +90,7 @@ seat_bus_entry_new (DisplayManagerService *service, Seat *seat, const gchar *pat
static SessionBusEntry *
session_bus_entry_new (DisplayManagerService *service, Session *session, const gchar *path, const gchar *seat_path)
{
- SessionBusEntry *entry;
-
- entry = g_malloc0 (sizeof (SessionBusEntry));
+ SessionBusEntry *entry = g_malloc0 (sizeof (SessionBusEntry));
entry->service = service;
entry->session = session;
entry->path = g_strdup (path);
@@ -109,11 +103,10 @@ static void
emit_object_value_changed (GDBusConnection *bus, const gchar *path, const gchar *interface_name, const gchar *property_name, GVariant *property_value)
{
GVariantBuilder builder;
- g_autoptr(GError) error = NULL;
-
g_variant_builder_init (&builder, G_VARIANT_TYPE_ARRAY);
g_variant_builder_add (&builder, "{sv}", property_name, property_value);
+ g_autoptr(GError) error = NULL;
if (!g_dbus_connection_emit_signal (bus,
NULL,
path,
@@ -128,7 +121,6 @@ static void
emit_object_signal (GDBusConnection *bus, const gchar *path, const gchar *signal_name, const gchar *object_path)
{
g_autoptr(GError) error = NULL;
-
if (!g_dbus_connection_emit_signal (bus,
NULL,
path,
@@ -162,11 +154,11 @@ static GVariant *
get_seat_list (DisplayManagerService *service)
{
GVariantBuilder builder;
- GHashTableIter iter;
- gpointer value;
-
g_variant_builder_init (&builder, G_VARIANT_TYPE ("ao"));
+
+ GHashTableIter iter;
g_hash_table_iter_init (&iter, service->priv->seat_bus_entries);
+ gpointer value;
while (g_hash_table_iter_next (&iter, NULL, &value))
{
SeatBusEntry *entry = value;
@@ -180,12 +172,11 @@ static GVariant *
get_session_list (DisplayManagerService *service, const gchar *seat_path)
{
GVariantBuilder builder;
- GHashTableIter iter;
- gpointer value;
-
g_variant_builder_init (&builder, G_VARIANT_TYPE ("ao"));
+ GHashTableIter iter;
g_hash_table_iter_init (&iter, service->priv->session_bus_entries);
+ gpointer value;
while (g_hash_table_iter_next (&iter, NULL, &value))
{
SessionBusEntry *entry = value;
@@ -231,18 +222,16 @@ handle_display_manager_call (GDBusConnection *connection,
g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "AddSeat is deprecated");
else if (g_strcmp0 (method_name, "AddLocalXSeat") == 0)
{
- gint display_number;
- Seat *seat;
- SeatBusEntry *entry;
-
if (!g_variant_is_of_type (parameters, G_VARIANT_TYPE ("(i)")))
{
g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "Invalid arguments");
return;
}
+ gint display_number;
g_variant_get (parameters, "(i)", &display_number);
+ g_autoptr(Seat) seat = NULL;
g_signal_emit (service, signals[ADD_XLOCAL_SEAT], 0, display_number, &seat);
if (!seat)
@@ -250,9 +239,8 @@ handle_display_manager_call (GDBusConnection *connection,
g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_FAILED, "Unable to create local X seat");
return;
}
- entry = g_hash_table_lookup (service->priv->seat_bus_entries, seat);
+ SeatBusEntry *entry = g_hash_table_lookup (service->priv->seat_bus_entries, seat);
g_dbus_method_invocation_return_value (invocation, g_variant_new ("(o)", entry->path));
- g_object_unref (seat);
}
else
g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Unknown method");
@@ -303,11 +291,10 @@ handle_seat_call (GDBusConnection *connection,
}
else if (g_strcmp0 (method_name, "SwitchToUser") == 0)
{
- const gchar *username, *session_name;
-
if (!g_variant_is_of_type (parameters, G_VARIANT_TYPE ("(ss)")))
g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "Invalid arguments");
+ const gchar *username, *session_name;
g_variant_get (parameters, "(&s&s)", &username, &session_name);
if (g_strcmp0 (session_name, "") == 0)
session_name = NULL;
@@ -319,11 +306,10 @@ handle_seat_call (GDBusConnection *connection,
}
else if (g_strcmp0 (method_name, "SwitchToGuest") == 0)
{
- const gchar *session_name;
-
if (!g_variant_is_of_type (parameters, G_VARIANT_TYPE ("(s)")))
g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "Invalid arguments");
+ const gchar *session_name;
g_variant_get (parameters, "(&s)", &session_name);
if (g_strcmp0 (session_name, "") == 0)
session_name = NULL;
@@ -351,14 +337,11 @@ handle_seat_call (GDBusConnection *connection,
static Seat *
get_seat_for_session (DisplayManagerService *service, Session *session)
{
- GList *seat_link;
-
- for (seat_link = display_manager_get_seats (service->priv->manager); seat_link; seat_link = seat_link->next)
+ for (GList *seat_link = display_manager_get_seats (service->priv->manager); seat_link; seat_link = seat_link->next)
{
Seat *seat = seat_link->data;
- GList *session_link;
- for (session_link = seat_get_sessions (seat); session_link; session_link = session_link->next)
+ for (GList *session_link = seat_get_sessions (seat); session_link; session_link = session_link->next)
{
Session *s = session_link->data;
@@ -403,12 +386,10 @@ handle_session_call (GDBusConnection *connection,
if (g_strcmp0 (method_name, "Lock") == 0)
{
- Seat *seat;
-
if (!g_variant_is_of_type (parameters, G_VARIANT_TYPE ("()")))
g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "Invalid arguments");
- seat = get_seat_for_session (entry->service, entry->session);
+ Seat *seat = get_seat_for_session (entry->service, entry->session);
/* FIXME: Should only allow locks if have a session on this seat */
seat_lock (seat, session_get_username (entry->session));
g_dbus_method_invocation_return_value (invocation, NULL);
@@ -420,29 +401,25 @@ handle_session_call (GDBusConnection *connection,
static void
running_user_session_cb (Seat *seat, Session *session, DisplayManagerService *service)
{
- static const GDBusInterfaceVTable session_vtable =
- {
- handle_session_call,
- handle_session_get_property
- };
- SeatBusEntry *seat_entry;
- SessionBusEntry *session_entry;
- gchar *path;
- g_autoptr(GError) error = NULL;
-
/* Set environment variables when session runs */
- seat_entry = g_hash_table_lookup (service->priv->seat_bus_entries, seat);
+ SeatBusEntry *seat_entry = g_hash_table_lookup (service->priv->seat_bus_entries, seat);
session_set_env (session, "XDG_SEAT_PATH", seat_entry->path);
- path = g_strdup_printf ("/org/freedesktop/DisplayManager/Session%d", service->priv->session_index);
+ g_autofree gchar *path = g_strdup_printf ("/org/freedesktop/DisplayManager/Session%d", service->priv->session_index);
service->priv->session_index++;
session_set_env (session, "XDG_SESSION_PATH", path);
- g_object_set_data_full (G_OBJECT (session), "XDG_SESSION_PATH", path, g_free);
+ g_object_set_data_full (G_OBJECT (session), "XDG_SESSION_PATH", g_steal_pointer (&path), g_free);
- session_entry = session_bus_entry_new (service, session, g_object_get_data (G_OBJECT (session), "XDG_SESSION_PATH"), seat_entry ? seat_entry->path : NULL);
+ SessionBusEntry *session_entry = session_bus_entry_new (service, session, g_object_get_data (G_OBJECT (session), "XDG_SESSION_PATH"), seat_entry ? seat_entry->path : NULL);
g_hash_table_insert (service->priv->session_bus_entries, g_object_ref (session), session_entry);
g_debug ("Registering session with bus path %s", session_entry->path);
+ static const GDBusInterfaceVTable session_vtable =
+ {
+ handle_session_call,
+ handle_session_get_property
+ };
+ g_autoptr(GError) error = NULL;
session_entry->bus_id = g_dbus_connection_register_object (service->priv->bus,
session_entry->path,
service->priv->session_info->interfaces[0],
@@ -462,12 +439,10 @@ running_user_session_cb (Seat *seat, Session *session, DisplayManagerService *se
static void
session_removed_cb (Seat *seat, Session *session, DisplayManagerService *service)
{
- SessionBusEntry *entry;
- g_autofree gchar *seat_path = NULL;
-
g_signal_handlers_disconnect_matched (session, G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, seat);
- entry = g_hash_table_lookup (service->priv->session_bus_entries, session);
+ SessionBusEntry *entry = g_hash_table_lookup (service->priv->session_bus_entries, session);
+ g_autofree gchar *seat_path = NULL;
if (entry)
{
g_dbus_connection_unregister_object (service->priv->bus, entry->bus_id);
@@ -488,23 +463,20 @@ session_removed_cb (Seat *seat, Session *session, DisplayManagerService *service
static void
seat_added_cb (DisplayManager *display_manager, Seat *seat, DisplayManagerService *service)
{
- static const GDBusInterfaceVTable seat_vtable =
- {
- handle_seat_call,
- handle_seat_get_property
- };
- g_autofree gchar *path = NULL;
- SeatBusEntry *entry;
- g_autoptr(GError) error = NULL;
-
- path = g_strdup_printf ("/org/freedesktop/DisplayManager/Seat%d", service->priv->seat_index);
+ g_autofree gchar *path = g_strdup_printf ("/org/freedesktop/DisplayManager/Seat%d", service->priv->seat_index);
service->priv->seat_index++;
- entry = seat_bus_entry_new (service, seat, path);
+ SeatBusEntry *entry = seat_bus_entry_new (service, seat, path);
g_hash_table_insert (service->priv->seat_bus_entries, g_object_ref (seat), entry);
g_debug ("Registering seat with bus path %s", entry->path);
+ static const GDBusInterfaceVTable seat_vtable =
+ {
+ handle_seat_call,
+ handle_seat_get_property
+ };
+ g_autoptr(GError) error = NULL;
entry->bus_id = g_dbus_connection_register_object (service->priv->bus,
entry->path,
service->priv->seat_info->interfaces[0],
@@ -524,9 +496,7 @@ seat_added_cb (DisplayManager *display_manager, Seat *seat, DisplayManagerServic
static void
seat_removed_cb (DisplayManager *display_manager, Seat *seat, DisplayManagerService *service)
{
- SeatBusEntry *entry;
-
- entry = g_hash_table_lookup (service->priv->seat_bus_entries, seat);
+ SeatBusEntry *entry = g_hash_table_lookup (service->priv->seat_bus_entries, seat);
if (entry)
{
g_dbus_connection_unregister_object (service->priv->bus, entry->bus_id);
@@ -534,7 +504,7 @@ seat_removed_cb (DisplayManager *display_manager, Seat *seat, DisplayManagerServ
}
g_hash_table_remove (service->priv->seat_bus_entries, seat);
-
+
emit_object_value_changed (service->priv->bus, "/org/freedesktop/DisplayManager", "org.freedesktop.DisplayManager", "Seats", get_seat_list (service));
}
@@ -543,6 +513,12 @@ bus_acquired_cb (GDBusConnection *connection,
const gchar *name,
gpointer user_data)
{
+ DisplayManagerService *service = user_data;
+
+ g_debug ("Acquired bus name %s", name);
+
+ service->priv->bus = g_object_ref (connection);
+
const gchar *display_manager_interface =
"<node>"
" <interface name='org.freedesktop.DisplayManager'>"
@@ -571,11 +547,9 @@ bus_acquired_cb (GDBusConnection *connection,
" </signal>"
" </interface>"
"</node>";
- static const GDBusInterfaceVTable display_manager_vtable =
- {
- handle_display_manager_call,
- handle_display_manager_get_property
- };
+ GDBusNodeInfo *display_manager_info = g_dbus_node_info_new_for_xml (display_manager_interface, NULL);
+ g_assert (display_manager_info != NULL);
+
const gchar *seat_interface =
"<node>"
" <interface name='org.freedesktop.DisplayManager.Seat'>"
@@ -599,6 +573,9 @@ bus_acquired_cb (GDBusConnection *connection,
" </signal>"
" </interface>"
"</node>";
+ service->priv->seat_info = g_dbus_node_info_new_for_xml (seat_interface, NULL);
+ g_assert (service->priv->seat_info != NULL);
+
const gchar *session_interface =
"<node>"
" <interface name='org.freedesktop.DisplayManager.Session'>"
@@ -607,22 +584,15 @@ bus_acquired_cb (GDBusConnection *connection,
" <method name='Lock'/>"
" </interface>"
"</node>";
- DisplayManagerService *service = user_data;
- GDBusNodeInfo *display_manager_info;
- GList *link;
- g_autoptr(GError) error = NULL;
-
- g_debug ("Acquired bus name %s", name);
-
- service->priv->bus = g_object_ref (connection);
-
- display_manager_info = g_dbus_node_info_new_for_xml (display_manager_interface, NULL);
- g_assert (display_manager_info != NULL);
- service->priv->seat_info = g_dbus_node_info_new_for_xml (seat_interface, NULL);
- g_assert (service->priv->seat_info != NULL);
service->priv->session_info = g_dbus_node_info_new_for_xml (session_interface, NULL);
g_assert (service->priv->session_info != NULL);
+ static const GDBusInterfaceVTable display_manager_vtable =
+ {
+ handle_display_manager_call,
+ handle_display_manager_get_property
+ };
+ g_autoptr(GError) error = NULL;
service->priv->reg_id = g_dbus_connection_register_object (connection,
"/org/freedesktop/DisplayManager",
display_manager_info->interfaces[0],
@@ -636,7 +606,7 @@ bus_acquired_cb (GDBusConnection *connection,
/* Add objects for existing seats and listen to new ones */
g_signal_connect (service->priv->manager, DISPLAY_MANAGER_SIGNAL_SEAT_ADDED, G_CALLBACK (seat_added_cb), service);
g_signal_connect (service->priv->manager, DISPLAY_MANAGER_SIGNAL_SEAT_REMOVED, G_CALLBACK (seat_removed_cb), service);
- for (link = display_manager_get_seats (service->priv->manager); link; link = link->next)
+ for (GList *link = display_manager_get_seats (service->priv->manager); link; link = link->next)
seat_added_cb (service->priv->manager, (Seat *) link->data, service);
g_signal_emit (service, signals[READY], 0);
@@ -686,12 +656,12 @@ display_manager_service_finalize (GObject *object)
{
DisplayManagerService *self = DISPLAY_MANAGER_SERVICE (object);
- g_dbus_connection_unregister_object (self->priv->bus, self->priv->reg_id);
+ g_dbus_connection_unregister_object (self->priv->bus, self->priv->reg_id);
g_bus_unown_name (self->priv->bus_id);
if (self->priv->seat_info)
g_dbus_node_info_unref (self->priv->seat_info);
if (self->priv->session_info)
- g_dbus_node_info_unref (self->priv->session_info);
+ g_dbus_node_info_unref (self->priv->session_info);
g_hash_table_unref (self->priv->seat_bus_entries);
g_hash_table_unref (self->priv->session_bus_entries);
g_object_unref (self->priv->bus);
diff --git a/src/display-manager.c b/src/display-manager.c
index 87a857e6..8f3dd320 100644
--- a/src/display-manager.c
+++ b/src/display-manager.c
@@ -59,9 +59,7 @@ display_manager_get_seats (DisplayManager *manager)
Seat *
display_manager_get_seat (DisplayManager *manager, const gchar *name)
{
- GList *link;
-
- for (link = manager->priv->seats; link; link = link->next)
+ for (GList *link = manager->priv->seats; link; link = link->next)
{
Seat *seat = link->data;
@@ -133,8 +131,6 @@ display_manager_start (DisplayManager *manager)
void
display_manager_stop (DisplayManager *manager)
{
- GList *seats, *link;
-
g_return_if_fail (manager != NULL);
if (manager->priv->stopping)
@@ -145,8 +141,8 @@ display_manager_stop (DisplayManager *manager)
manager->priv->stopping = TRUE;
/* Stop all the seats. Copy the list as it might be modified if a seat stops during this loop */
- seats = g_list_copy (manager->priv->seats);
- for (link = seats; link; link = link->next)
+ GList *seats = g_list_copy (manager->priv->seats);
+ for (GList *link = seats; link; link = link->next)
{
Seat *seat = link->data;
seat_stop (seat);
@@ -171,9 +167,8 @@ static void
display_manager_finalize (GObject *object)
{
DisplayManager *self = DISPLAY_MANAGER (object);
- GList *link;
- for (link = self->priv->seats; link; link = link->next)
+ for (GList *link = self->priv->seats; link; link = link->next)
{
Seat *seat = link->data;
g_signal_handlers_disconnect_matched (seat, G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, self);
diff --git a/src/dm-tool.c b/src/dm-tool.c
index 9493df21..5060109f 100644
--- a/src/dm-tool.c
+++ b/src/dm-tool.c
@@ -39,17 +39,14 @@ xephyr_setup_cb (gpointer user_data)
static void
xephyr_signal_cb (int signum)
{
- g_autofree gchar *path = NULL;
- g_autoptr(GVariant) result = NULL;
g_autoptr(GError) error = NULL;
-
- result = g_dbus_proxy_call_sync (dm_proxy,
- "AddLocalXSeat",
- g_variant_new ("(i)", xephyr_display_number),
- G_DBUS_CALL_FLAGS_NONE,
- -1,
- NULL,
- &error);
+ g_autoptr(GVariant) result = g_dbus_proxy_call_sync (dm_proxy,
+ "AddLocalXSeat",
+ g_variant_new ("(i)", xephyr_display_number),
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ NULL,
+ &error);
if (!result)
{
g_printerr ("Unable to add seat: %s\n", error->message);
@@ -63,6 +60,7 @@ xephyr_signal_cb (int signum)
exit (EXIT_FAILURE);
}
+ const gchar *path = NULL;
g_variant_get (result, "(&o)", &path);
g_print ("%s\n", path);
@@ -72,8 +70,6 @@ xephyr_signal_cb (int signum)
static GDBusProxy *
get_seat_proxy (void)
{
- g_autoptr(GError) error = NULL;
-
if (seat_proxy)
return seat_proxy;
@@ -83,6 +79,7 @@ get_seat_proxy (void)
exit (EXIT_FAILURE);
}
+ g_autoptr(GError) error = NULL;
seat_proxy = g_dbus_proxy_new_for_bus_sync (bus_type,
G_DBUS_PROXY_FLAGS_NONE,
NULL,
@@ -103,16 +100,11 @@ get_seat_proxy (void)
int
main (int argc, char **argv)
{
- gchar *command;
- gint n_options;
- gchar **options;
- g_autoptr(GError) error = NULL;
- gint arg_index;
-
#if !defined(GLIB_VERSION_2_36)
g_type_init ();
#endif
+ gint arg_index;
for (arg_index = 1; arg_index < argc; arg_index++)
{
gchar *arg = argv[arg_index];
@@ -164,6 +156,7 @@ main (int argc, char **argv)
return EXIT_FAILURE;
}
+ g_autoptr(GError) error = NULL;
dm_proxy = g_dbus_proxy_new_for_bus_sync (bus_type,
G_DBUS_PROXY_FLAGS_NONE,
NULL,
@@ -178,10 +171,10 @@ main (int argc, char **argv)
return EXIT_FAILURE;
}
- command = argv[arg_index];
+ const gchar *command = argv[arg_index];
arg_index++;
- n_options = argc - arg_index;
- options = argv + arg_index;
+ gint n_options = argc - arg_index;
+ gchar **options = argv + arg_index;
if (strcmp (command, "switch-to-greeter") == 0)
{
if (n_options != 0)
@@ -206,8 +199,6 @@ main (int argc, char **argv)
}
else if (strcmp (command, "switch-to-user") == 0)
{
- gchar *username, *session = "";
-
if (n_options < 1 || n_options > 2)
{
g_printerr ("Usage switch-to-user USERNAME [SESSION]\n");
@@ -215,7 +206,8 @@ main (int argc, char **argv)
return EXIT_FAILURE;
}
- username = options[0];
+ const gchar *username = options[0];
+ const gchar *session = "";
if (n_options == 2)
session = options[1];
@@ -234,8 +226,6 @@ main (int argc, char **argv)
}
else if (strcmp (command, "switch-to-guest") == 0)
{
- gchar *session = "";
-
if (n_options > 1)
{
g_printerr ("Usage switch-to-guest [SESSION]\n");
@@ -243,6 +233,7 @@ main (int argc, char **argv)
return EXIT_FAILURE;
}
+ const gchar *session = "";
if (n_options == 1)
session = options[0];
@@ -283,27 +274,20 @@ main (int argc, char **argv)
}
else if (strcmp (command, "list-seats") == 0)
{
- GVariant *seats;
- GVariantIter *seat_iter;
- gchar *seat_path;
-
if (!g_dbus_proxy_get_name_owner (dm_proxy))
{
g_printerr ("Unable to contact display manager\n");
return EXIT_FAILURE;
}
- seats = g_dbus_proxy_get_cached_property (dm_proxy, "Seats");
+ g_autoptr(GVariant) seats = g_dbus_proxy_get_cached_property (dm_proxy, "Seats");
+ g_autoptr(GVariantIter) seat_iter = NULL;
g_variant_get (seats, "ao", &seat_iter);
+ gchar *seat_path;
while (g_variant_iter_loop (seat_iter, "&o", &seat_path))
{
gchar *seat_name;
g_autoptr(GDBusProxy) proxy = NULL;
- gchar **property_names;
- GVariant *sessions;
- GVariantIter *session_iter;
- gchar *session_path;
- gint i;
if (g_str_has_prefix (seat_path, "/org/freedesktop/DisplayManager/"))
seat_name = seat_path + strlen ("/org/freedesktop/DisplayManager/");
@@ -322,54 +306,50 @@ main (int argc, char **argv)
continue;
g_print ("%s\n", seat_name);
- property_names = g_dbus_proxy_get_cached_property_names (proxy);
- for (i = 0; property_names[i]; i++)
+ g_auto(GStrv) property_names = g_dbus_proxy_get_cached_property_names (proxy);
+ for (int i = 0; property_names[i]; i++)
{
- g_autoptr(GVariant) value = NULL;
-
if (strcmp (property_names[i], "Sessions") == 0)
continue;
- value = g_dbus_proxy_get_cached_property (proxy, property_names[i]);
+ g_autoptr(GVariant) value = g_dbus_proxy_get_cached_property (proxy, property_names[i]);
g_print (" %s=%s\n", property_names[i], g_variant_print (value, FALSE));
}
- sessions = g_dbus_proxy_get_cached_property (proxy, "Sessions");
+ g_autoptr(GVariant) sessions = g_dbus_proxy_get_cached_property (proxy, "Sessions");
if (!sessions)
continue;
+ g_autoptr(GVariantIter) session_iter = NULL;
g_variant_get (sessions, "ao", &session_iter);
+ const gchar *session_path;
while (g_variant_iter_loop (session_iter, "&o", &session_path))
{
- g_autoptr(GDBusProxy) session_proxy = NULL;
const gchar *session_name;
-
if (g_str_has_prefix (session_path, "/org/freedesktop/DisplayManager/"))
session_name = session_path + strlen ("/org/freedesktop/DisplayManager/");
else
session_name = session_path;
- session_proxy = g_dbus_proxy_new_sync (g_dbus_proxy_get_connection (dm_proxy),
- G_DBUS_PROXY_FLAGS_NONE,
- NULL,
- "org.freedesktop.DisplayManager",
- session_path,
- "org.freedesktop.DisplayManager.Session",
- NULL,
- NULL);
+ g_autoptr(GDBusProxy) session_proxy = g_dbus_proxy_new_sync (g_dbus_proxy_get_connection (dm_proxy),
+ G_DBUS_PROXY_FLAGS_NONE,
+ NULL,
+ "org.freedesktop.DisplayManager",
+ session_path,
+ "org.freedesktop.DisplayManager.Session",
+ NULL,
+ NULL);
if (!session_proxy || !g_dbus_proxy_get_name_owner (session_proxy))
continue;
g_print (" %s\n", session_name);
- property_names = g_dbus_proxy_get_cached_property_names (session_proxy);
- for (i = 0; property_names[i]; i++)
+ g_auto(GStrv) property_names = g_dbus_proxy_get_cached_property_names (session_proxy);
+ for (int i = 0; property_names[i]; i++)
{
- g_autoptr(GVariant) value = NULL;
-
if (strcmp (property_names[i], "Seat") == 0)
continue;
- value = g_dbus_proxy_get_cached_property (session_proxy, property_names[i]);
+ g_autoptr(GVariant) value = g_dbus_proxy_get_cached_property (session_proxy, property_names[i]);
g_print (" %s=%s\n", property_names[i], g_variant_print (value, FALSE));
}
}
@@ -381,17 +361,14 @@ main (int argc, char **argv)
}
else if (strcmp (command, "add-nested-seat") == 0)
{
- gchar *path, *xephyr_command, **xephyr_argv;
- gchar *dimensions = NULL;
- GMainLoop *loop;
-
- path = g_find_program_in_path ("Xephyr");
+ const gchar *path = g_find_program_in_path ("Xephyr");
if (!path)
{
g_printerr ("Unable to find Xephyr, please install it\n");
return EXIT_FAILURE;
}
+ const gchar *dimensions = NULL;
if (n_options > 0)
{
/* Parse the given options */
@@ -415,11 +392,8 @@ main (int argc, char **argv)
xephyr_display_number = 0;
while (TRUE)
{
- g_autofree gchar *lock_name = NULL;
- gboolean has_lock;
-
- lock_name = g_strdup_printf ("/tmp/.X%d-lock", xephyr_display_number);
- has_lock = g_file_test (lock_name, G_FILE_TEST_EXISTS);
+ g_autofree gchar *lock_name = g_strdup_printf ("/tmp/.X%d-lock", xephyr_display_number);
+ gboolean has_lock = g_file_test (lock_name, G_FILE_TEST_EXISTS);
if (has_lock)
xephyr_display_number++;
@@ -430,6 +404,7 @@ main (int argc, char **argv)
/* Wait for signal from Xephyr is ready */
signal (SIGUSR1, xephyr_signal_cb);
+ g_autofree gchar *xephyr_command;
if (dimensions == NULL)
{
xephyr_command = g_strdup_printf ("Xephyr :%d ", xephyr_display_number);
@@ -442,6 +417,7 @@ main (int argc, char **argv)
{
xephyr_command = g_strdup_printf ("Xephyr :%d -screen %s", xephyr_display_number, dimensions);
}
+ g_auto(GStrv) xephyr_argv = NULL;
if (!g_shell_parse_argv (xephyr_command, NULL, &xephyr_argv, &error) ||
!g_spawn_async (NULL, xephyr_argv, NULL,
G_SPAWN_DO_NOT_REAP_CHILD | G_SPAWN_SEARCH_PATH | G_SPAWN_STDOUT_TO_DEV_NULL | G_SPAWN_STDERR_TO_DEV_NULL,
@@ -453,15 +429,11 @@ main (int argc, char **argv)
}
/* Block until ready */
- loop = g_main_loop_new (NULL, FALSE);
+ g_autoptr(GMainLoop) loop = g_main_loop_new (NULL, FALSE);
g_main_loop_run (loop);
}
else if (strcmp (command, "add-local-x-seat") == 0)
{
- GVariant *result;
- gint display_number;
- const gchar *path;
-
if (n_options != 1)
{
g_printerr ("Usage add-seat DISPLAY_NUMBER\n");
@@ -469,15 +441,14 @@ main (int argc, char **argv)
return EXIT_FAILURE;
}
- display_number = atoi (options[0]);
-
- result = g_dbus_proxy_call_sync (dm_proxy,
- "AddLocalXSeat",
- g_variant_new ("(i)", display_number),
- G_DBUS_CALL_FLAGS_NONE,
- -1,
- NULL,
- &error);
+ gint display_number = atoi (options[0]);
+ g_autoptr(GVariant) result = g_dbus_proxy_call_sync (dm_proxy,
+ "AddLocalXSeat",
+ g_variant_new ("(i)", display_number),
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ NULL,
+ &error);
if (!result)
{
g_printerr ("Unable to add local X seat: %s\n", error->message);
@@ -490,6 +461,7 @@ main (int argc, char **argv)
return EXIT_FAILURE;
}
+ const gchar *path;
g_variant_get (result, "(&o)", &path);
g_print ("%s\n", path);
@@ -497,11 +469,6 @@ main (int argc, char **argv)
}
else if (strcmp (command, "add-seat") == 0)
{
- GVariant *result;
- gchar *type, *path;
- GVariantBuilder *properties;
- gint i;
-
if (n_options < 1)
{
g_printerr ("Usage add-seat TYPE [NAME=VALUE...]\n");
@@ -509,17 +476,14 @@ main (int argc, char **argv)
return EXIT_FAILURE;
}
- type = options[0];
- properties = g_variant_builder_new (G_VARIANT_TYPE ("a(ss)"));
+ const gchar *type = options[0];
+ g_autoptr(GVariantBuilder) properties = g_variant_builder_new (G_VARIANT_TYPE ("a(ss)"));
- for (i = 1; i < n_options; i++)
+ for (gint i = 1; i < n_options; i++)
{
- g_autofree gchar *property = NULL;
- gchar *name, *value;
-
- property = g_strdup (options[i]);
- name = property;
- value = strchr (property, '=');
+ g_autofree gchar *property = g_strdup (options[i]);
+ gchar *name = property;
+ gchar *value = strchr (property, '=');
if (value)
{
*value = '\0';
@@ -531,14 +495,13 @@ main (int argc, char **argv)
g_variant_builder_add_value (properties, g_variant_new ("(ss)", name, value));
}
- result = g_dbus_proxy_call_sync (dm_proxy,
- "AddSeat",
- g_variant_new ("(sa(ss))", type, properties),
- G_DBUS_CALL_FLAGS_NONE,
- -1,
- NULL,
- &error);
- g_variant_builder_unref (properties);
+ g_autoptr(GVariant) result = g_dbus_proxy_call_sync (dm_proxy,
+ "AddSeat",
+ g_variant_new ("(sa(ss))", type, properties),
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ NULL,
+ &error);
if (!result)
{
g_printerr ("Unable to add seat: %s\n", error->message);
@@ -551,6 +514,7 @@ main (int argc, char **argv)
return EXIT_FAILURE;
}
+ const gchar *path;
g_variant_get (result, "(&o)", &path);
g_print ("%s\n", path);
diff --git a/src/greeter-session.c b/src/greeter-session.c
index ace766f1..ac637c0d 100644
--- a/src/greeter-session.c
+++ b/src/greeter-session.c
@@ -42,23 +42,19 @@ static gboolean
greeter_session_start (Session *session)
{
GreeterSession *s = GREETER_SESSION (session);
- int to_greeter_pipe[2], from_greeter_pipe[2];
- int to_greeter_input, to_greeter_output, from_greeter_input, from_greeter_output;
- g_autofree gchar *to_server_value = NULL;
- g_autofree gchar *from_server_value = NULL;
- gboolean result;
/* Create a pipe to talk with the greeter */
+ int to_greeter_pipe[2], from_greeter_pipe[2];
if (pipe (to_greeter_pipe) != 0 || pipe (from_greeter_pipe) != 0)
{
g_warning ("Failed to create pipes: %s", strerror (errno));
return FALSE;
}
- to_greeter_input = to_greeter_pipe[1];
- to_greeter_output = to_greeter_pipe[0];
- from_greeter_input = from_greeter_pipe[1];
- from_greeter_output = from_greeter_pipe[0];
+ int to_greeter_input = to_greeter_pipe[1];
+ int to_greeter_output = to_greeter_pipe[0];
+ int from_greeter_input = from_greeter_pipe[1];
+ int from_greeter_output = from_greeter_pipe[0];
greeter_set_file_descriptors (s->priv->greeter, to_greeter_input, from_greeter_output);
/* Don't allow the daemon end of the pipes to be accessed in child processes */
@@ -66,12 +62,12 @@ greeter_session_start (Session *session)
fcntl (from_greeter_output, F_SETFD, FD_CLOEXEC);
/* Let the greeter session know how to communicate with the daemon */
- to_server_value = g_strdup_printf ("%d", from_greeter_input);
+ g_autofree gchar *to_server_value = g_strdup_printf ("%d", from_greeter_input);
session_set_env (session, "LIGHTDM_TO_SERVER_FD", to_server_value);
- from_server_value = g_strdup_printf ("%d", to_greeter_output);
+ g_autofree gchar *from_server_value = g_strdup_printf ("%d", to_greeter_output);
session_set_env (session, "LIGHTDM_FROM_SERVER_FD", from_server_value);
- result = SESSION_CLASS (greeter_session_parent_class)->start (session);
+ gboolean result = SESSION_CLASS (greeter_session_parent_class)->start (session);
/* Close the session ends of the pipe */
close (from_greeter_input);
@@ -114,7 +110,7 @@ greeter_session_class_init (GreeterSessionClass *klass)
GObjectClass *object_class = G_OBJECT_CLASS (klass);
session_class->start = greeter_session_start;
- session_class->stop = greeter_session_stop;
+ session_class->stop = greeter_session_stop;
object_class->finalize = greeter_session_finalize;
g_type_class_add_private (klass, sizeof (GreeterSessionPrivate));
diff --git a/src/greeter-socket.c b/src/greeter-socket.c
index 1b0147a2..34793640 100644
--- a/src/greeter-socket.c
+++ b/src/greeter-socket.c
@@ -46,9 +46,7 @@ G_DEFINE_TYPE (GreeterSocket, greeter_socket, G_TYPE_OBJECT)
GreeterSocket *
greeter_socket_new (const gchar *path)
{
- GreeterSocket *socket;
-
- socket = g_object_new (GREETER_SOCKET_TYPE, NULL);
+ GreeterSocket *socket = g_object_new (GREETER_SOCKET_TYPE, NULL);
socket->priv->path = g_strdup (path);
return socket;
@@ -67,10 +65,8 @@ greeter_disconnected_cb (Greeter *greeter, GreeterSocket *socket)
static gboolean
greeter_connect_cb (GSocket *s, GIOCondition condition, GreeterSocket *socket)
{
- g_autoptr(GSocket) new_socket = NULL;
g_autoptr(GError) error = NULL;
-
- new_socket = g_socket_accept (socket->priv->socket, NULL, &error);
+ g_autoptr(GSocket) new_socket = g_socket_accept (socket->priv->socket, NULL, &error);
if (error)
g_warning ("Failed to accept greeter connection: %s", error->message);
if (!new_socket)
@@ -94,9 +90,6 @@ greeter_connect_cb (GSocket *s, GIOCondition condition, GreeterSocket *socket)
gboolean
greeter_socket_start (GreeterSocket *socket, GError **error)
{
- g_autoptr(GSocketAddress) address = NULL;
- gboolean result;
-
g_return_val_if_fail (socket != NULL, FALSE);
g_return_val_if_fail (socket->priv->socket == NULL, FALSE);
@@ -105,8 +98,8 @@ greeter_socket_start (GreeterSocket *socket, GError **error)
return FALSE;
unlink (socket->priv->path);
- address = g_unix_socket_address_new (socket->priv->path);
- result = g_socket_bind (socket->priv->socket, address, FALSE, error);
+ g_autoptr(GSocketAddress) address = g_unix_socket_address_new (socket->priv->path);
+ gboolean result = g_socket_bind (socket->priv->socket, address, FALSE, error);
if (!result)
return FALSE;
if (!g_socket_listen (socket->priv->socket, error))
diff --git a/src/greeter.c b/src/greeter.c
index 1bbed854..bf725ac3 100644
--- a/src/greeter.c
+++ b/src/greeter.c
@@ -24,7 +24,7 @@ enum {
enum {
CONNECTED,
- DISCONNECTED,
+ DISCONNECTED,
CREATE_SESSION,
START_SESSION,
LAST_SIGNAL
@@ -111,7 +111,7 @@ typedef enum
SERVER_MESSAGE_SHARED_DIR_RESULT,
SERVER_MESSAGE_IDLE,
SERVER_MESSAGE_RESET,
- SERVER_MESSAGE_CONNECTED_V2,
+ SERVER_MESSAGE_CONNECTED_V2,
} ServerMessage;
static gboolean read_cb (GIOChannel *source, GIOCondition condition, gpointer data);
@@ -125,24 +125,25 @@ greeter_new (void)
void
greeter_set_file_descriptors (Greeter *greeter, int to_greeter_fd, int from_greeter_fd)
{
- g_autoptr(GError) to_error = NULL;
- g_autoptr(GError) from_error = NULL;
-
g_return_if_fail (greeter != NULL);
g_return_if_fail (greeter->priv->to_greeter_input < 0);
g_return_if_fail (greeter->priv->from_greeter_output < 0);
- greeter->priv->to_greeter_input = to_greeter_fd;
+ greeter->priv->to_greeter_input = to_greeter_fd;
greeter->priv->to_greeter_channel = g_io_channel_unix_new (greeter->priv->to_greeter_input);
+ g_autoptr(GError) to_error = NULL;
g_io_channel_set_encoding (greeter->priv->to_greeter_channel, NULL, &to_error);
if (to_error)
g_warning ("Failed to set encoding on to greeter channel to binary: %s\n", to_error->message);
+
greeter->priv->from_greeter_output = from_greeter_fd;
greeter->priv->from_greeter_channel = g_io_channel_unix_new (greeter->priv->from_greeter_output);
+ g_autoptr(GError) from_error = NULL;
g_io_channel_set_encoding (greeter->priv->from_greeter_channel, NULL, &from_error);
if (from_error)
g_warning ("Failed to set encoding on from greeter channel to binary: %s\n", from_error->message);
g_io_channel_set_buffered (greeter->priv->from_greeter_channel, FALSE);
+
greeter->priv->from_greeter_watch = g_io_add_watch (greeter->priv->from_greeter_channel, G_IO_IN | G_IO_HUP, read_cb, greeter);
}
@@ -167,7 +168,7 @@ greeter_set_pam_services (Greeter *greeter, const gchar *pam_service, const gcha
void
greeter_set_allow_guest (Greeter *greeter, gboolean allow_guest)
{
- g_return_if_fail (greeter != NULL);
+ g_return_if_fail (greeter != NULL);
greeter->priv->allow_guest = allow_guest;
}
@@ -215,9 +216,7 @@ secure_free (Greeter *greeter, void *ptr)
static void
secure_freev (Greeter *greeter, gchar **v)
{
- int i;
-
- for (i = 0; v[i]; i++)
+ for (int i = 0; v[i]; i++)
secure_free (greeter, v[i]);
g_free (v);
}
@@ -234,17 +233,14 @@ int_length (void)
static void
write_message (Greeter *greeter, guint8 *message, gsize message_length)
{
- gchar *data;
- gsize data_length;
- g_autoptr(GError) error = NULL;
-
- data = (gchar *) message;
- data_length = message_length;
+ gchar *data = (gchar *) message;
+ gsize data_length = message_length;
while (data_length > 0)
{
GIOStatus status;
gsize n_written;
+ g_autoptr(GError) error = NULL;
status = g_io_channel_write_chars (greeter->priv->to_greeter_channel, data, data_length, &n_written, &error);
if (error)
g_warning ("Error writing to greeter: %s", error->message);
@@ -254,6 +250,7 @@ write_message (Greeter *greeter, guint8 *message, gsize message_length)
data += n_written;
}
+ g_autoptr(GError) error = NULL;
g_io_channel_flush (greeter->priv->to_greeter_channel, &error);
if (error)
g_warning ("Failed to flush data to greeter: %s", error->message);
@@ -275,7 +272,6 @@ static void
write_string (guint8 *buffer, gint buffer_length, const gchar *value, gsize *offset)
{
gint length;
-
if (value)
length = strlen (value);
else
@@ -309,21 +305,20 @@ string_length (const gchar *value)
static void
handle_connect (Greeter *greeter, const gchar *version, gboolean resettable, guint32 api_version)
{
- guint8 message[MAX_MESSAGE_LENGTH];
- gsize offset = 0;
- guint32 env_length = 0;
- GHashTableIter iter;
- gpointer key, value;
-
g_debug ("Greeter connected version=%s api=%u resettable=%s", version, api_version, resettable ? "true" : "false");
greeter->priv->api_version = api_version;
greeter->priv->resettable = resettable;
+ guint32 env_length = 0;
+ GHashTableIter iter;
g_hash_table_iter_init (&iter, greeter->priv->hints);
+ gpointer key, value;
while (g_hash_table_iter_next (&iter, &key, &value))
env_length += string_length (key) + string_length (value);
+ guint8 message[MAX_MESSAGE_LENGTH];
+ gsize offset = 0;
if (api_version == 0)
{
write_header (message, MAX_MESSAGE_LENGTH, SERVER_MESSAGE_CONNECTED, string_length (VERSION) + env_length, &offset);
@@ -356,28 +351,23 @@ handle_connect (Greeter *greeter, const gchar *version, gboolean resettable, gui
static void
pam_messages_cb (Session *session, Greeter *greeter)
{
- int i;
- guint32 size;
- guint8 message[MAX_MESSAGE_LENGTH];
- const struct pam_message *messages;
- int messages_length;
- gsize offset = 0;
- int n_prompts = 0;
-
- messages = session_get_messages (session);
- messages_length = session_get_messages_length (session);
+ const struct pam_message *messages = session_get_messages (session);
+ int messages_length = session_get_messages_length (session);
/* Respond to d-bus query with messages */
g_debug ("Prompt greeter with %d message(s)", messages_length);
- size = int_length () + string_length (session_get_username (session)) + int_length ();
- for (i = 0; i < messages_length; i++)
+ guint32 size = int_length () + string_length (session_get_username (session)) + int_length ();
+ for (int i = 0; i < messages_length; i++)
size += int_length () + string_length (messages[i].msg);
+ guint8 message[MAX_MESSAGE_LENGTH];
+ gsize offset = 0;
write_header (message, MAX_MESSAGE_LENGTH, SERVER_MESSAGE_PROMPT_AUTHENTICATION, size, &offset);
write_int (message, MAX_MESSAGE_LENGTH, greeter->priv->authentication_sequence_number, &offset);
write_string (message, MAX_MESSAGE_LENGTH, session_get_username (session), &offset);
write_int (message, MAX_MESSAGE_LENGTH, messages_length, &offset);
- for (i = 0; i < messages_length; i++)
+ int n_prompts = 0;
+ for (int i = 0; i < messages_length; i++)
{
write_int (message, MAX_MESSAGE_LENGTH, messages[i].msg_style, &offset);
write_string (message, MAX_MESSAGE_LENGTH, messages[i].msg, &offset);
@@ -403,7 +393,6 @@ send_end_authentication (Greeter *greeter, guint32 sequence_number, const gchar
{
guint8 message[MAX_MESSAGE_LENGTH];
gsize offset = 0;
-
write_header (message, MAX_MESSAGE_LENGTH, SERVER_MESSAGE_END_AUTHENTICATION, int_length () + string_length (username) + int_length (), &offset);
write_int (message, MAX_MESSAGE_LENGTH, sequence_number, &offset);
write_string (message, MAX_MESSAGE_LENGTH, username, &offset);
@@ -416,7 +405,6 @@ greeter_idle (Greeter *greeter)
{
guint8 message[MAX_MESSAGE_LENGTH];
gsize offset = 0;
-
write_header (message, MAX_MESSAGE_LENGTH, SERVER_MESSAGE_IDLE, 0, &offset);
write_message (greeter, message, offset);
}
@@ -424,18 +412,17 @@ greeter_idle (Greeter *greeter)
void
greeter_reset (Greeter *greeter)
{
- guint8 message[MAX_MESSAGE_LENGTH];
- gsize offset = 0;
- guint32 length = 0;
- GHashTableIter iter;
- gpointer key, value;
-
g_return_if_fail (greeter != NULL);
+ GHashTableIter iter;
g_hash_table_iter_init (&iter, greeter->priv->hints);
+ gpointer key, value;
+ guint32 length = 0;
while (g_hash_table_iter_next (&iter, &key, &value))
length += string_length (key) + string_length (value);
+ guint8 message[MAX_MESSAGE_LENGTH];
+ gsize offset = 0;
write_header (message, MAX_MESSAGE_LENGTH, SERVER_MESSAGE_RESET, length, &offset);
g_hash_table_iter_init (&iter, greeter->priv->hints);
while (g_hash_table_iter_next (&iter, &key, &value))
@@ -449,11 +436,9 @@ greeter_reset (Greeter *greeter)
static void
authentication_complete_cb (Session *session, Greeter *greeter)
{
- int result;
-
g_debug ("Authenticate result for user %s: %s", session_get_username (session), session_get_authentication_result_string (session));
- result = session_get_authentication_result (session);
+ int result = session_get_authentication_result (session);
if (session_get_is_authenticated (session))
{
if (session_get_user (session))
@@ -486,9 +471,6 @@ reset_session (Greeter *greeter)
static void
handle_authenticate (Greeter *greeter, guint32 sequence_number, const gchar *username)
{
- const gchar *autologin_username, *service;
- gboolean is_interactive;
-
if (username[0] == '\0')
{
g_debug ("Greeter start authentication");
@@ -516,7 +498,9 @@ handle_authenticate (Greeter *greeter, guint32 sequence_number, const gchar *use
g_signal_connect (G_OBJECT (greeter->priv->authentication_session), SESSION_SIGNAL_AUTHENTICATION_COMPLETE, G_CALLBACK (authentication_complete_cb), greeter);
/* Use non-interactive service for autologin user */
- autologin_username = g_hash_table_lookup (greeter->priv->hints, "autologin-user");
+ const gchar *autologin_username = g_hash_table_lookup (greeter->priv->hints, "autologin-user");
+ const gchar *service;
+ gboolean is_interactive;
if (autologin_username != NULL && g_strcmp0 (username, autologin_username) == 0)
{
service = greeter->priv->autologin_pam_service;
@@ -557,27 +541,20 @@ handle_authenticate_as_guest (Greeter *greeter, guint32 sequence_number)
static gchar *
get_remote_session_service (const gchar *session_name)
{
- g_autoptr(GKeyFile) session_desktop_file = NULL;
- gboolean result;
- const gchar *c;
- g_autofree gchar *remote_sessions_dir = NULL;
- g_autofree gchar *filename = NULL;
- g_autofree gchar *path = NULL;
- g_autoptr(GError) error = NULL;
-
/* Validate session name doesn't contain directory separators */
- for (c = session_name; *c; c++)
+ for (const gchar *c = session_name; *c; c++)
{
if (*c == '/')
return NULL;
}
/* Load the session file */
- session_desktop_file = g_key_file_new ();
- filename = g_strdup_printf ("%s.desktop", session_name);
- remote_sessions_dir = config_get_string (config_get_instance (), "LightDM", "remote-sessions-directory");
- path = g_build_filename (remote_sessions_dir, filename, NULL);
- result = g_key_file_load_from_file (session_desktop_file, path, G_KEY_FILE_NONE, &error);
+ g_autoptr(GKeyFile) session_desktop_file = g_key_file_new ();
+ g_autofree gchar *filename = g_strdup_printf ("%s.desktop", session_name);
+ g_autofree gchar *remote_sessions_dir = config_get_string (config_get_instance (), "LightDM", "remote-sessions-directory");
+ g_autofree gchar *path = g_build_filename (remote_sessions_dir, filename, NULL);
+ g_autoptr(GError) error = NULL;
+ gboolean result = g_key_file_load_from_file (session_desktop_file, path, G_KEY_FILE_NONE, &error);
if (error)
g_debug ("Failed to load session file %s: %s", path, error->message);
if (!result)
@@ -589,8 +566,6 @@ get_remote_session_service (const gchar *session_name)
static void
handle_authenticate_remote (Greeter *greeter, const gchar *session_name, const gchar *username, guint32 sequence_number)
{
- g_autofree gchar *service = NULL;
-
if (username[0] == '\0')
{
g_debug ("Greeter start authentication for remote session %s", session_name);
@@ -601,7 +576,7 @@ handle_authenticate_remote (Greeter *greeter, const gchar *session_name, const g
reset_session (greeter);
- service = get_remote_session_service (session_name);
+ g_autofree gchar *service = get_remote_session_service (session_name);
if (!service)
{
send_end_authentication (greeter, sequence_number, "", PAM_SYSTEM_ERR);
@@ -635,20 +610,16 @@ handle_authenticate_remote (Greeter *greeter, const gchar *session_name, const g
static void
handle_continue_authentication (Greeter *greeter, gchar **secrets)
{
- int messages_length;
- const struct pam_message *messages;
- struct pam_response *response;
- int i, j, n_prompts = 0;
-
/* Not in authentication */
if (greeter->priv->authentication_session == NULL)
return;
- messages_length = session_get_messages_length (greeter->priv->authentication_session);
- messages = session_get_messages (greeter->priv->authentication_session);
+ int messages_length = session_get_messages_length (greeter->priv->authentication_session);
+ const struct pam_message *messages = session_get_messages (greeter->priv->authentication_session);
/* Check correct number of responses */
- for (i = 0; i < messages_length; i++)
+ int n_prompts = 0;
+ for (int i = 0; i < messages_length; i++)
{
int msg_style = messages[i].msg_style;
if (msg_style == PAM_PROMPT_ECHO_OFF || msg_style == PAM_PROMPT_ECHO_ON)
@@ -663,8 +634,8 @@ handle_continue_authentication (Greeter *greeter, gchar **secrets)
g_debug ("Continue authentication");
/* Build response */
- response = calloc (messages_length, sizeof (struct pam_response));
- for (i = 0, j = 0; i < messages_length; i++)
+ struct pam_response *response = calloc (messages_length, sizeof (struct pam_response));
+ for (int i = 0, j = 0; i < messages_length; i++)
{
int msg_style = messages[i].msg_style;
if (msg_style == PAM_PROMPT_ECHO_OFF || msg_style == PAM_PROMPT_ECHO_ON)
@@ -678,7 +649,7 @@ handle_continue_authentication (Greeter *greeter, gchar **secrets)
session_respond (greeter->priv->authentication_session, response);
- for (i = 0; i < messages_length; i++)
+ for (int i = 0; i < messages_length; i++)
secure_free (greeter, response[i].resp);
free (response);
}
@@ -697,21 +668,18 @@ handle_cancel_authentication (Greeter *greeter)
static void
handle_start_session (Greeter *greeter, const gchar *session)
{
- gboolean result;
- guint8 message[MAX_MESSAGE_LENGTH];
- gsize offset = 0;
- SessionType session_type = SESSION_TYPE_LOCAL;
-
if (strcmp (session, "") == 0)
session = NULL;
/* Use session type chosen in remote session */
+ SessionType session_type = SESSION_TYPE_LOCAL;
if (greeter->priv->remote_session)
{
session_type = SESSION_TYPE_REMOTE;
session = greeter->priv->remote_session;
}
+ gboolean result;
if (greeter->priv->guest_account_authenticated || session_get_is_authenticated (greeter->priv->authentication_session))
{
if (session)
@@ -727,6 +695,8 @@ handle_start_session (Greeter *greeter, const gchar *session)
result = FALSE;
}
+ guint8 message[MAX_MESSAGE_LENGTH];
+ gsize offset = 0;
write_header (message, MAX_MESSAGE_LENGTH, SERVER_MESSAGE_SESSION_RESULT, int_length (), &offset);
write_int (message, MAX_MESSAGE_LENGTH, result ? 0 : 1, &offset);
write_message (greeter, message, offset);
@@ -735,8 +705,6 @@ handle_start_session (Greeter *greeter, const gchar *session)
static void
handle_set_language (Greeter *greeter, const gchar *language)
{
- User *user;
-
if (!greeter->priv->guest_account_authenticated && !session_get_is_authenticated (greeter->priv->authentication_session))
{
g_debug ("Ignoring set language request, user is not authorized");
@@ -751,21 +719,19 @@ handle_set_language (Greeter *greeter, const gchar *language)
}
g_debug ("Greeter sets language %s", language);
- user = session_get_user (greeter->priv->authentication_session);
+ User *user = session_get_user (greeter->priv->authentication_session);
user_set_language (user, language);
}
static void
handle_ensure_shared_dir (Greeter *greeter, const gchar *username)
{
- g_autofree gchar *dir = NULL;
- guint8 message[MAX_MESSAGE_LENGTH];
- gsize offset = 0;
-
g_debug ("Greeter requests data directory for user %s", username);
- dir = shared_data_manager_ensure_user_dir (shared_data_manager_get_instance (), username);
+ g_autofree gchar *dir = shared_data_manager_ensure_user_dir (shared_data_manager_get_instance (), username);
+ guint8 message[MAX_MESSAGE_LENGTH];
+ gsize offset = 0;
write_header (message, MAX_MESSAGE_LENGTH, SERVER_MESSAGE_SHARED_DIR_RESULT, string_length (dir), &offset);
write_string (message, MAX_MESSAGE_LENGTH, dir, &offset);
write_message (greeter, message, offset);
@@ -774,15 +740,13 @@ handle_ensure_shared_dir (Greeter *greeter, const gchar *username)
static guint32
read_int (Greeter *greeter, gsize *offset)
{
- guint32 value;
- guint8 *buffer;
if (greeter->priv->n_read - *offset < sizeof (guint32))
{
g_warning ("Not enough space for int, need %zu, got %zu", sizeof (guint32), greeter->priv->n_read - *offset);
return 0;
}
- buffer = greeter->priv->read_buffer + *offset;
- value = buffer[0] << 24 | buffer[1] << 16 | buffer[2] << 8 | buffer[3];
+ guint8 *buffer = greeter->priv->read_buffer + *offset;
+ guint32 value = buffer[0] << 24 | buffer[1] << 16 | buffer[2] << 8 | buffer[3];
*offset += int_length ();
return value;
}
@@ -808,17 +772,14 @@ get_message_length (Greeter *greeter)
static gchar *
read_string_full (Greeter *greeter, gsize *offset, void* (*alloc_fn)(size_t n))
{
- guint32 length;
- gchar *value;
-
- length = read_int (greeter, offset);
+ guint32 length = read_int (greeter, offset);
if (greeter->priv->n_read - *offset < length)
{
g_warning ("Not enough space for string, need %u, got %zu", length, greeter->priv->n_read - *offset);
return g_strdup ("");
}
- value = (*alloc_fn) (sizeof (gchar) * (length + 1));
+ gchar *value = (*alloc_fn) (sizeof (gchar) * (length + 1));
memcpy (value, greeter->priv->read_buffer + *offset, length);
value[length] = '\0';
*offset += length;
@@ -845,18 +806,6 @@ static gboolean
read_cb (GIOChannel *source, GIOCondition condition, gpointer data)
{
Greeter *greeter = data;
- gsize n_to_read, n_read, offset;
- GIOStatus status;
- int id, length, i;
- guint32 sequence_number, n_secrets, max_secrets;
- g_autofree gchar *version = NULL;
- g_autofree gchar *username = NULL;
- g_autofree gchar *session_name = NULL;
- g_autofree gchar *language = NULL;
- gchar **secrets;
- gboolean resettable = FALSE;
- guint32 api_version = 0;
- g_autoptr(GError) error = NULL;
if (condition == G_IO_HUP)
{
@@ -866,7 +815,7 @@ read_cb (GIOChannel *source, GIOCondition condition, gpointer data)
return FALSE;
}
- n_to_read = HEADER_SIZE;
+ gsize n_to_read = HEADER_SIZE;
if (greeter->priv->n_read >= HEADER_SIZE)
{
n_to_read = get_message_length (greeter);
@@ -877,11 +826,13 @@ read_cb (GIOChannel *source, GIOCondition condition, gpointer data)
}
}
- status = g_io_channel_read_chars (greeter->priv->from_greeter_channel,
- (gchar *) greeter->priv->read_buffer + greeter->priv->n_read,
- n_to_read - greeter->priv->n_read,
- &n_read,
- &error);
+ gsize n_read;
+ g_autoptr(GError) error = NULL;
+ GIOStatus status = g_io_channel_read_chars (greeter->priv->from_greeter_channel,
+ (gchar *) greeter->priv->read_buffer + greeter->priv->n_read,
+ n_to_read - greeter->priv->n_read,
+ &n_read,
+ &error);
if (error)
g_warning ("Error reading from greeter: %s", error->message);
if (status == G_IO_STATUS_EOF)
@@ -910,64 +861,83 @@ read_cb (GIOChannel *source, GIOCondition condition, gpointer data)
}
}
- offset = 0;
- id = read_int (greeter, &offset);
- length = HEADER_SIZE + read_int (greeter, &offset);
+ gsize offset = 0;
+ int id = read_int (greeter, &offset);
+ int length = HEADER_SIZE + read_int (greeter, &offset);
switch (id)
{
case GREETER_MESSAGE_CONNECT:
- version = read_string (greeter, &offset);
- if (offset < length)
- resettable = read_int (greeter, &offset) != 0;
- if (offset < length)
- api_version = read_int (greeter, &offset);
- handle_connect (greeter, version, resettable, api_version);
+ {
+ g_autofree gchar *version = read_string (greeter, &offset);
+ gboolean resettable = FALSE;
+ if (offset < length)
+ resettable = read_int (greeter, &offset) != 0;
+ guint32 api_version = 0;
+ if (offset < length)
+ api_version = read_int (greeter, &offset);
+ handle_connect (greeter, version, resettable, api_version);
+ }
break;
case GREETER_MESSAGE_AUTHENTICATE:
- sequence_number = read_int (greeter, &offset);
- username = read_string (greeter, &offset);
- handle_authenticate (greeter, sequence_number, username);
+ {
+ guint32 sequence_number = read_int (greeter, &offset);
+ g_autofree gchar *username = read_string (greeter, &offset);
+ handle_authenticate (greeter, sequence_number, username);
+ }
break;
case GREETER_MESSAGE_AUTHENTICATE_AS_GUEST:
- sequence_number = read_int (greeter, &offset);
- handle_authenticate_as_guest (greeter, sequence_number);
+ {
+ guint32 sequence_number = read_int (greeter, &offset);
+ handle_authenticate_as_guest (greeter, sequence_number);
+ }
break;
case GREETER_MESSAGE_AUTHENTICATE_REMOTE:
- sequence_number = read_int (greeter, &offset);
- session_name = read_string (greeter, &offset);
- username = read_string (greeter, &offset);
- handle_authenticate_remote (greeter, session_name, username, sequence_number);
+ {
+ guint32 sequence_number = read_int (greeter, &offset);
+ g_autofree gchar *session_name = read_string (greeter, &offset);
+ g_autofree gchar *username = read_string (greeter, &offset);
+ handle_authenticate_remote (greeter, session_name, username, sequence_number);
+ }
break;
case GREETER_MESSAGE_CONTINUE_AUTHENTICATION:
- n_secrets = read_int (greeter, &offset);
- max_secrets = (G_MAXUINT32 - 1) / sizeof (gchar *);
- if (n_secrets > max_secrets)
{
- g_warning ("Array length of %u elements too long", n_secrets);
- greeter->priv->from_greeter_watch = 0;
- return FALSE;
+ guint32 n_secrets = read_int (greeter, &offset);
+ guint32 max_secrets = (G_MAXUINT32 - 1) / sizeof (gchar *);
+ if (n_secrets > max_secrets)
+ {
+ g_warning ("Array length of %u elements too long", n_secrets);
+ greeter->priv->from_greeter_watch = 0;
+ return FALSE;
+ }
+ gchar **secrets = g_malloc (sizeof (gchar *) * (n_secrets + 1));
+ guint32 i;
+ for (i = 0; i < n_secrets; i++)
+ secrets[i] = read_secret (greeter, &offset);
+ secrets[i] = NULL;
+ handle_continue_authentication (greeter, secrets);
+ secure_freev (greeter, secrets);
}
- secrets = g_malloc (sizeof (gchar *) * (n_secrets + 1));
- for (i = 0; i < n_secrets; i++)
- secrets[i] = read_secret (greeter, &offset);
- secrets[i] = NULL;
- handle_continue_authentication (greeter, secrets);
- secure_freev (greeter, secrets);
break;
case GREETER_MESSAGE_CANCEL_AUTHENTICATION:
handle_cancel_authentication (greeter);
break;
case GREETER_MESSAGE_START_SESSION:
- session_name = read_string (greeter, &offset);
- handle_start_session (greeter, session_name);
+ {
+ g_autofree gchar *session_name = read_string (greeter, &offset);
+ handle_start_session (greeter, session_name);
+ }
break;
case GREETER_MESSAGE_SET_LANGUAGE:
- language = read_string (greeter, &offset);
- handle_set_language (greeter, language);
+ {
+ g_autofree gchar *language = read_string (greeter, &offset);
+ handle_set_language (greeter, language);
+ }
break;
case GREETER_MESSAGE_ENSURE_SHARED_DIR:
- username = read_string (greeter, &offset);
- handle_ensure_shared_dir (greeter, username);
+ {
+ g_autofree gchar *username = read_string (greeter, &offset);
+ handle_ensure_shared_dir (greeter, username);
+ }
break;
default:
g_warning ("Unknown message from greeter: %d", id);
@@ -989,11 +959,9 @@ greeter_get_guest_authenticated (Greeter *greeter)
Session *
greeter_take_authentication_session (Greeter *greeter)
{
- Session *session;
-
g_return_val_if_fail (greeter != NULL, NULL);
- session = greeter->priv->authentication_session;
+ Session *session = greeter->priv->authentication_session;
if (greeter->priv->authentication_session)
g_signal_handlers_disconnect_matched (greeter->priv->authentication_session, G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, greeter);
greeter->priv->authentication_session = NULL;
diff --git a/src/greeter.h b/src/greeter.h
index a8ba6c7c..5cba26ef 100644
--- a/src/greeter.h
+++ b/src/greeter.h
@@ -49,6 +49,8 @@ typedef struct
gboolean (*start_session)(Greeter *greeter, SessionType type, const gchar *session);
} GreeterClass;
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (Greeter, g_object_unref)
+
GType greeter_get_type (void);
Greeter *greeter_new (void);
diff --git a/src/guest-account.c b/src/guest-account.c
index 1011ec6a..8cef4d42 100644
--- a/src/guest-account.c
+++ b/src/guest-account.c
@@ -18,13 +18,12 @@
static gchar *
get_setup_script (void)
{
- g_autofree gchar *script = NULL;
static gchar *setup_script = NULL;
if (setup_script)
return setup_script;
- script = config_get_string (config_get_instance (), "LightDM", "guest-account-script");
+ g_autofree gchar *script = config_get_string (config_get_instance (), "LightDM", "guest-account-script");
if (!script)
return NULL;
@@ -44,15 +43,13 @@ run_script (const gchar *script, gchar **stdout_text, gint *exit_status, GError
{
gint argc;
g_auto(GStrv) argv = NULL;
- gboolean result;
-
if (!g_shell_parse_argv (script, &argc, &argv, error))
return FALSE;
- result = g_spawn_sync (NULL, argv, NULL,
- G_SPAWN_SEARCH_PATH,
- NULL, NULL,
- stdout_text, NULL, exit_status, error);
+ gboolean result = g_spawn_sync (NULL, argv, NULL,
+ G_SPAWN_SEARCH_PATH,
+ NULL, NULL,
+ stdout_text, NULL, exit_status, error);
return result;
}
@@ -60,17 +57,12 @@ run_script (const gchar *script, gchar **stdout_text, gint *exit_status, GError
gchar *
guest_account_setup (void)
{
- g_autofree gchar *command = NULL;
+ g_autofree gchar *command = g_strdup_printf ("%s add", get_setup_script ());
+ g_debug ("Opening guest account with command '%s'", command);
g_autofree gchar *stdout_text = NULL;
- g_autofree gchar *username = NULL;
- g_auto(GStrv) lines = NULL;
gint exit_status;
- gboolean result;
g_autoptr(GError) error = NULL;
-
- command = g_strdup_printf ("%s add", get_setup_script ());
- g_debug ("Opening guest account with command '%s'", command);
- result = run_script (command, &stdout_text, &exit_status, &error);
+ gboolean result = run_script (command, &stdout_text, &exit_status, &error);
if (error)
g_warning ("Error running guest account setup script '%s': %s", get_setup_script (), error->message);
if (!result)
@@ -83,7 +75,8 @@ guest_account_setup (void)
}
/* Use the last line and trim whitespace */
- lines = g_strsplit (g_strstrip (stdout_text), "\n", -1);
+ g_auto(GStrv) lines = g_strsplit (g_strstrip (stdout_text), "\n", -1);
+ g_autofree gchar *username = NULL;
if (lines)
username = g_strdup (g_strstrip (lines[g_strv_length (lines) - 1]));
else
@@ -103,15 +96,12 @@ guest_account_setup (void)
void
guest_account_cleanup (const gchar *username)
{
- g_autofree gchar *command = NULL;
- gboolean result;
- gint exit_status;
- g_autoptr(GError) error = NULL;
-
- command = g_strdup_printf ("%s remove %s", get_setup_script (), username);
+ g_autofree gchar *command = g_strdup_printf ("%s remove %s", get_setup_script (), username);
g_debug ("Closing guest account %s with command '%s'", username, command);
- result = run_script (command, NULL, &exit_status, &error);
+ gint exit_status;
+ g_autoptr(GError) error = NULL;
+ gboolean result = run_script (command, NULL, &exit_status, &error);
if (error)
g_warning ("Error running guest account cleanup script '%s': %s", get_setup_script (), error->message);
diff --git a/src/lightdm.c b/src/lightdm.c
index ac46ab3f..c54f1bab 100644
--- a/src/lightdm.c
+++ b/src/lightdm.c
@@ -56,8 +56,6 @@ static void
log_cb (const gchar *log_domain, GLogLevelFlags log_level, const gchar *message, gpointer data)
{
const gchar *prefix;
- g_autofree gchar *text = NULL;
-
switch (log_level & G_LOG_LEVEL_MASK)
{
case G_LOG_LEVEL_ERROR:
@@ -83,13 +81,12 @@ log_cb (const gchar *log_domain, GLogLevelFlags log_level, const gchar *message,
break;
}
- text = g_strdup_printf ("[%+.2fs] %s %s\n", g_timer_elapsed (log_timer, NULL), prefix, message);
+ g_autofree gchar *text = g_strdup_printf ("[%+.2fs] %s %s\n", g_timer_elapsed (log_timer, NULL), prefix, message);
/* Log everything to a file */
if (log_fd >= 0)
{
- ssize_t n_written;
- n_written = write (log_fd, text, strlen (text));
+ ssize_t n_written = write (log_fd, text, strlen (text));
if (n_written < 0)
; /* Check result so compiler doesn't warn about it */
}
@@ -104,17 +101,13 @@ log_cb (const gchar *log_domain, GLogLevelFlags log_level, const gchar *message,
static void
log_init (void)
{
- g_autofree gchar *log_dir = NULL;
- g_autofree gchar *path = NULL;
- gboolean backup_logs;
-
log_timer = g_timer_new ();
/* Log to a file */
- log_dir = config_get_string (config_get_instance (), "LightDM", "log-directory");
- path = g_build_filename (log_dir, "lightdm.log", NULL);
+ g_autofree gchar *log_dir = config_get_string (config_get_instance (), "LightDM", "log-directory");
+ g_autofree gchar *path = g_build_filename (log_dir, "lightdm.log", NULL);
- backup_logs = config_get_boolean (config_get_instance (), "LightDM", "backup-logs");
+ gboolean backup_logs = config_get_boolean (config_get_instance (), "LightDM", "backup-logs");
log_fd = log_file_open (path, backup_logs ? LOG_MODE_BACKUP_AND_TRUNCATE : LOG_MODE_APPEND);
fcntl (log_fd, F_SETFD, FD_CLOEXEC);
g_log_set_default_handler (log_cb, NULL);
@@ -125,15 +118,11 @@ log_init (void)
static GList*
get_config_sections (const gchar *seat_name)
{
- g_auto(GStrv) groups = NULL;
- gchar **i;
- GList *config_sections = NULL;
-
/* Load seat defaults first */
- config_sections = g_list_append (config_sections, g_strdup ("Seat:*"));
+ GList *config_sections = g_list_append (NULL, g_strdup ("Seat:*"));
- groups = config_get_groups (config_get_instance ());
- for (i = groups; *i; i++)
+ g_auto(GStrv) groups = config_get_groups (config_get_instance ());
+ for (gchar **i = groups; *i; i++)
{
if (g_str_has_prefix (*i, "Seat:") && strcmp (*i, "Seat:*") != 0)
{
@@ -149,11 +138,8 @@ get_config_sections (const gchar *seat_name)
static void
set_seat_properties (Seat *seat, const gchar *seat_name)
{
- GList *sections, *link;
- gint i;
-
- sections = get_config_sections (seat_name);
- for (link = sections; link; link = link->next)
+ GList *sections = get_config_sections (seat_name);
+ for (GList *link = sections; link; link = link->next)
{
const gchar *section = link->data;
g_auto(GStrv) keys = NULL;
@@ -161,7 +147,7 @@ set_seat_properties (Seat *seat, const gchar *seat_name)
keys = config_get_keys (config_get_instance (), section);
l_debug (seat, "Loading properties from config section %s", section);
- for (i = 0; keys && keys[i]; i++)
+ for (gint i = 0; keys && keys[i]; i++)
{
g_autofree gchar *value = config_get_string (config_get_instance (), section, keys[i]);
seat_set_property (seat, keys[i], value);
@@ -198,14 +184,12 @@ display_manager_stopped_cb (DisplayManager *display_manager)
static Seat *
create_seat (const gchar *module_name, const gchar *name)
{
- Seat *seat;
-
if (strcmp (module_name, "xlocal") == 0) {
g_warning ("Seat type 'xlocal' is deprecated, use 'type=local' instead");
module_name = "local";
}
- seat = seat_new (module_name);
+ Seat *seat = seat_new (module_name);
if (!seat)
return NULL;
@@ -216,17 +200,14 @@ create_seat (const gchar *module_name, const gchar *name)
static Seat *
service_add_xlocal_seat_cb (DisplayManagerService *service, gint display_number)
{
- g_autoptr(Seat) seat = NULL;
- g_autofree gchar *display_number_string = NULL;
-
g_debug ("Adding local X seat :%d", display_number);
- seat = create_seat ("xremote", "xremote0"); // FIXME: What to use for a name?
+ g_autoptr(Seat) seat = create_seat ("xremote", "xremote0"); // FIXME: What to use for a name?
if (!seat)
return NULL;
set_seat_properties (seat, NULL);
- display_number_string = g_strdup_printf ("%d", display_number);
+ g_autofree gchar *display_number_string = g_strdup_printf ("%d", display_number);
seat_set_property (seat, "xserver-display-number", display_number_string);
if (!display_manager_add_seat (display_manager, seat))
@@ -238,16 +219,12 @@ service_add_xlocal_seat_cb (DisplayManagerService *service, gint display_number)
static void
display_manager_seat_removed_cb (DisplayManager *display_manager, Seat *seat)
{
- g_auto(GStrv) types = NULL;
- gchar **iter;
- g_autoptr(Seat) next_seat = NULL;
- g_autoptr(GString) next_types = NULL;
-
/* If we have fallback types registered for the seat, let's try them
before giving up. */
- types = seat_get_string_list_property (seat, "type");
- next_types = g_string_new ("");
- for (iter = types; iter && *iter; iter++)
+ g_auto(GStrv) types = seat_get_string_list_property (seat, "type");
+ g_autoptr(GString) next_types = g_string_new ("");
+ g_autoptr(Seat) next_seat = NULL;
+ for (gchar **iter = types; iter && *iter; iter++)
{
if (iter == types)
continue; // skip first one, that is our current seat type
@@ -288,12 +265,9 @@ display_manager_seat_removed_cb (DisplayManager *display_manager, Seat *seat)
static gboolean
xdmcp_session_cb (XDMCPServer *server, XDMCPSession *session)
{
- g_autoptr(SeatXDMCPSession) seat = NULL;
- g_autofree gchar *name = NULL;
-
- seat = seat_xdmcp_session_new (session);
+ g_autoptr(SeatXDMCPSession) seat = seat_xdmcp_session_new (session);
- name = g_strdup_printf ("xdmcp%d", xdmcp_client_count);
+ g_autofree gchar *name = g_strdup_printf ("xdmcp%d", xdmcp_client_count);
xdmcp_client_count++;
seat_set_name (SEAT (seat), name);
@@ -304,12 +278,9 @@ xdmcp_session_cb (XDMCPServer *server, XDMCPSession *session)
static void
vnc_connection_cb (VNCServer *server, GSocket *connection)
{
- g_autoptr(SeatXVNC) seat = NULL;
- g_autofree gchar *name = NULL;
+ g_autoptr(SeatXVNC) seat = seat_xvnc_new (connection);
- seat = seat_xvnc_new (connection);
-
- name = g_strdup_printf ("vnc%d", vnc_client_count);
+ g_autofree gchar *name = g_strdup_printf ("vnc%d", vnc_client_count);
vnc_client_count++;
seat_set_name (SEAT (seat), name);
@@ -325,11 +296,6 @@ start_display_manager (void)
/* Start the XDMCP server */
if (config_get_boolean (config_get_instance (), "XDMCPServer", "enabled"))
{
- g_autofree gchar *hostname = NULL;
- g_autofree gchar *key_name = NULL;
- g_autofree gchar *key = NULL;
- g_autofree gchar *listen_address = NULL;
-
xdmcp_server = xdmcp_server_new ();
if (config_has_key (config_get_instance (), "XDMCPServer", "port"))
{
@@ -338,24 +304,21 @@ start_display_manager (void)
if (port > 0)
xdmcp_server_set_port (xdmcp_server, port);
}
- listen_address = config_get_string (config_get_instance (), "XDMCPServer", "listen-address");
+ g_autofree gchar *listen_address = config_get_string (config_get_instance (), "XDMCPServer", "listen-address");
xdmcp_server_set_listen_address (xdmcp_server, listen_address);
- hostname = config_get_string (config_get_instance (), "XDMCPServer", "hostname");
+ g_autofree gchar *hostname = config_get_string (config_get_instance (), "XDMCPServer", "hostname");
xdmcp_server_set_hostname (xdmcp_server, hostname);
g_signal_connect (xdmcp_server, XDMCP_SERVER_SIGNAL_NEW_SESSION, G_CALLBACK (xdmcp_session_cb), NULL);
- key_name = config_get_string (config_get_instance (), "XDMCPServer", "key");
+ g_autofree gchar *key_name = config_get_string (config_get_instance (), "XDMCPServer", "key");
+ g_autofree gchar *key = NULL;
if (key_name)
{
- g_autofree gchar *path = NULL;
- g_autoptr(GKeyFile) keys = NULL;
- gboolean result;
- g_autoptr(GError) error = NULL;
-
- path = g_build_filename (config_get_directory (config_get_instance ()), "keys.conf", NULL);
+ g_autofree gchar *path = g_build_filename (config_get_directory (config_get_instance ()), "keys.conf", NULL);
- keys = g_key_file_new ();
- result = g_key_file_load_from_file (keys, path, G_KEY_FILE_NONE, &error);
+ g_autoptr(GKeyFile) keys = g_key_file_new ();
+ g_autoptr(GError) error = NULL;
+ gboolean result = g_key_file_load_from_file (keys, path, G_KEY_FILE_NONE, &error);
if (error)
g_warning ("Unable to load keys from %s: %s", path, error->message);
@@ -369,7 +332,7 @@ start_display_manager (void)
}
if (key)
xdmcp_server_set_key (xdmcp_server, key);
-
+
if (key_name && !key)
{
exit_code = EXIT_FAILURE;
@@ -386,22 +349,17 @@ start_display_manager (void)
/* Start the VNC server */
if (config_get_boolean (config_get_instance (), "VNCServer", "enabled"))
{
- g_autofree gchar *path = NULL;
-
- path = g_find_program_in_path ("Xvnc");
+ g_autofree gchar *path = g_find_program_in_path ("Xvnc");
if (path)
{
- g_autofree gchar *listen_address = NULL;
-
vnc_server = vnc_server_new ();
if (config_has_key (config_get_instance (), "VNCServer", "port"))
{
- gint port;
- port = config_get_integer (config_get_instance (), "VNCServer", "port");
+ gint port = config_get_integer (config_get_instance (), "VNCServer", "port");
if (port > 0)
vnc_server_set_port (vnc_server, port);
}
- listen_address = config_get_string (config_get_instance (), "VNCServer", "listen-address");
+ g_autofree gchar *listen_address = config_get_string (config_get_instance (), "VNCServer", "listen-address");
vnc_server_set_listen_address (vnc_server, listen_address);
g_signal_connect (vnc_server, VNC_SERVER_SIGNAL_NEW_CONNECTION, G_CALLBACK (vnc_connection_cb), NULL);
@@ -428,17 +386,12 @@ static gboolean
add_login1_seat (Login1Seat *login1_seat)
{
const gchar *seat_name = login1_seat_get_id (login1_seat);
- g_auto(GStrv) types = NULL;
- gchar **type;
- GList *config_sections = NULL, *link;
- g_autoptr(Seat) seat = NULL;
- gboolean is_seat0, started = FALSE;
-
g_debug ("New seat added from logind: %s", seat_name);
- is_seat0 = strcmp (seat_name, "seat0") == 0;
+ gboolean is_seat0 = strcmp (seat_name, "seat0") == 0;
- config_sections = get_config_sections (seat_name);
- for (link = g_list_last (config_sections); link; link = link->prev)
+ GList *config_sections = get_config_sections (seat_name);
+ g_auto(GStrv) types = NULL;
+ for (GList *link = g_list_last (config_sections); link; link = link->prev)
{
gchar *config_section = link->data;
types = config_get_string_list (config_get_instance (), config_section, "type");
@@ -447,7 +400,8 @@ add_login1_seat (Login1Seat *login1_seat)
}
g_list_free_full (config_sections, g_free);
- for (type = types; !seat && type && *type; type++)
+ g_autoptr(Seat) seat = NULL;
+ for (gchar **type = types; !seat && type && *type; type++)
seat = create_seat (*type, seat_name);
if (seat)
@@ -470,7 +424,7 @@ add_login1_seat (Login1Seat *login1_seat)
return FALSE;
}
- started = display_manager_add_seat (display_manager, seat);
+ gboolean started = display_manager_add_seat (display_manager, seat);
if (!started)
g_debug ("Failed to start seat: %s", seat_name);
@@ -480,9 +434,7 @@ add_login1_seat (Login1Seat *login1_seat)
static void
remove_login1_seat (Login1Seat *login1_seat)
{
- Seat *seat;
-
- seat = display_manager_get_seat (display_manager, login1_seat_get_id (login1_seat));
+ Seat *seat = display_manager_get_seat (display_manager, login1_seat_get_id (login1_seat));
if (seat)
seat_stop (seat);
}
@@ -500,10 +452,8 @@ update_login1_seat (Login1Seat *login1_seat)
if (!config_get_boolean (config_get_instance (), "LightDM", "logind-check-graphical") ||
login1_seat_get_can_graphical (login1_seat))
{
- Seat *seat;
-
/* Wait for existing seat to stop or ignore if we already have a valid seat */
- seat = display_manager_get_seat (display_manager, login1_seat_get_id (login1_seat));
+ Seat *seat = display_manager_get_seat (display_manager, login1_seat_get_id (login1_seat));
if (seat)
{
if (seat_get_is_stopping (seat))
@@ -532,14 +482,10 @@ login1_active_session_changed_cb (Login1Seat *login1_seat, const gchar *login1_s
{
g_debug ("Seat %s changes active session to %s", login1_seat_get_id (login1_seat), login1_session_id);
- Seat *seat;
- seat = display_manager_get_seat (display_manager, login1_seat_get_id (login1_seat));
-
+ Seat *seat = display_manager_get_seat (display_manager, login1_seat_get_id (login1_seat));
if (seat)
{
- Session *active_session;
-
- active_session = seat_get_expected_active_session (seat);
+ Session *active_session = seat_get_expected_active_session (seat);
if (active_session != NULL &&
g_strcmp0 (login1_session_id, session_get_login1_session_id (active_session)) == 0)
{
@@ -593,21 +539,39 @@ login1_service_seat_removed_cb (Login1Service *service, Login1Seat *login1_seat)
int
main (int argc, char **argv)
{
+ /* Disable the SIGPIPE handler - this is a stupid Unix hangover behaviour.
+ * We will handle pipes / sockets being closed instead of having the whole daemon be killed...
+ * http://stackoverflow.com/questions/8369506/why-does-sigpipe-exist
+ * Similar case for SIGHUP.
+ */
struct sigaction action;
- FILE *pid_file;
- GOptionContext *option_context;
- gboolean result;
- gchar *dir;
+ action.sa_handler = SIG_IGN;
+ sigemptyset (&action.sa_mask);
+ action.sa_flags = SA_RESTART;
+ sigaction (SIGPIPE, &action, NULL);
+ sigaction (SIGHUP, &action, NULL);
+
+ /* When lightdm starts sessions it needs to run itself in a new mode */
+ if (argc >= 2 && strcmp (argv[1], "--session-child") == 0)
+ return session_child_run (argc, argv);
+
+#if !defined(GLIB_VERSION_2_36)
+ g_type_init ();
+#endif
+ loop = g_main_loop_new (NULL, FALSE);
+
+ GList *messages = g_list_append (NULL, g_strdup_printf ("Starting Light Display Manager %s, UID=%i PID=%i", VERSION, getuid (), getpid ()));
+
+ g_signal_connect (process_get_current (), PROCESS_SIGNAL_GOT_SIGNAL, G_CALLBACK (signal_cb), NULL);
+
+ g_autoptr(GOptionContext) option_context = g_option_context_new (/* Arguments and description for --help test */
+ _("- Display Manager"));
gboolean test_mode = FALSE;
gchar *pid_path = "/var/run/lightdm.pid";
gchar *log_dir = NULL;
gchar *run_dir = NULL;
gchar *cache_dir = NULL;
- gchar *default_log_dir = g_strdup (LOG_DIR);
- gchar *default_run_dir = g_strdup (RUN_DIR);
- gchar *default_cache_dir = g_strdup (CACHE_DIR);
gboolean show_config = FALSE, show_version = FALSE;
- GList *link, *messages = NULL;
GOptionEntry options[] =
{
{ "config", 'c', 0, G_OPTION_ARG_STRING, &config_path,
@@ -639,39 +603,11 @@ main (int argc, char **argv)
N_("Show release version"), NULL },
{ NULL }
};
- g_autoptr(GError) error = NULL;
-
- /* Disable the SIGPIPE handler - this is a stupid Unix hangover behaviour.
- * We will handle pipes / sockets being closed instead of having the whole daemon be killed...
- * http://stackoverflow.com/questions/8369506/why-does-sigpipe-exist
- * Similar case for SIGHUP.
- */
- action.sa_handler = SIG_IGN;
- sigemptyset (&action.sa_mask);
- action.sa_flags = SA_RESTART;
- sigaction (SIGPIPE, &action, NULL);
- sigaction (SIGHUP, &action, NULL);
-
- /* When lightdm starts sessions it needs to run itself in a new mode */
- if (argc >= 2 && strcmp (argv[1], "--session-child") == 0)
- return session_child_run (argc, argv);
-
-#if !defined(GLIB_VERSION_2_36)
- g_type_init ();
-#endif
- loop = g_main_loop_new (NULL, FALSE);
-
- messages = g_list_append (messages, g_strdup_printf ("Starting Light Display Manager %s, UID=%i PID=%i", VERSION, getuid (), getpid ()));
-
- g_signal_connect (process_get_current (), PROCESS_SIGNAL_GOT_SIGNAL, G_CALLBACK (signal_cb), NULL);
-
- option_context = g_option_context_new (/* Arguments and description for --help test */
- _("- Display Manager"));
g_option_context_add_main_entries (option_context, options, GETTEXT_PACKAGE);
- result = g_option_context_parse (option_context, &argc, &argv, &error);
+ g_autoptr(GError) error = NULL;
+ gboolean result = g_option_context_parse (option_context, &argc, &argv, &error);
if (error)
g_printerr ("%s\n", error->message);
- g_option_context_free (option_context);
if (!result)
{
g_printerr (/* Text printed out when an unknown command-line argument provided */
@@ -683,24 +619,18 @@ main (int argc, char **argv)
/* Show combined configuration if user requested it */
if (show_config)
{
- GList *sources, *link;
- g_auto(GStrv) groups = NULL;
- gchar *last_source, *empty_source;
- GHashTable *source_ids;
- int i;
-
if (!config_load_from_standard_locations (config_get_instance (), config_path, NULL))
return EXIT_FAILURE;
/* Number sources */
- sources = config_get_sources (config_get_instance ());
- source_ids = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free);
- last_source = "";
- for (i = 0, link = sources; link; i++, link = link->next)
+ GList *sources = config_get_sources (config_get_instance ());
+ g_autoptr(GHashTable) source_ids = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free);
+ const gchar *last_source = "";
+ int i = 0;
+ for (GList *link = sources; link; i++, link = link->next)
{
- gchar *path, *id;
-
- path = link->data;
+ const gchar *path = link->data;
+ gchar *id;
if (i < 26)
id = g_strdup_printf ("%c", 'A' + i);
else
@@ -708,23 +638,20 @@ main (int argc, char **argv)
g_hash_table_insert (source_ids, g_strdup (path), id);
last_source = id;
}
- empty_source = g_strdup (last_source);
+ g_autofree gchar *empty_source = g_strdup (last_source);
for (i = 0; empty_source[i] != '\0'; i++)
empty_source[i] = ' ';
/* Print out keys */
- groups = config_get_groups (config_get_instance ());
+ g_auto(GStrv) groups = config_get_groups (config_get_instance ());
for (i = 0; groups[i]; i++)
{
- g_auto(GStrv) keys = NULL;
- int j;
-
if (i != 0)
g_printerr ("\n");
g_printerr ("%s [%s]\n", empty_source, groups[i]);
- keys = config_get_keys (config_get_instance (), groups[i]);
- for (j = 0; keys && keys[j]; j++)
+ g_auto(GStrv) keys = config_get_keys (config_get_instance (), groups[i]);
+ for (int j = 0; keys && keys[j]; j++)
{
const gchar *source, *id;
g_autofree gchar *value = NULL;
@@ -740,17 +667,13 @@ main (int argc, char **argv)
/* Show mapping from source number to path */
g_printerr ("\n");
g_printerr ("Sources:\n");
- for (link = sources; link; link = link->next)
+ for (GList *link = sources; link; link = link->next)
{
const gchar *path = link->data;
- const gchar *source;
-
- source = g_hash_table_lookup (source_ids, path);
+ const gchar *source = g_hash_table_lookup (source_ids, path);
g_printerr ("%s %s\n", source, path);
}
- g_hash_table_destroy (source_ids);
-
return EXIT_SUCCESS;
}
@@ -770,9 +693,7 @@ main (int argc, char **argv)
/* If running inside an X server use Xephyr for display */
if (getenv ("DISPLAY") && getuid () != 0)
{
- g_autofree gchar *x_server_path = NULL;
-
- x_server_path = g_find_program_in_path ("Xephyr");
+ g_autofree gchar *x_server_path = g_find_program_in_path ("Xephyr");
if (!x_server_path)
{
g_printerr ("Running inside an X server requires Xephyr to be installed but it cannot be found. Please install it or update your PATH environment variable.\n");
@@ -785,7 +706,6 @@ main (int argc, char **argv)
{
const gchar *path = g_getenv ("PATH");
g_autofree gchar *new_path = NULL;
-
if (path)
new_path = g_strdup_printf ("%s:%s", path, SBIN_DIR);
else
@@ -794,7 +714,7 @@ main (int argc, char **argv)
}
/* Write PID file */
- pid_file = fopen (pid_path, "w");
+ FILE *pid_file = fopen (pid_path, "w");
if (pid_file)
{
fprintf (pid_file, "%d\n", getpid ());
@@ -802,15 +722,21 @@ main (int argc, char **argv)
}
/* If not running as root write output to directories we control */
+ g_autofree gchar *default_log_dir = NULL;
+ g_autofree gchar *default_run_dir = NULL;
+ g_autofree gchar *default_cache_dir = NULL;
if (getuid () != 0)
{
- g_free (default_log_dir);
default_log_dir = g_build_filename (g_get_user_cache_dir (), "lightdm", "log", NULL);
- g_free (default_run_dir);
default_run_dir = g_build_filename (g_get_user_cache_dir (), "lightdm", "run", NULL);
- g_free (default_cache_dir);
default_cache_dir = g_build_filename (g_get_user_cache_dir (), "lightdm", "cache", NULL);
}
+ else
+ {
+ default_log_dir = g_strdup (LOG_DIR);
+ default_run_dir = g_strdup (RUN_DIR);
+ default_cache_dir = g_strdup (CACHE_DIR);
+ }
/* Load config file(s) */
if (!config_load_from_standard_locations (config_get_instance (), config_path, &messages))
@@ -866,32 +792,24 @@ main (int argc, char **argv)
config_set_string (config_get_instance (), "Seat:*", "session-wrapper", "lightdm-session");
if (!config_has_key (config_get_instance (), "LightDM", "log-directory"))
config_set_string (config_get_instance (), "LightDM", "log-directory", default_log_dir);
- g_free (default_log_dir);
if (!config_has_key (config_get_instance (), "LightDM", "run-directory"))
config_set_string (config_get_instance (), "LightDM", "run-directory", default_run_dir);
- g_free (default_run_dir);
if (!config_has_key (config_get_instance (), "LightDM", "cache-directory"))
config_set_string (config_get_instance (), "LightDM", "cache-directory", default_cache_dir);
- g_free (default_cache_dir);
if (!config_has_key (config_get_instance (), "LightDM", "sessions-directory"))
config_set_string (config_get_instance (), "LightDM", "sessions-directory", SESSIONS_DIR);
if (!config_has_key (config_get_instance (), "LightDM", "remote-sessions-directory"))
config_set_string (config_get_instance (), "LightDM", "remote-sessions-directory", REMOTE_SESSIONS_DIR);
if (!config_has_key (config_get_instance (), "LightDM", "greeters-directory"))
{
- g_autoptr(GPtrArray) dirs = NULL;
- const gchar * const *data_dirs;
- g_autofree gchar *value = NULL;
- int i;
-
- dirs = g_ptr_array_new_with_free_func (g_free);
- data_dirs = g_get_system_data_dirs ();
- for (i = 0; data_dirs[i]; i++)
+ g_autoptr(GPtrArray) dirs = g_ptr_array_new_with_free_func (g_free);
+ const gchar * const *data_dirs = g_get_system_data_dirs ();
+ for (int i = 0; data_dirs[i]; i++)
g_ptr_array_add (dirs, g_build_filename (data_dirs[i], "lightdm/greeters", NULL));
- for (i = 0; data_dirs[i]; i++)
+ for (int i = 0; data_dirs[i]; i++)
g_ptr_array_add (dirs, g_build_filename (data_dirs[i], "xgreeters", NULL));
g_ptr_array_add (dirs, NULL);
- value = g_strjoinv (":", (gchar **) dirs->pdata);
+ g_autofree gchar *value = g_strjoinv (":", (gchar **) dirs->pdata);
config_set_string (config_get_instance (), "LightDM", "greeters-directory", value);
}
if (!config_has_key (config_get_instance (), "XDMCPServer", "hostname"))
@@ -909,23 +827,20 @@ main (int argc, char **argv)
g_free (cache_dir);
/* Create run and cache directories */
- dir = config_get_string (config_get_instance (), "LightDM", "log-directory");
- if (g_mkdir_with_parents (dir, S_IRWXU | S_IXGRP | S_IXOTH) < 0)
- g_warning ("Failed to make log directory %s: %s", dir, strerror (errno));
- g_free (dir);
- dir = config_get_string (config_get_instance (), "LightDM", "run-directory");
- if (g_mkdir_with_parents (dir, S_IRWXU | S_IXGRP | S_IXOTH) < 0)
- g_warning ("Failed to make run directory %s: %s", dir, strerror (errno));
- g_free (dir);
- dir = config_get_string (config_get_instance (), "LightDM", "cache-directory");
- if (g_mkdir_with_parents (dir, S_IRWXU | S_IXGRP | S_IXOTH) < 0)
- g_warning ("Failed to make cache directory %s: %s", dir, strerror (errno));
- g_free (dir);
+ g_autofree gchar *log_dir_path = config_get_string (config_get_instance (), "LightDM", "log-directory");
+ if (g_mkdir_with_parents (log_dir_path, S_IRWXU | S_IXGRP | S_IXOTH) < 0)
+ g_warning ("Failed to make log directory %s: %s", log_dir_path, strerror (errno));
+ g_autofree gchar *run_dir_path = config_get_string (config_get_instance (), "LightDM", "run-directory");
+ if (g_mkdir_with_parents (run_dir_path, S_IRWXU | S_IXGRP | S_IXOTH) < 0)
+ g_warning ("Failed to make run directory %s: %s", run_dir_path, strerror (errno));
+ g_autofree gchar *cache_dir_path = config_get_string (config_get_instance (), "LightDM", "cache-directory");
+ if (g_mkdir_with_parents (cache_dir_path, S_IRWXU | S_IXGRP | S_IXOTH) < 0)
+ g_warning ("Failed to make cache directory %s: %s", cache_dir_path, strerror (errno));
log_init ();
/* Show queued messages once logging is complete */
- for (link = messages; link; link = link->next)
+ for (GList *link = messages; link; link = link->next)
g_debug ("%s", (gchar *)link->data);
g_list_free_full (messages, g_free);
@@ -962,7 +877,7 @@ main (int argc, char **argv)
g_signal_connect (login1_service_get_instance (), LOGIN1_SERVICE_SIGNAL_SEAT_ADDED, G_CALLBACK (login1_service_seat_added_cb), NULL);
g_signal_connect (login1_service_get_instance (), LOGIN1_SERVICE_SIGNAL_SEAT_REMOVED, G_CALLBACK (login1_service_seat_removed_cb), NULL);
- for (link = login1_service_get_seats (login1_service_get_instance ()); link; link = link->next)
+ for (GList *link = login1_service_get_seats (login1_service_get_instance ()); link; link = link->next)
{
Login1Seat *login1_seat = link->data;
if (!login1_add_seat (login1_seat))
@@ -974,14 +889,11 @@ main (int argc, char **argv)
{
if (config_get_boolean (config_get_instance (), "LightDM", "start-default-seat"))
{
- g_auto(GStrv) types = NULL;
- gchar **type;
- g_autoptr(Seat) seat = NULL;
-
g_debug ("Adding default seat");
- types = config_get_string_list (config_get_instance (), "Seat:*", "type");
- for (type = types; type && *type; type++)
+ g_auto(GStrv) types = config_get_string_list (config_get_instance (), "Seat:*", "type");
+ g_autoptr(Seat) seat = NULL;
+ for (gchar **type = types; type && *type; type++)
{
seat = create_seat (*type, "seat0");
if (seat)
diff --git a/src/log-file.c b/src/log-file.c
index edf5ac85..6a04e059 100644
--- a/src/log-file.c
+++ b/src/log-file.c
@@ -19,8 +19,6 @@ int
log_file_open (const gchar *log_filename, LogMode log_mode)
{
int open_flags = O_WRONLY | O_CREAT;
- int log_fd;
-
if (log_mode == LOG_MODE_BACKUP_AND_TRUNCATE)
{
/* Move old file out of the way */
@@ -44,7 +42,7 @@ log_file_open (const gchar *log_filename, LogMode log_mode)
}
/* Open file and log to it */
- log_fd = open (log_filename, open_flags, 0600);
+ int log_fd = open (log_filename, open_flags, 0600);
if (log_fd < 0)
g_warning ("Failed to open log file %s: %s", log_filename, g_strerror (errno));
diff --git a/src/logger.c b/src/logger.c
index 839882a6..c5eb4a7c 100644
--- a/src/logger.c
+++ b/src/logger.c
@@ -28,11 +28,8 @@ logger_logv (Logger *self, GLogLevelFlags log_level, const gchar *format, va_lis
void
logger_logv_default (Logger *self, GLogLevelFlags log_level, const gchar *format, va_list ap)
{
- va_list ap_copy;
- gint tmp;
-
/* figure out how long the prefix is */
- tmp = logger_logprefix (self, NULL, 0);
+ gint tmp = logger_logprefix (self, NULL, 0);
if (tmp < 0)
{
g_error ("failed to get log prefix");
@@ -49,6 +46,7 @@ logger_logv_default (Logger *self, GLogLevelFlags log_level, const gchar *format
}
/* figure out how long the formatted message is */
+ va_list ap_copy;
va_copy (ap_copy, ap);
tmp = g_vsnprintf (NULL, 0, format, ap_copy);
va_end (ap_copy);
diff --git a/src/login1.c b/src/login1.c
index ef690cec..d00031e4 100644
--- a/src/login1.c
+++ b/src/login1.c
@@ -110,31 +110,31 @@ seat_properties_changed_cb (GDBusConnection *connection,
gpointer user_data)
{
Login1Seat *seat = user_data;
+
GVariantIter *iter;
GVariantIter *invalidated_properties;
+ g_variant_get (parameters, "(sa{sv}as)", NULL, &iter, &invalidated_properties);
+
const gchar *name;
GVariant *value;
-
- g_variant_get (parameters, "(sa{sv}as)", NULL, &iter, &invalidated_properties);
while (g_variant_iter_loop (iter, "{&sv}", &name, &value))
update_property (seat, name, value);
g_variant_iter_free (iter);
+
while (g_variant_iter_loop (invalidated_properties, "&s", &name))
{
- g_autoptr(GVariant) result = NULL;
g_autoptr(GError) error = NULL;
-
- result = g_dbus_connection_call_sync (connection,
- LOGIN1_SERVICE_NAME,
- seat->priv->path,
- "org.freedesktop.DBus.Properties",
- "Get",
- g_variant_new ("(ss)", "org.freedesktop.login1.Seat", name),
- G_VARIANT_TYPE ("(v)"),
- G_DBUS_CALL_FLAGS_NONE,
- -1,
- NULL,
- &error);
+ g_autoptr(GVariant) result = g_dbus_connection_call_sync (connection,
+ LOGIN1_SERVICE_NAME,
+ seat->priv->path,
+ "org.freedesktop.DBus.Properties",
+ "Get",
+ g_variant_new ("(ss)", "org.freedesktop.login1.Seat", name),
+ G_VARIANT_TYPE ("(v)"),
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ NULL,
+ &error);
if (error)
g_warning ("Error updating seat property %s: %s", name, error->message);
if (result)
@@ -150,11 +150,7 @@ seat_properties_changed_cb (GDBusConnection *connection,
static Login1Seat *
add_seat (Login1Service *service, const gchar *id, const gchar *path)
{
- Login1Seat *seat;
- g_autoptr(GVariant) result = NULL;
- g_autoptr(GError) error = NULL;
-
- seat = g_object_new (LOGIN1_SEAT_TYPE, NULL);
+ Login1Seat *seat = g_object_new (LOGIN1_SEAT_TYPE, NULL);
seat->priv->connection = g_object_ref (service->priv->connection);
seat->priv->id = g_strdup (id);
seat->priv->path = g_strdup (path);
@@ -171,26 +167,27 @@ add_seat (Login1Service *service, const gchar *id, const gchar *path)
g_object_unref);
/* Get properties for this seat */
- result = g_dbus_connection_call_sync (seat->priv->connection,
- LOGIN1_SERVICE_NAME,
- path,
- "org.freedesktop.DBus.Properties",
- "GetAll",
- g_variant_new ("(s)", "org.freedesktop.login1.Seat"),
- G_VARIANT_TYPE ("(a{sv})"),
- G_DBUS_CALL_FLAGS_NONE,
- -1,
- NULL,
- &error);
+ g_autoptr(GError) error = NULL;
+ g_autoptr(GVariant) result = g_dbus_connection_call_sync (seat->priv->connection,
+ LOGIN1_SERVICE_NAME,
+ path,
+ "org.freedesktop.DBus.Properties",
+ "GetAll",
+ g_variant_new ("(s)", "org.freedesktop.login1.Seat"),
+ G_VARIANT_TYPE ("(a{sv})"),
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ NULL,
+ &error);
if (error)
g_warning ("Failed to get seat properties: %s", error->message);
if (result)
{
GVariantIter *properties;
+ g_variant_get (result, "(a{sv})", &properties);
+
const gchar *name;
GVariant *value;
-
- g_variant_get (result, "(a{sv})", &properties);
while (g_variant_iter_loop (properties, "{&sv}", &name, &value))
{
if (strcmp (name, "CanGraphical") == 0 && g_variant_is_of_type (value, G_VARIANT_TYPE_BOOLEAN))
@@ -220,10 +217,9 @@ signal_cb (GDBusConnection *connection,
if (strcmp (signal_name, "SeatNew") == 0)
{
const gchar *id, *path;
- Login1Seat *seat;
-
g_variant_get (parameters, "(&s&o)", &id, &path);
- seat = login1_service_get_seat (service, id);
+
+ Login1Seat *seat = login1_service_get_seat (service, id);
if (!seat)
{
seat = add_seat (service, id, path);
@@ -233,10 +229,9 @@ signal_cb (GDBusConnection *connection,
else if (strcmp (signal_name, "SeatRemoved") == 0)
{
const gchar *id, *path;
- g_autoptr(Login1Seat) seat = NULL;
-
g_variant_get (parameters, "(&s&o)", &id, &path);
- seat = login1_service_get_seat (service, id);
+
+ g_autoptr(Login1Seat) seat = login1_service_get_seat (service, id);
if (seat)
{
service->priv->seats = g_list_remove (service->priv->seats, seat);
@@ -248,16 +243,12 @@ signal_cb (GDBusConnection *connection,
gboolean
login1_service_connect (Login1Service *service)
{
- g_autoptr(GVariant) result = NULL;
- GVariantIter *seat_iter;
- const gchar *id, *path;
- g_autoptr(GError) error = NULL;
-
g_return_val_if_fail (service != NULL, FALSE);
if (service->priv->connected)
return TRUE;
+ g_autoptr(GError) error = NULL;
service->priv->connection = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, &error);
if (error)
g_warning ("Failed to get system bus: %s", error->message);
@@ -275,23 +266,26 @@ login1_service_connect (Login1Service *service)
g_object_ref (service),
g_object_unref);
- result = g_dbus_connection_call_sync (service->priv->connection,
- LOGIN1_SERVICE_NAME,
- LOGIN1_OBJECT_NAME,
- LOGIN1_MANAGER_INTERFACE_NAME,
- "ListSeats",
- g_variant_new ("()"),
- G_VARIANT_TYPE ("(a(so))"),
- G_DBUS_CALL_FLAGS_NONE,
- -1,
- NULL,
- &error);
+ g_autoptr(GVariant) result = g_dbus_connection_call_sync (service->priv->connection,
+ LOGIN1_SERVICE_NAME,
+ LOGIN1_OBJECT_NAME,
+ LOGIN1_MANAGER_INTERFACE_NAME,
+ "ListSeats",
+ g_variant_new ("()"),
+ G_VARIANT_TYPE ("(a(so))"),
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ NULL,
+ &error);
if (error)
g_warning ("Failed to get list of logind seats: %s", error->message);
if (!result)
return FALSE;
+ GVariantIter *seat_iter;
g_variant_get (result, "(a(so))", &seat_iter);
+
+ const gchar *id, *path;
while (g_variant_iter_loop (seat_iter, "(&s&o)", &id, &path))
add_seat (service, id, path);
g_variant_iter_free (seat_iter);
@@ -318,11 +312,9 @@ login1_service_get_seats (Login1Service *service)
Login1Seat *
login1_service_get_seat (Login1Service *service, const gchar *id)
{
- GList *link;
-
g_return_val_if_fail (service != NULL, NULL);
- for (link = service->priv->seats; link; link = link->next)
+ for (GList *link = service->priv->seats; link; link = link->next)
{
Login1Seat *seat = link->data;
if (strcmp (seat->priv->id, id) == 0)
@@ -335,9 +327,6 @@ login1_service_get_seat (Login1Service *service, const gchar *id)
void
login1_service_lock_session (Login1Service *service, const gchar *session_id)
{
- g_autoptr(GVariant) result = NULL;
- g_autoptr(GError) error = NULL;
-
g_return_if_fail (service != NULL);
g_return_if_fail (session_id != NULL);
@@ -346,17 +335,18 @@ login1_service_lock_session (Login1Service *service, const gchar *session_id)
if (!session_id)
return;
- result = g_dbus_connection_call_sync (service->priv->connection,
- LOGIN1_SERVICE_NAME,
- LOGIN1_OBJECT_NAME,
- LOGIN1_MANAGER_INTERFACE_NAME,
- "LockSession",
- g_variant_new ("(s)", session_id),
- G_VARIANT_TYPE ("()"),
- G_DBUS_CALL_FLAGS_NONE,
- -1,
- NULL,
- &error);
+ g_autoptr(GError) error = NULL;
+ g_autoptr(GVariant) result = g_dbus_connection_call_sync (service->priv->connection,
+ LOGIN1_SERVICE_NAME,
+ LOGIN1_OBJECT_NAME,
+ LOGIN1_MANAGER_INTERFACE_NAME,
+ "LockSession",
+ g_variant_new ("(s)", session_id),
+ G_VARIANT_TYPE ("()"),
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ NULL,
+ &error);
if (error)
g_warning ("Error locking login1 session: %s", error->message);
}
@@ -364,9 +354,6 @@ login1_service_lock_session (Login1Service *service, const gchar *session_id)
void
login1_service_unlock_session (Login1Service *service, const gchar *session_id)
{
- g_autoptr(GVariant) result = NULL;
- g_autoptr(GError) error = NULL;
-
g_return_if_fail (service != NULL);
g_return_if_fail (session_id != NULL);
@@ -375,17 +362,18 @@ login1_service_unlock_session (Login1Service *service, const gchar *session_id)
if (!session_id)
return;
- result = g_dbus_connection_call_sync (service->priv->connection,
- LOGIN1_SERVICE_NAME,
- LOGIN1_OBJECT_NAME,
- LOGIN1_MANAGER_INTERFACE_NAME,
- "UnlockSession",
- g_variant_new ("(s)", session_id),
- G_VARIANT_TYPE ("()"),
- G_DBUS_CALL_FLAGS_NONE,
- -1,
- NULL,
- &error);
+ g_autoptr(GError) error = NULL;
+ g_autoptr(GVariant) result = g_dbus_connection_call_sync (service->priv->connection,
+ LOGIN1_SERVICE_NAME,
+ LOGIN1_OBJECT_NAME,
+ LOGIN1_MANAGER_INTERFACE_NAME,
+ "UnlockSession",
+ g_variant_new ("(s)", session_id),
+ G_VARIANT_TYPE ("()"),
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ NULL,
+ &error);
if (error)
g_warning ("Error unlocking login1 session: %s", error->message);
}
@@ -393,9 +381,6 @@ login1_service_unlock_session (Login1Service *service, const gchar *session_id)
void
login1_service_activate_session (Login1Service *service, const gchar *session_id)
{
- g_autoptr(GVariant) result = NULL;
- g_autoptr(GError) error = NULL;
-
g_return_if_fail (service != NULL);
g_return_if_fail (session_id != NULL);
@@ -404,17 +389,18 @@ login1_service_activate_session (Login1Service *service, const gchar *session_id
if (!session_id)
return;
- result = g_dbus_connection_call_sync (service->priv->connection,
- LOGIN1_SERVICE_NAME,
- LOGIN1_OBJECT_NAME,
- LOGIN1_MANAGER_INTERFACE_NAME,
- "ActivateSession",
- g_variant_new ("(s)", session_id),
- G_VARIANT_TYPE ("()"),
- G_DBUS_CALL_FLAGS_NONE,
- -1,
- NULL,
- &error);
+ g_autoptr(GError) error = NULL;
+ g_autoptr(GVariant) result = g_dbus_connection_call_sync (service->priv->connection,
+ LOGIN1_SERVICE_NAME,
+ LOGIN1_OBJECT_NAME,
+ LOGIN1_MANAGER_INTERFACE_NAME,
+ "ActivateSession",
+ g_variant_new ("(s)", session_id),
+ G_VARIANT_TYPE ("()"),
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ NULL,
+ &error);
if (error)
g_warning ("Error activating login1 session: %s", error->message);
}
@@ -422,9 +408,6 @@ login1_service_activate_session (Login1Service *service, const gchar *session_id
void
login1_service_terminate_session (Login1Service *service, const gchar *session_id)
{
- g_autoptr(GVariant) result = NULL;
- g_autoptr(GError) error = NULL;
-
g_return_if_fail (service != NULL);
g_return_if_fail (session_id != NULL);
@@ -433,17 +416,18 @@ login1_service_terminate_session (Login1Service *service, const gchar *session_i
if (!session_id)
return;
- result = g_dbus_connection_call_sync (service->priv->connection,
- LOGIN1_SERVICE_NAME,
- LOGIN1_OBJECT_NAME,
- LOGIN1_MANAGER_INTERFACE_NAME,
- "TerminateSession",
- g_variant_new ("(s)", session_id),
- G_VARIANT_TYPE ("()"),
- G_DBUS_CALL_FLAGS_NONE,
- -1,
- NULL,
- &error);
+ g_autoptr(GError) error = NULL;
+ g_autoptr(GVariant) result = g_dbus_connection_call_sync (service->priv->connection,
+ LOGIN1_SERVICE_NAME,
+ LOGIN1_OBJECT_NAME,
+ LOGIN1_MANAGER_INTERFACE_NAME,
+ "TerminateSession",
+ g_variant_new ("(s)", session_id),
+ G_VARIANT_TYPE ("()"),
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ NULL,
+ &error);
if (error)
g_warning ("Error terminating login1 session: %s", error->message);
}
diff --git a/src/plymouth.c b/src/plymouth.c
index ec9377c8..d1ed91f4 100644
--- a/src/plymouth.c
+++ b/src/plymouth.c
@@ -24,12 +24,9 @@ static gboolean has_active_vt = FALSE;
static gboolean
plymouth_run_command (const gchar *command, gint *exit_status)
{
- g_autofree gchar *command_line = NULL;
- gboolean result;
+ g_autofree gchar *command_line = g_strdup_printf ("plymouth %s", command);
g_autoptr(GError) error = NULL;
-
- command_line = g_strdup_printf ("plymouth %s", command);
- result = g_spawn_command_line_sync (command_line, NULL, NULL, exit_status, &error);
+ gboolean result = g_spawn_command_line_sync (command_line, NULL, NULL, exit_status, &error);
if (error)
g_debug ("Could not run %s: %s", command_line, error->message);
diff --git a/src/process.c b/src/process.c
index ec0ecb5b..549ccd94 100644
--- a/src/process.c
+++ b/src/process.c
@@ -176,42 +176,37 @@ process_watch_cb (GPid pid, gint status, gpointer data)
gboolean
process_start (Process *process, gboolean block)
{
- gint argc;
- g_auto(GStrv) argv = NULL;
- g_autofree gchar **env_keys = NULL;
- g_autofree gchar **env_values = NULL;
- guint i, env_length;
- GList *keys, *link;
- pid_t pid;
- int log_fd = -1;
- g_autoptr(GError) error = NULL;
-
g_return_val_if_fail (process != NULL, FALSE);
g_return_val_if_fail (process->priv->command != NULL, FALSE);
g_return_val_if_fail (process->priv->pid == 0, FALSE);
+ gint argc;
+ g_auto(GStrv) argv = NULL;
+ g_autoptr(GError) error = NULL;
if (!g_shell_parse_argv (process->priv->command, &argc, &argv, &error))
{
g_warning ("Error parsing command %s: %s", process->priv->command, error->message);
return FALSE;
}
+ int log_fd = -1;
if (process->priv->log_file)
log_fd = log_file_open (process->priv->log_file, process->priv->log_mode);
/* Work out variables to set */
- env_length = g_hash_table_size (process->priv->env);
- env_keys = g_malloc (sizeof (gchar *) * env_length);
- env_values = g_malloc (sizeof (gchar *) * env_length);
- keys = g_hash_table_get_keys (process->priv->env);
- for (i = 0, link = keys; i < env_length; i++, link = link->next)
+ guint env_length = g_hash_table_size (process->priv->env);
+ g_autofree gchar **env_keys = g_malloc (sizeof (gchar *) * env_length);
+ g_autofree gchar **env_values = g_malloc (sizeof (gchar *) * env_length);
+ GList *keys = g_hash_table_get_keys (process->priv->env);
+ guint i = 0;
+ for (GList *link = keys; i < env_length; i++, link = link->next)
{
env_keys[i] = link->data;
env_values[i] = g_hash_table_lookup (process->priv->env, env_keys[i]);
}
g_list_free (keys);
- pid = fork ();
+ pid_t pid = fork ();
if (pid == 0)
{
/* Do custom setup */
@@ -234,7 +229,7 @@ process_start (Process *process, gboolean block)
#else
environ = NULL;
#endif
- for (i = 0; i < env_length; i++)
+ for (guint i = 0; i < env_length; i++)
setenv (env_keys[i], env_values[i], TRUE);
/* Reset SIGPIPE handler so the child has default behaviour (we disabled it at LightDM start) */
@@ -387,11 +382,9 @@ signal_cb (int signum, siginfo_t *info, void *data)
static gboolean
handle_signal (GIOChannel *source, GIOCondition condition, gpointer data)
{
+ errno = 0;
int signo;
pid_t pid;
- Process *process;
-
- errno = 0;
if (read (signal_pipe[0], &signo, sizeof (int)) != sizeof (int) ||
read (signal_pipe[0], &pid, sizeof (pid_t)) != sizeof (pid_t))
{
@@ -401,7 +394,7 @@ handle_signal (GIOChannel *source, GIOCondition condition, gpointer data)
g_debug ("Got signal %d from process %d", signo, pid);
- process = g_hash_table_lookup (processes, GINT_TO_POINTER (pid));
+ Process *process = g_hash_table_lookup (processes, GINT_TO_POINTER (pid));
if (process == NULL)
process = process_get_current ();
if (process)
diff --git a/src/seat-local.c b/src/seat-local.c
index 3b9d6729..9d83ca97 100644
--- a/src/seat-local.c
+++ b/src/seat-local.c
@@ -77,45 +77,36 @@ compositor_stopped_cb (UnitySystemCompositor *compositor, SeatLocal *seat)
if (seat_get_is_stopping (SEAT (seat)))
check_stopped (seat);
-}
+}
static gboolean
seat_local_start (Seat *seat)
{
- const gchar *xdmcp_manager = NULL;
-
/* If running as an XDMCP client then just start an X server */
- xdmcp_manager = seat_get_string_property (seat, "xdmcp-manager");
+ const gchar *xdmcp_manager = seat_get_string_property (seat, "xdmcp-manager");
if (xdmcp_manager)
{
SeatLocal *s = SEAT_LOCAL (seat);
- const gchar *key_name = NULL;
- gint port = 0;
s->priv->xdmcp_x_server = create_x_server (s);
x_server_local_set_xdmcp_server (s->priv->xdmcp_x_server, xdmcp_manager);
- port = seat_get_integer_property (seat, "xdmcp-port");
+ gint port = seat_get_integer_property (seat, "xdmcp-port");
if (port > 0)
x_server_local_set_xdmcp_port (s->priv->xdmcp_x_server, port);
- key_name = seat_get_string_property (seat, "xdmcp-key");
+ const gchar *key_name = seat_get_string_property (seat, "xdmcp-key");
if (key_name)
{
- g_autofree gchar *path = NULL;
- g_autoptr(GKeyFile) keys = NULL;
- gboolean result;
- g_autoptr(GError) error = NULL;
+ g_autofree gchar *path = g_build_filename (config_get_directory (config_get_instance ()), "keys.conf", NULL);
- path = g_build_filename (config_get_directory (config_get_instance ()), "keys.conf", NULL);
-
- keys = g_key_file_new ();
- result = g_key_file_load_from_file (keys, path, G_KEY_FILE_NONE, &error);
+ g_autoptr(GKeyFile) keys = g_key_file_new ();
+ g_autoptr(GError) error = NULL;
+ gboolean result = g_key_file_load_from_file (keys, path, G_KEY_FILE_NONE, &error);
if (error)
l_debug (seat, "Error getting key %s", error->message);
if (result)
{
g_autofree gchar *key = NULL;
-
if (g_key_file_has_key (keys, "keyring", key_name, NULL))
key = g_key_file_get_string (keys, "keyring", key_name, NULL);
else
@@ -153,13 +144,11 @@ display_server_transition_plymouth_cb (DisplayServer *display_server, Seat *seat
static gint
get_vt (SeatLocal *seat, DisplayServer *display_server)
{
- gint vt = -1;
- const gchar *xdg_seat = seat_get_name (SEAT (seat));
-
- if (strcmp (xdg_seat, "seat0") != 0)
- return vt;
+ if (strcmp (seat_get_name (SEAT (seat)), "seat0") != 0)
+ return -1;
/* If Plymouth is running, stop it */
+ gint vt = -1;
if (plymouth_get_is_active () && plymouth_has_active_vt ())
{
gint active_vt = vt_get_active ();
@@ -184,24 +173,21 @@ get_vt (SeatLocal *seat, DisplayServer *display_server)
static UnitySystemCompositor *
get_unity_system_compositor (SeatLocal *seat)
{
- const gchar *command;
- gint timeout, vt;
-
if (seat->priv->compositor)
return seat->priv->compositor;
seat->priv->compositor = unity_system_compositor_new ();
- command = seat_get_string_property (SEAT (seat), "unity-compositor-command");
+ const gchar *command = seat_get_string_property (SEAT (seat), "unity-compositor-command");
if (command)
unity_system_compositor_set_command (seat->priv->compositor, command);
- timeout = seat_get_integer_property (SEAT (seat), "unity-compositor-timeout");
+ gint timeout = seat_get_integer_property (SEAT (seat), "unity-compositor-timeout");
if (timeout <= 0)
timeout = 60;
unity_system_compositor_set_timeout (seat->priv->compositor, timeout);
- vt = get_vt (seat, DISPLAY_SERVER (seat->priv->compositor));
+ gint vt = get_vt (seat, DISPLAY_SERVER (seat->priv->compositor));
if (vt >= 0)
unity_system_compositor_set_vt (seat->priv->compositor, vt);
@@ -214,40 +200,28 @@ get_unity_system_compositor (SeatLocal *seat)
static XServerLocal *
create_x_server (SeatLocal *seat)
{
- const gchar *x_server_backend;
- XServerLocal *x_server;
- g_autofree gchar *number = NULL;
- g_autoptr(XAuthority) cookie = NULL;
- const gchar *layout = NULL, *config_file = NULL;
- gboolean allow_tcp;
- gint vt;
-
- x_server_backend = seat_get_string_property (SEAT (seat), "xserver-backend");
+ g_autoptr(XServerLocal) x_server = NULL;
+
+ const gchar *x_server_backend = seat_get_string_property (SEAT (seat), "xserver-backend");
if (g_strcmp0 (x_server_backend, "mir") == 0)
{
- UnitySystemCompositor *compositor;
- const gchar *command;
- g_autofree gchar *id = NULL;
-
- compositor = get_unity_system_compositor (SEAT_LOCAL (seat));
+ UnitySystemCompositor *compositor = get_unity_system_compositor (SEAT_LOCAL (seat));
x_server = X_SERVER_LOCAL (x_server_xmir_new (compositor));
- command = seat_get_string_property (SEAT (seat), "xmir-command");
+ const gchar *command = seat_get_string_property (SEAT (seat), "xmir-command");
if (command)
x_server_local_set_command (x_server, command);
- id = g_strdup_printf ("x-%d", seat->priv->next_xmir_id);
+ g_autofree gchar *id = g_strdup_printf ("x-%d", seat->priv->next_xmir_id);
seat->priv->next_xmir_id++;
x_server_xmir_set_mir_id (X_SERVER_XMIR (x_server), id);
x_server_xmir_set_mir_socket (X_SERVER_XMIR (x_server), unity_system_compositor_get_socket (compositor));
}
else
{
- const gchar *command = NULL;
-
x_server = x_server_local_new ();
- vt = get_vt (seat, DISPLAY_SERVER (x_server));
+ gint vt = get_vt (seat, DISPLAY_SERVER (x_server));
if (vt >= 0)
x_server_local_set_vt (x_server, vt);
@@ -257,6 +231,7 @@ create_x_server (SeatLocal *seat)
l_debug (seat, "Starting local X display");
/* If running inside an X server use Xephyr instead */
+ const gchar *command = NULL;
if (g_getenv ("DISPLAY"))
command = "Xephyr";
if (!command)
@@ -265,48 +240,44 @@ create_x_server (SeatLocal *seat)
x_server_local_set_command (x_server, command);
}
- number = g_strdup_printf ("%d", x_server_get_display_number (X_SERVER (x_server)));
- cookie = x_authority_new_local_cookie (number);
+ g_autofree gchar *number = g_strdup_printf ("%d", x_server_get_display_number (X_SERVER (x_server)));
+ g_autoptr(XAuthority) cookie = x_authority_new_local_cookie (number);
x_server_set_authority (X_SERVER (x_server), cookie);
- layout = seat_get_string_property (SEAT (seat), "xserver-layout");
+ const gchar *layout = seat_get_string_property (SEAT (seat), "xserver-layout");
if (layout)
x_server_local_set_layout (x_server, layout);
x_server_local_set_xdg_seat (x_server, seat_get_name (SEAT (seat)));
- config_file = seat_get_string_property (SEAT (seat), "xserver-config");
+ const gchar *config_file = seat_get_string_property (SEAT (seat), "xserver-config");
if (config_file)
x_server_local_set_config (x_server, config_file);
- allow_tcp = seat_get_boolean_property (SEAT (seat), "xserver-allow-tcp");
+ gboolean allow_tcp = seat_get_boolean_property (SEAT (seat), "xserver-allow-tcp");
x_server_local_set_allow_tcp (x_server, allow_tcp);
- return x_server;
+ return g_steal_pointer (&x_server);
}
static DisplayServer *
create_wayland_session (SeatLocal *seat)
{
- WaylandSession *session;
- gint vt;
-
- session = wayland_session_new ();
+ g_autoptr(WaylandSession) session = wayland_session_new ();
- vt = get_vt (seat, DISPLAY_SERVER (session));
+ gint vt = get_vt (seat, DISPLAY_SERVER (session));
if (vt >= 0)
wayland_session_set_vt (session, vt);
- return DISPLAY_SERVER (session);
+ return DISPLAY_SERVER (g_steal_pointer (&session));
}
static DisplayServer *
seat_local_create_display_server (Seat *s, Session *session)
{
SeatLocal *seat = SEAT_LOCAL (s);
- const gchar *session_type;
- session_type = session_get_session_type (session);
+ const gchar *session_type = session_get_session_type (session);
if (strcmp (session_type, "x") == 0)
return DISPLAY_SERVER (create_x_server (seat));
else if (strcmp (session_type, "mir") == 0)
@@ -332,9 +303,7 @@ seat_local_display_server_is_used (Seat *seat, DisplayServer *display_server)
static GreeterSession *
seat_local_create_greeter_session (Seat *seat)
{
- GreeterSession *greeter_session;
-
- greeter_session = SEAT_CLASS (seat_local_parent_class)->create_greeter_session (seat);
+ GreeterSession *greeter_session = SEAT_CLASS (seat_local_parent_class)->create_greeter_session (seat);
session_set_env (SESSION (greeter_session), "XDG_SEAT", seat_get_name (seat));
return greeter_session;
@@ -343,9 +312,7 @@ seat_local_create_greeter_session (Seat *seat)
static Session *
seat_local_create_session (Seat *seat)
{
- Session *session;
-
- session = SEAT_CLASS (seat_local_parent_class)->create_session (seat);
+ Session *session = SEAT_CLASS (seat_local_parent_class)->create_session (seat);
session_set_env (SESSION (session), "XDG_SEAT", seat_get_name (seat));
return session;
@@ -355,9 +322,8 @@ static void
seat_local_set_active_session (Seat *s, Session *session)
{
SeatLocal *seat = SEAT_LOCAL (s);
- DisplayServer *display_server;
- display_server = session_get_display_server (session);
+ DisplayServer *display_server = session_get_display_server (session);
gint vt = display_server_get_vt (display_server);
if (vt >= 0)
@@ -382,10 +348,8 @@ static Session *
seat_local_get_active_session (Seat *s)
{
SeatLocal *seat = SEAT_LOCAL (s);
- gint vt;
- GList *link;
- vt = vt_get_active ();
+ gint vt = vt_get_active ();
if (vt < 0)
return NULL;
@@ -394,7 +358,7 @@ seat_local_get_active_session (Seat *s)
return seat->priv->active_compositor_session;
/* Otherwise find out which session is on this VT */
- for (link = seat_get_sessions (s); link; link = link->next)
+ for (GList *link = seat_get_sessions (s); link; link = link->next)
{
Session *session = link->data;
DisplayServer *display_server;
@@ -410,14 +374,12 @@ seat_local_get_active_session (Seat *s)
static void
seat_local_set_next_session (Seat *seat, Session *session)
{
- DisplayServer *display_server;
- const gchar *id = NULL;
-
if (!session)
return;
- display_server = session_get_display_server (session);
+ DisplayServer *display_server = session_get_display_server (session);
+ const gchar *id = NULL;
if (IS_X_SERVER_XMIR (display_server))
id = x_server_xmir_get_mir_id (X_SERVER_XMIR (display_server));
else
@@ -437,12 +399,8 @@ seat_local_run_script (Seat *seat, DisplayServer *display_server, Process *scrip
{
if (IS_X_SERVER_LOCAL (display_server))
{
- const gchar *path;
- XServerLocal *x_server;
-
- x_server = X_SERVER_LOCAL (display_server);
- path = x_server_local_get_authority_file_path (x_server);
- process_set_env (script, "DISPLAY", x_server_get_address (X_SERVER (x_server)));
+ const gchar *path = x_server_local_get_authority_file_path (X_SERVER_LOCAL (display_server));
+ process_set_env (script, "DISPLAY", x_server_get_address (X_SERVER (display_server)));
process_set_env (script, "XAUTHORITY", path);
}
diff --git a/src/seat-unity.c b/src/seat-unity.c
index 16dde12b..8563f7ad 100644
--- a/src/seat-unity.c
+++ b/src/seat-unity.c
@@ -74,48 +74,38 @@ xdmcp_x_server_stopped_cb (DisplayServer *display_server, Seat *seat)
static void
compositor_ready_cb (UnitySystemCompositor *compositor, SeatUnity *seat)
{
- const gchar *xdmcp_manager = NULL;
-
l_debug (seat, "Compositor ready");
/* If running as an XDMCP client then just start an X server */
- xdmcp_manager = seat_get_string_property (SEAT (seat), "xdmcp-manager");
+ const gchar *xdmcp_manager = seat_get_string_property (SEAT (seat), "xdmcp-manager");
if (xdmcp_manager)
{
- const gchar *key_name = NULL;
- gint port = 0;
-
seat->priv->xdmcp_x_server = create_x_server (SEAT (seat));
x_server_local_set_xdmcp_server (X_SERVER_LOCAL (seat->priv->xdmcp_x_server), xdmcp_manager);
- port = seat_get_integer_property (SEAT (seat), "xdmcp-port");
+ gint port = seat_get_integer_property (SEAT (seat), "xdmcp-port");
if (port > 0)
x_server_local_set_xdmcp_port (X_SERVER_LOCAL (seat->priv->xdmcp_x_server), port);
- key_name = seat_get_string_property (SEAT (seat), "xdmcp-key");
+ const gchar *key_name = seat_get_string_property (SEAT (seat), "xdmcp-key");
if (key_name)
{
- g_autofree gchar *path = NULL;
- g_autoptr(GKeyFile) keys = NULL;
- gboolean result;
- g_autoptr(GError) error = NULL;
+ g_autofree gchar *path = g_build_filename (config_get_directory (config_get_instance ()), "keys.conf", NULL);
- path = g_build_filename (config_get_directory (config_get_instance ()), "keys.conf", NULL);
-
- keys = g_key_file_new ();
- result = g_key_file_load_from_file (keys, path, G_KEY_FILE_NONE, &error);
+ g_autoptr(GKeyFile) keys = g_key_file_new ();
+ g_autoptr(GError) error = NULL;
+ gboolean result = g_key_file_load_from_file (keys, path, G_KEY_FILE_NONE, &error);
if (error)
l_debug (seat, "Error getting key %s", error->message);
if (result)
{
- g_autofree gchar *key = NULL;
-
if (g_key_file_has_key (keys, "keyring", key_name, NULL))
- key = g_key_file_get_string (keys, "keyring", key_name, NULL);
+ {
+ g_autofree gchar *key = g_key_file_get_string (keys, "keyring", key_name, NULL);
+ if (key)
+ x_server_local_set_xdmcp_key (X_SERVER_LOCAL (seat->priv->xdmcp_x_server), key);
+ }
else
l_debug (seat, "Key %s not defined", key_name);
-
- if (key)
- x_server_local_set_xdmcp_key (X_SERVER_LOCAL (seat->priv->xdmcp_x_server), key);
}
}
@@ -143,10 +133,8 @@ compositor_stopped_cb (UnitySystemCompositor *compositor, SeatUnity *seat)
static gboolean
seat_unity_start (Seat *seat)
{
- gint vt = -1;
- int timeout;
-
/* Replace Plymouth if it is running */
+ gint vt = -1;
if (plymouth_get_is_active () && plymouth_has_active_vt ())
{
gint active_vt = vt_get_active ();
@@ -168,7 +156,7 @@ seat_unity_start (Seat *seat)
return FALSE;
}
- timeout = seat_get_integer_property (SEAT (seat), "unity-compositor-timeout");
+ int timeout = seat_get_integer_property (SEAT (seat), "unity-compositor-timeout");
if (timeout <= 0)
timeout = 60;
@@ -185,51 +173,42 @@ seat_unity_start (Seat *seat)
static XServerXmir *
create_x_server (Seat *seat)
{
- XServerXmir *x_server;
- g_autoptr(XAuthority) cookie = NULL;
- const gchar *command = NULL, *layout = NULL, *config_file = NULL;
- g_autofree gchar *id = NULL;
- g_autofree gchar *number = NULL;
- gboolean allow_tcp;
-
l_debug (seat, "Starting X server on Unity compositor");
- x_server = x_server_xmir_new (SEAT_UNITY (seat)->priv->compositor);
+ g_autoptr(XServerXmir) x_server = x_server_xmir_new (SEAT_UNITY (seat)->priv->compositor);
- command = seat_get_string_property (seat, "xmir-command");
+ const gchar *command = seat_get_string_property (seat, "xmir-command");
x_server_local_set_command (X_SERVER_LOCAL (x_server), command);
- id = g_strdup_printf ("x-%d", SEAT_UNITY (seat)->priv->next_x_server_id);
+ g_autofree gchar *id = g_strdup_printf ("x-%d", SEAT_UNITY (seat)->priv->next_x_server_id);
SEAT_UNITY (seat)->priv->next_x_server_id++;
x_server_xmir_set_mir_id (x_server, id);
x_server_xmir_set_mir_socket (x_server, unity_system_compositor_get_socket (SEAT_UNITY (seat)->priv->compositor));
- number = g_strdup_printf ("%d", x_server_get_display_number (X_SERVER (x_server)));
- cookie = x_authority_new_local_cookie (number);
+ g_autofree gchar *number = g_strdup_printf ("%d", x_server_get_display_number (X_SERVER (x_server)));
+ g_autoptr(XAuthority) cookie = x_authority_new_local_cookie (number);
x_server_set_authority (X_SERVER (x_server), cookie);
- layout = seat_get_string_property (seat, "xserver-layout");
+ const gchar *layout = seat_get_string_property (seat, "xserver-layout");
if (layout)
x_server_local_set_layout (X_SERVER_LOCAL (x_server), layout);
x_server_local_set_xdg_seat (X_SERVER_LOCAL (x_server), seat_get_name (seat));
- config_file = seat_get_string_property (seat, "xserver-config");
+ const gchar *config_file = seat_get_string_property (seat, "xserver-config");
if (config_file)
x_server_local_set_config (X_SERVER_LOCAL (x_server), config_file);
- allow_tcp = seat_get_boolean_property (seat, "xserver-allow-tcp");
+ gboolean allow_tcp = seat_get_boolean_property (seat, "xserver-allow-tcp");
x_server_local_set_allow_tcp (X_SERVER_LOCAL (x_server), allow_tcp);
- return x_server;
+ return g_steal_pointer (&x_server);
}
static DisplayServer *
seat_unity_create_display_server (Seat *seat, Session *session)
{
- const gchar *session_type;
-
- session_type = session_get_session_type (session);
+ const gchar *session_type = session_get_session_type (session);
if (strcmp (session_type, "x") == 0)
return DISPLAY_SERVER (create_x_server (seat));
else if (strcmp (session_type, "mir") == 0)
@@ -253,13 +232,10 @@ seat_unity_display_server_is_used (Seat *seat, DisplayServer *display_server)
static GreeterSession *
seat_unity_create_greeter_session (Seat *seat)
{
- GreeterSession *greeter_session;
- gint vt;
-
- greeter_session = SEAT_CLASS (seat_unity_parent_class)->create_greeter_session (seat);
+ GreeterSession *greeter_session = SEAT_CLASS (seat_unity_parent_class)->create_greeter_session (seat);
session_set_env (SESSION (greeter_session), "XDG_SEAT", seat_get_name (seat));
- vt = display_server_get_vt (DISPLAY_SERVER (SEAT_UNITY (seat)->priv->compositor));
+ gint vt = display_server_get_vt (DISPLAY_SERVER (SEAT_UNITY (seat)->priv->compositor));
if (vt >= 0)
{
g_autofree gchar *value = g_strdup_printf ("%d", vt);
@@ -272,13 +248,10 @@ seat_unity_create_greeter_session (Seat *seat)
static Session *
seat_unity_create_session (Seat *seat)
{
- Session *session;
- gint vt;
-
- session = SEAT_CLASS (seat_unity_parent_class)->create_session (seat);
+ Session *session = SEAT_CLASS (seat_unity_parent_class)->create_session (seat);
session_set_env (session, "XDG_SEAT", seat_get_name (seat));
- vt = display_server_get_vt (DISPLAY_SERVER (SEAT_UNITY (seat)->priv->compositor));
+ gint vt = display_server_get_vt (DISPLAY_SERVER (SEAT_UNITY (seat)->priv->compositor));
if (vt >= 0)
{
g_autofree gchar *value = g_strdup_printf ("%d", vt);
@@ -291,12 +264,10 @@ seat_unity_create_session (Seat *seat)
static const gchar *
get_mir_id (Session *session)
{
- DisplayServer *display_server;
-
if (!session)
return NULL;
- display_server = session_get_display_server (session);
+ DisplayServer *display_server = session_get_display_server (session);
if (IS_UNITY_SYSTEM_COMPOSITOR (display_server))
return session_get_env (session, "MIR_SERVER_NAME");
if (IS_X_SERVER_XMIR (display_server))
@@ -309,10 +280,9 @@ static void
seat_unity_set_active_session (Seat *s, Session *session)
{
SeatUnity *seat = SEAT_UNITY (s);
- const gchar *old_id, *new_id;
- old_id = get_mir_id (seat->priv->active_session);
- new_id = get_mir_id (session);
+ const gchar *old_id = get_mir_id (seat->priv->active_session);
+ const gchar *new_id = get_mir_id (session);
g_clear_object (&seat->priv->active_session);
seat->priv->active_session = g_object_ref (session);
@@ -332,14 +302,12 @@ seat_unity_get_active_session (Seat *seat)
static void
seat_unity_set_next_session (Seat *seat, Session *session)
{
- DisplayServer *display_server;
- const gchar *id = NULL;
-
if (!session)
return;
- display_server = session_get_display_server (session);
+ DisplayServer *display_server = session_get_display_server (session);
+ const gchar *id = NULL;
if (IS_X_SERVER_LOCAL (display_server))
id = x_server_xmir_get_mir_id (X_SERVER_XMIR (display_server));
else
@@ -363,11 +331,8 @@ seat_unity_run_script (Seat *seat, DisplayServer *display_server, Process *scrip
{
if (IS_X_SERVER_XMIR (display_server))
{
- XServerXmir *x_server;
- const gchar *path;
-
- x_server = X_SERVER_XMIR (display_server);
- path = x_server_local_get_authority_file_path (X_SERVER_LOCAL (x_server));
+ XServerXmir *x_server = X_SERVER_XMIR (display_server);
+ const gchar *path = x_server_local_get_authority_file_path (X_SERVER_LOCAL (x_server));
process_set_env (script, "DISPLAY", x_server_get_address (X_SERVER (x_server)));
process_set_env (script, "XAUTHORITY", path);
}
diff --git a/src/seat-xdmcp-session.c b/src/seat-xdmcp-session.c
index ebcdb706..903a26ff 100644
--- a/src/seat-xdmcp-session.c
+++ b/src/seat-xdmcp-session.c
@@ -28,9 +28,7 @@ G_DEFINE_TYPE (SeatXDMCPSession, seat_xdmcp_session, SEAT_TYPE)
SeatXDMCPSession *
seat_xdmcp_session_new (XDMCPSession *session)
{
- SeatXDMCPSession *seat;
-
- seat = g_object_new (SEAT_XDMCP_SESSION_TYPE, NULL);
+ SeatXDMCPSession *seat = g_object_new (SEAT_XDMCP_SESSION_TYPE, NULL);
seat->priv->session = g_object_ref (session);
return seat;
@@ -39,9 +37,6 @@ seat_xdmcp_session_new (XDMCPSession *session)
static DisplayServer *
seat_xdmcp_session_create_display_server (Seat *seat, Session *session)
{
- XAuthority *authority;
- g_autofree gchar *host = NULL;
-
if (strcmp (session_get_session_type (session), "x") != 0)
return NULL;
@@ -49,8 +44,8 @@ seat_xdmcp_session_create_display_server (Seat *seat, Session *session)
if (SEAT_XDMCP_SESSION (seat)->priv->x_server)
return NULL;
- authority = xdmcp_session_get_authority (SEAT_XDMCP_SESSION (seat)->priv->session);
- host = g_inet_address_to_string (xdmcp_session_get_address (SEAT_XDMCP_SESSION (seat)->priv->session));
+ XAuthority *authority = xdmcp_session_get_authority (SEAT_XDMCP_SESSION (seat)->priv->session);
+ g_autofree gchar *host = g_inet_address_to_string (xdmcp_session_get_address (SEAT_XDMCP_SESSION (seat)->priv->session));
SEAT_XDMCP_SESSION (seat)->priv->x_server = x_server_remote_new (host, xdmcp_session_get_display_number (SEAT_XDMCP_SESSION (seat)->priv->session), authority);
diff --git a/src/seat-xremote.c b/src/seat-xremote.c
index e337b14d..876ee29e 100644
--- a/src/seat-xremote.c
+++ b/src/seat-xremote.c
@@ -27,34 +27,25 @@ seat_xremote_setup (Seat *seat)
static DisplayServer *
seat_xremote_create_display_server (Seat *seat, Session *session)
{
- const gchar *session_type;
- XServerRemote *x_server;
- const gchar *hostname;
- gint number;
-
- session_type = session_get_session_type (session);
+ const gchar *session_type = session_get_session_type (session);
if (strcmp (session_type, "x") != 0)
{
l_warning (seat, "X remote seat only supports X display servers, not '%s'", session_type);
return NULL;
}
- hostname = seat_get_string_property (seat, "xserver-hostname");
- number = seat_get_integer_property (seat, "xserver-display-number");
+ const gchar *hostname = seat_get_string_property (seat, "xserver-hostname");
+ gint number = seat_get_integer_property (seat, "xserver-display-number");
l_debug (seat, "Starting remote X display %s:%d", hostname ? hostname : "", number);
- x_server = x_server_remote_new (hostname, number, NULL);
-
- return DISPLAY_SERVER (x_server);
+ return DISPLAY_SERVER (x_server_remote_new (hostname, number, NULL));
}
static GreeterSession *
seat_xremote_create_greeter_session (Seat *seat)
{
- GreeterSession *greeter_session;
-
- greeter_session = SEAT_CLASS (seat_xremote_parent_class)->create_greeter_session (seat);
+ GreeterSession *greeter_session = SEAT_CLASS (seat_xremote_parent_class)->create_greeter_session (seat);
session_set_env (SESSION (greeter_session), "XDG_SEAT", seat_get_name (seat));
return greeter_session;
@@ -63,9 +54,7 @@ seat_xremote_create_greeter_session (Seat *seat)
static Session *
seat_xremote_create_session (Seat *seat)
{
- Session *session;
-
- session = SEAT_CLASS (seat_xremote_parent_class)->create_session (seat);
+ Session *session = SEAT_CLASS (seat_xremote_parent_class)->create_session (seat);
session_set_env (SESSION (session), "XDG_SEAT", seat_get_name (seat));
return session;
@@ -74,9 +63,7 @@ seat_xremote_create_session (Seat *seat)
static void
seat_xremote_run_script (Seat *seat, DisplayServer *display_server, Process *script)
{
- XServerRemote *x_server;
-
- x_server = X_SERVER_REMOTE (display_server);
+ XServerRemote *x_server = X_SERVER_REMOTE (display_server);
process_set_env (script, "DISPLAY", x_server_get_address (X_SERVER (x_server)));
process_set_env (script, "REMOTE_HOST", x_server_get_hostname (X_SERVER (x_server)));
diff --git a/src/seat-xvnc.c b/src/seat-xvnc.c
index 5539041d..232bcc72 100644
--- a/src/seat-xvnc.c
+++ b/src/seat-xvnc.c
@@ -28,9 +28,7 @@ struct SeatXVNCPrivate
SeatXVNC *seat_xvnc_new (GSocket *connection)
{
- SeatXVNC *seat;
-
- seat = g_object_new (SEAT_XVNC_TYPE, NULL);
+ SeatXVNC *seat = g_object_new (SEAT_XVNC_TYPE, NULL);
seat->priv->connection = g_object_ref (connection);
return seat;
@@ -46,11 +44,6 @@ seat_xvnc_setup (Seat *seat)
static DisplayServer *
seat_xvnc_create_display_server (Seat *seat, Session *session)
{
- XServerXVNC *x_server;
- g_autofree gchar *number = NULL;
- g_autoptr(XAuthority) cookie = NULL;
- const gchar *command = NULL;
-
if (strcmp (session_get_session_type (session), "x") != 0)
return NULL;
@@ -58,13 +51,14 @@ seat_xvnc_create_display_server (Seat *seat, Session *session)
if (SEAT_XVNC (seat)->priv->x_server)
return NULL;
- SEAT_XVNC (seat)->priv->x_server = x_server = x_server_xvnc_new ();
- number = g_strdup_printf ("%d", x_server_get_display_number (X_SERVER (x_server)));
- cookie = x_authority_new_local_cookie (number);
+ g_autoptr(XServerXVNC) x_server = x_server_xvnc_new ();
+ SEAT_XVNC (seat)->priv->x_server = g_object_ref (x_server);
+ g_autofree gchar *number = g_strdup_printf ("%d", x_server_get_display_number (X_SERVER (x_server)));
+ g_autoptr(XAuthority) cookie = x_authority_new_local_cookie (number);
x_server_set_authority (X_SERVER (x_server), cookie);
x_server_xvnc_set_socket (x_server, g_socket_get_fd (SEAT_XVNC (seat)->priv->connection));
- command = config_get_string (config_get_instance (), "VNCServer", "command");
+ const gchar *command = config_get_string (config_get_instance (), "VNCServer", "command");
if (command)
x_server_local_set_command (X_SERVER_LOCAL (x_server), command);
@@ -85,22 +79,17 @@ seat_xvnc_create_display_server (Seat *seat, Session *session)
x_server_xvnc_set_depth (x_server, depth);
}
- return g_object_ref (DISPLAY_SERVER (x_server));
+ return DISPLAY_SERVER (g_steal_pointer (&x_server));
}
static void
seat_xvnc_run_script (Seat *seat, DisplayServer *display_server, Process *script)
{
- XServerXVNC *x_server;
- GInetSocketAddress *address;
- g_autofree gchar *hostname = NULL;
- const gchar *path;
-
- x_server = X_SERVER_XVNC (display_server);
+ XServerXVNC *x_server = X_SERVER_XVNC (display_server);
- address = G_INET_SOCKET_ADDRESS (g_socket_get_remote_address (SEAT_XVNC (seat)->priv->connection, NULL));
- hostname = g_inet_address_to_string (g_inet_socket_address_get_address (address));
- path = x_server_local_get_authority_file_path (X_SERVER_LOCAL (x_server));
+ GInetSocketAddress *address = G_INET_SOCKET_ADDRESS (g_socket_get_remote_address (SEAT_XVNC (seat)->priv->connection, NULL));
+ g_autofree gchar *hostname = g_inet_address_to_string (g_inet_socket_address_get_address (address));
+ const gchar *path = x_server_local_get_authority_file_path (X_SERVER_LOCAL (x_server));
process_set_env (script, "REMOTE_HOST", hostname);
process_set_env (script, "DISPLAY", x_server_get_address (X_SERVER (x_server)));
diff --git a/src/seat.c b/src/seat.c
index d320a68c..775ddbb5 100644
--- a/src/seat.c
+++ b/src/seat.c
@@ -65,7 +65,7 @@ struct SeatPrivate
/* TRUE if stopped */
gboolean stopped;
-
+
/* The greeter to be started to replace the current one */
GreeterSession *replacement_greeter;
};
@@ -100,14 +100,12 @@ free_seat_module (gpointer data)
void
seat_register_module (const gchar *name, GType type)
{
- SeatModule *module;
-
if (!seat_modules)
seat_modules = g_hash_table_new_full (g_str_hash, g_str_equal, free_seat_module, NULL);
g_debug ("Registered seat module %s", name);
- module = g_malloc0 (sizeof (SeatModule));
+ SeatModule *module = g_malloc0 (sizeof (SeatModule));
module->name = g_strdup (name);
module->type = type;
g_hash_table_insert (seat_modules, g_strdup (name), module);
@@ -116,10 +114,9 @@ seat_register_module (const gchar *name, GType type)
Seat *
seat_new (const gchar *module_name)
{
- SeatModule *m = NULL;
-
g_return_val_if_fail (module_name != NULL, NULL);
+ SeatModule *m = NULL;
if (seat_modules)
m = g_hash_table_lookup (seat_modules, module_name);
if (!m)
@@ -160,15 +157,13 @@ seat_get_string_list_property (Seat *seat, const gchar *name)
gboolean
seat_get_boolean_property (Seat *seat, const gchar *name)
{
- const gchar *value;
- gint i, length = 0;
-
- value = seat_get_string_property (seat, name);
+ const gchar *value = seat_get_string_property (seat, name);
if (!value)
return FALSE;
/* Count the number of non-whitespace characters */
- for (i = 0; value[i]; i++)
+ gint length = 0;
+ for (gint i = 0; value[i]; i++)
if (!g_ascii_isspace (value[i]))
length = i + 1;
@@ -178,9 +173,7 @@ seat_get_boolean_property (Seat *seat, const gchar *name)
gint
seat_get_integer_property (Seat *seat, const gchar *name)
{
- const gchar *value;
-
- value = seat_get_string_property (seat, name);
+ const gchar *value = seat_get_string_property (seat, name);
return value ? atoi (value) : 0;
}
@@ -234,14 +227,12 @@ set_greeter_idle (gpointer greeter)
void
seat_set_active_session (Seat *seat, Session *session)
{
- GList *link;
-
g_return_if_fail (seat != NULL);
SEAT_GET_CLASS (seat)->set_active_session (seat, session);
/* Stop any greeters */
- for (link = seat->priv->sessions; link; link = link->next)
+ for (GList *link = seat->priv->sessions; link; link = link->next)
{
Session *s = link->data;
@@ -329,9 +320,7 @@ seat_set_externally_activated_session (Seat *seat, Session *session)
Session *
seat_find_session_by_login1_id (Seat *seat, const gchar *login1_session_id)
{
- GList *session_link;
-
- for (session_link = seat->priv->sessions; session_link; session_link = session_link->next)
+ for (GList *session_link = seat->priv->sessions; session_link; session_link = session_link->next)
{
Session *session = session_link->data;
if (g_strcmp0 (login1_session_id, session_get_login1_session_id (session)) == 0)
@@ -358,10 +347,7 @@ seat_get_allow_guest (Seat *seat)
static gboolean
run_script (Seat *seat, DisplayServer *display_server, const gchar *script_name, User *user)
{
- g_autoptr(Process) script = NULL;
- gboolean result = FALSE;
-
- script = process_new (NULL, NULL);
+ g_autoptr(Process) script = process_new (NULL, NULL);
process_set_command (script, script_name);
@@ -391,11 +377,10 @@ run_script (Seat *seat, DisplayServer *display_server, const gchar *script_name,
SEAT_GET_CLASS (seat)->run_script (seat, display_server, script);
+ gboolean result = FALSE;
if (process_start (script, TRUE))
{
- int exit_status;
-
- exit_status = process_get_exit_status (script);
+ int exit_status = process_get_exit_status (script);
if (WIFEXITED (exit_status))
{
l_debug (seat, "Exit status of %s: %d", script_name, WEXITSTATUS (exit_status));
@@ -416,13 +401,12 @@ emit_upstart_signal (const gchar *signal)
{
g_return_if_fail (signal != NULL);
g_return_if_fail (signal[0] != 0);
- g_autoptr(GSubprocess) p = NULL;
if (getuid () != 0)
return;
/* OK if it fails, probably not installed or not running upstart */
- p = g_subprocess_new (G_SUBPROCESS_FLAGS_STDERR_SILENCE, NULL, "initctl", "-q", "emit", signal, "DISPLAY_MANAGER=lightdm", NULL);
+ g_autoptr(GSubprocess) p = g_subprocess_new (G_SUBPROCESS_FLAGS_STDERR_SILENCE, NULL, "initctl", "-q", "emit", signal, "DISPLAY_MANAGER=lightdm", NULL);
}
static void
@@ -442,14 +426,10 @@ check_stopped (Seat *seat)
static void
display_server_stopped_cb (DisplayServer *display_server, Seat *seat)
{
- const gchar *script;
- GList *list, *link;
- Session *active_session;
-
l_debug (seat, "Display server stopped");
/* Run a script right after stopping the display server */
- script = seat_get_string_property (seat, "display-stopped-script");
+ const gchar *script = seat_get_string_property (seat, "display-stopped-script");
if (script)
run_script (seat, NULL, script, NULL);
@@ -464,18 +444,17 @@ display_server_stopped_cb (DisplayServer *display_server, Seat *seat)
}
/* Stop all sessions on this display server */
- list = g_list_copy (seat->priv->sessions);
- for (link = list; link; link = link->next)
+ GList *list = g_list_copy (seat->priv->sessions);
+ for (GList *link = list; link; link = link->next)
g_object_ref (link->data);
- for (link = list; link; link = link->next)
+ for (GList *link = list; link; link = link->next)
{
Session *session = link->data;
- gboolean is_failed_greeter;
if (session_get_display_server (session) != display_server || session_get_is_stopping (session))
continue;
-
- is_failed_greeter = IS_GREETER_SESSION (session) && !session_get_is_started (session);
+
+ gboolean is_failed_greeter = IS_GREETER_SESSION (session) && !session_get_is_started (session);
l_debug (seat, "Stopping session");
session_stop (session);
@@ -493,7 +472,7 @@ display_server_stopped_cb (DisplayServer *display_server, Seat *seat)
if (!seat->priv->stopping)
{
/* If we were the active session, switch to a greeter */
- active_session = seat_get_active_session (seat);
+ Session *active_session = seat_get_active_session (seat);
if (!active_session || session_get_display_server (active_session) == display_server)
{
l_debug (seat, "Active display server stopped, starting greeter");
@@ -517,9 +496,7 @@ can_share_display_server (Seat *seat, DisplayServer *display_server)
static GreeterSession *
find_greeter_session (Seat *seat)
{
- GList *link;
-
- for (link = seat->priv->sessions; link; link = link->next)
+ for (GList *link = seat->priv->sessions; link; link = link->next)
{
Session *session = link->data;
if (!session_get_is_stopping (session) && IS_GREETER_SESSION (session))
@@ -532,9 +509,7 @@ find_greeter_session (Seat *seat)
static GreeterSession *
find_resettable_greeter (Seat *seat)
{
- GList *link;
-
- for (link = seat->priv->sessions; link; link = link->next)
+ for (GList *link = seat->priv->sessions; link; link = link->next)
{
Session *session = link->data;
if (!session_get_is_stopping (session) && IS_GREETER_SESSION (session) &&
@@ -559,12 +534,9 @@ set_greeter_hints (Seat *seat, Greeter *greeter)
static void
switch_to_greeter_from_failed_session (Seat *seat, Session *session)
{
- GreeterSession *greeter_session;
- Greeter *greeter;
- gboolean existing = FALSE;
-
/* Switch to greeter if one open */
- greeter_session = find_resettable_greeter (seat);
+ GreeterSession *greeter_session = find_resettable_greeter (seat);
+ gboolean existing = FALSE;
if (greeter_session)
{
l_debug (seat, "Switching to existing greeter");
@@ -575,7 +547,7 @@ switch_to_greeter_from_failed_session (Seat *seat, Session *session)
{
greeter_session = create_greeter_session (seat);
}
- greeter = greeter_session_get_greeter (greeter_session);
+ Greeter *greeter = greeter_session_get_greeter (greeter_session);
if (session_get_is_guest (session))
greeter_set_hint (greeter, "select-guest", "true");
@@ -596,9 +568,7 @@ switch_to_greeter_from_failed_session (Seat *seat, Session *session)
session_set_display_server (SESSION (greeter_session), session_get_display_server (session));
else
{
- DisplayServer *display_server;
-
- display_server = create_display_server (seat, session);
+ DisplayServer *display_server = create_display_server (seat, session);
session_set_display_server (session, display_server);
if (!start_display_server (seat, display_server))
{
@@ -620,17 +590,11 @@ start_session (Seat *seat, Session *session)
/* Use system location for greeter log file */
if (IS_GREETER_SESSION (session))
{
- gchar *log_dir, *filename, *log_filename;
- gboolean backup_logs;
-
- log_dir = config_get_string (config_get_instance (), "LightDM", "log-directory");
- filename = g_strdup_printf ("%s-greeter.log", seat->priv->name);
- log_filename = g_build_filename (log_dir, filename, NULL);
- g_free (log_dir);
- g_free (filename);
- backup_logs = config_get_boolean (config_get_instance (), "LightDM", "backup-logs");
+ g_autofree gchar *log_dir = config_get_string (config_get_instance (), "LightDM", "log-directory");
+ g_autofree gchar *filename = g_strdup_printf ("%s-greeter.log", seat->priv->name);
+ g_autofree gchar *log_filename = g_build_filename (log_dir, filename, NULL);
+ gboolean backup_logs = config_get_boolean (config_get_instance (), "LightDM", "backup-logs");
session_set_log_file (session, log_filename, backup_logs ? LOG_MODE_BACKUP_AND_TRUNCATE : LOG_MODE_APPEND);
- g_free (log_filename);
}
if (session_start (session))
@@ -651,7 +615,6 @@ static void
run_session (Seat *seat, Session *session)
{
const gchar *script;
-
if (IS_GREETER_SESSION (session))
script = seat_get_string_property (seat, "greeter-setup-script");
else
@@ -694,12 +657,10 @@ run_session (Seat *seat, Session *session)
static Session *
find_user_session (Seat *seat, const gchar *username, Session *ignore_session)
{
- GList *link;
-
if (!username)
return NULL;
- for (link = seat->priv->sessions; link; link = link->next)
+ for (GList *link = seat->priv->sessions; link; link = link->next)
{
Session *session = link->data;
@@ -716,9 +677,7 @@ find_user_session (Seat *seat, const gchar *username, Session *ignore_session)
static void
greeter_active_username_changed_cb (Greeter *greeter, GParamSpec *pspec, Seat *seat)
{
- Session *session;
-
- session = find_user_session (seat, greeter_get_active_username (greeter), seat->priv->active_session);
+ Session *session = find_user_session (seat, greeter_get_active_username (greeter), seat->priv->active_session);
g_clear_object (&seat->priv->next_session);
seat->priv->next_session = session ? g_object_ref (session) : NULL;
@@ -731,9 +690,7 @@ session_authentication_complete_cb (Session *session, Seat *seat)
{
if (session_get_is_authenticated (session))
{
- Session *s;
-
- s = find_user_session (seat, session_get_username (session), session);
+ Session *s = find_user_session (seat, session_get_username (session), session);
if (s)
{
l_debug (seat, "Session authenticated, switching to existing user session");
@@ -761,8 +718,6 @@ session_authentication_complete_cb (Session *session, Seat *seat)
static void
session_stopped_cb (Session *session, Seat *seat)
{
- DisplayServer *display_server;
-
l_debug (seat, "Session stopped");
g_signal_handlers_disconnect_matched (session, G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, seat);
@@ -774,13 +729,12 @@ session_stopped_cb (Session *session, Seat *seat)
if (session == seat->priv->session_to_activate)
g_clear_object (&seat->priv->session_to_activate);
- display_server = session_get_display_server (session);
+ DisplayServer *display_server = session_get_display_server (session);
/* Cleanup */
if (!IS_GREETER_SESSION (session))
{
- const gchar *script;
- script = seat_get_string_property (seat, "session-cleanup-script");
+ const gchar *script = seat_get_string_property (seat, "session-cleanup-script");
if (script)
run_script (seat, display_server, script, session_get_user (session));
}
@@ -796,13 +750,13 @@ session_stopped_cb (Session *session, Seat *seat)
g_object_unref (session);
return;
}
-
+
/* If there is a pending replacement greeter, start it */
if (IS_GREETER_SESSION (session) && seat->priv->replacement_greeter)
{
GreeterSession *replacement_greeter = seat->priv->replacement_greeter;
seat->priv->replacement_greeter = NULL;
-
+
if (session_get_is_authenticated (SESSION (replacement_greeter)))
{
l_debug (seat, "Greeter stopped, running session");
@@ -821,9 +775,7 @@ session_stopped_cb (Session *session, Seat *seat)
can_share_display_server (seat, display_server) &&
greeter_get_start_session (greeter_session_get_greeter (GREETER_SESSION (session))))
{
- GList *link;
-
- for (link = seat->priv->sessions; link; link = link->next)
+ for (GList *link = seat->priv->sessions; link; link = link->next)
{
Session *s = link->data;
@@ -905,9 +857,7 @@ set_session_env (Session *session)
static Session *
create_session (Seat *seat, gboolean autostart)
{
- Session *session;
-
- session = SEAT_GET_CLASS (seat)->create_session (seat);
+ Session *session = SEAT_GET_CLASS (seat)->create_session (seat);
seat->priv->sessions = g_list_append (seat->priv->sessions, session);
if (autostart)
g_signal_connect (session, SESSION_SIGNAL_AUTHENTICATION_COMPLETE, G_CALLBACK (session_authentication_complete_cb), seat);
@@ -923,62 +873,53 @@ create_session (Seat *seat, gboolean autostart)
static gchar **
get_session_argv (Seat *seat, SessionConfig *session_config, const gchar *session_wrapper)
{
- gboolean result;
- int argc;
- gchar **argv, *path;
- g_autoptr(GError) error = NULL;
-
/* If configured, run sessions through a wrapper */
if (session_wrapper)
{
- argv = g_malloc (sizeof (gchar *) * 3);
- path = g_find_program_in_path (session_wrapper);
- argv[0] = path ? path : g_strdup (session_wrapper);
+ gchar **argv = g_malloc (sizeof (gchar *) * 3);
+ g_autofree gchar *path = g_find_program_in_path (session_wrapper);
+ argv[0] = path ? g_steal_pointer (&path) : g_strdup (session_wrapper);
argv[1] = g_strdup (session_config_get_command (session_config));
argv[2] = NULL;
return argv;
}
/* Split command into an array listing and make command absolute */
- result = g_shell_parse_argv (session_config_get_command (session_config), &argc, &argv, &error);
+ int argc;
+ g_auto(GStrv) argv = NULL;
+ g_autoptr(GError) error = NULL;
+ gboolean result = g_shell_parse_argv (session_config_get_command (session_config), &argc, &argv, &error);
if (error)
l_debug (seat, "Invalid session command '%s': %s", session_config_get_command (session_config), error->message);
if (!result)
return NULL;
- path = g_find_program_in_path (argv[0]);
+ g_autofree gchar *path = g_find_program_in_path (argv[0]);
if (path)
{
g_free (argv[0]);
- argv[0] = path;
+ argv[0] = g_steal_pointer (&path);
}
- return argv;
+ return g_steal_pointer (&argv);
}
static SessionConfig *
find_session_config (Seat *seat, const gchar *sessions_dir, const gchar *session_name)
{
- g_auto(GStrv) dirs = NULL;
- int i;
-
g_return_val_if_fail (sessions_dir != NULL, NULL);
g_return_val_if_fail (session_name != NULL, NULL);
- dirs = g_strsplit (sessions_dir, ":", -1);
- for (i = 0; dirs[i]; i++)
+ g_auto(GStrv) dirs = g_strsplit (sessions_dir, ":", -1);
+ for (int i = 0; dirs[i]; i++)
{
- g_autofree gchar *filename = NULL;
- g_autofree gchar *path = NULL;
const gchar *default_session_type = "x";
- SessionConfig *session_config;
- g_autoptr(GError) error = NULL;
-
if (strcmp (dirs[i], WAYLAND_SESSIONS_DIR) == 0)
default_session_type = "wayland";
- filename = g_strdup_printf ("%s.desktop", session_name);
- path = g_build_filename (dirs[i], filename, NULL);
- session_config = session_config_new_from_file (path, default_session_type, &error);
+ g_autofree gchar *filename = g_strdup_printf ("%s.desktop", session_name);
+ g_autofree gchar *path = g_build_filename (dirs[i], filename, NULL);
+ g_autoptr(GError) error = NULL;
+ SessionConfig *session_config = session_config_new_from_file (path, default_session_type, &error);
if (session_config)
return session_config;
}
@@ -991,19 +932,15 @@ find_session_config (Seat *seat, const gchar *sessions_dir, const gchar *session
static void
configure_session (Session *session, SessionConfig *config, const gchar *session_name, const gchar *language)
{
- gchar **desktop_names;
-
session_set_config (session, config);
session_set_env (session, "XDG_SESSION_DESKTOP", session_name);
session_set_env (session, "DESKTOP_SESSION", session_name);
session_set_env (session, "GDMSESSION", session_name);
- desktop_names = session_config_get_desktop_names (config);
+ gchar **desktop_names = session_config_get_desktop_names (config);
if (desktop_names)
{
- gchar *value;
- value = g_strjoinv (":", desktop_names);
+ g_autofree gchar *value = g_strjoinv (":", desktop_names);
session_set_env (session, "XDG_CURRENT_DESKTOP", value);
- g_free (value);
}
if (language && language[0] != '\0')
{
@@ -1015,24 +952,17 @@ configure_session (Session *session, SessionConfig *config, const gchar *session
static Session *
create_user_session (Seat *seat, const gchar *username, gboolean autostart)
{
- g_autoptr(User) user = NULL;
- g_autofree gchar *sessions_dir = NULL;
- const gchar *session_name, *language;
- g_autoptr(SessionConfig) session_config = NULL;
- g_autoptr(Session) session = NULL;
- g_auto(GStrv) argv = NULL;
-
l_debug (seat, "Creating user session");
/* Load user preferences */
- user = accounts_get_user_by_name (username);
+ g_autoptr(User) user = accounts_get_user_by_name (username);
if (!user)
{
l_debug (seat, "Can't login unknown user '%s'", username);
return NULL;
}
- session_name = user_get_xsession (user);
- language = user_get_language (user);
+ const gchar *session_name = user_get_xsession (user);
+ const gchar *language = user_get_language (user);
/* Override session for autologin if configured */
if (autostart)
@@ -1044,19 +974,19 @@ create_user_session (Seat *seat, const gchar *username, gboolean autostart)
if (!session_name)
session_name = seat_get_string_property (seat, "user-session");
- sessions_dir = config_get_string (config_get_instance (), "LightDM", "sessions-directory");
- session_config = find_session_config (seat, sessions_dir, session_name);
+ g_autofree gchar *sessions_dir = config_get_string (config_get_instance (), "LightDM", "sessions-directory");
+ g_autoptr(SessionConfig) session_config = find_session_config (seat, sessions_dir, session_name);
if (!session_config)
{
l_debug (seat, "Can't find session '%s'", session_name);
return NULL;
}
- session = create_session (seat, autostart);
+ g_autoptr(Session) session = create_session (seat, autostart);
configure_session (session, session_config, session_name, language);
session_set_username (session, username);
session_set_do_authenticate (session, TRUE);
- argv = get_session_argv (seat, session_config, seat_get_string_property (seat, "session-wrapper"));
+ g_auto(GStrv) argv = get_session_argv (seat, session_config, seat_get_string_property (seat, "session-wrapper"));
session_set_argv (session, argv);
return g_steal_pointer (&session);
@@ -1065,12 +995,10 @@ create_user_session (Seat *seat, const gchar *username, gboolean autostart)
static void
prepend_argv (gchar ***argv, const gchar *value)
{
- gchar **old_argv, **new_argv;
- gint i;
-
- old_argv = *argv;
- new_argv = g_malloc (sizeof (gchar *) * (g_strv_length (*argv) + 2));
+ gchar **old_argv = *argv;
+ gchar **new_argv = g_malloc (sizeof (gchar *) * (g_strv_length (*argv) + 2));
new_argv[0] = g_strdup (value);
+ gint i;
for (i = 0; old_argv[i]; i++)
new_argv[i + 1] = old_argv[i];
new_argv[i + 1] = NULL;
@@ -1082,36 +1010,28 @@ prepend_argv (gchar ***argv, const gchar *value)
static Session *
create_guest_session (Seat *seat, const gchar *session_name)
{
- const gchar *guest_wrapper;
- g_autofree gchar *sessions_dir = NULL;
- g_auto(GStrv) argv = NULL;
- g_autoptr(SessionConfig) session_config = NULL;
- g_autoptr(Session) session = NULL;
-
if (!session_name)
session_name = seat_get_string_property (seat, "guest-session");
if (!session_name)
session_name = seat_get_string_property (seat, "user-session");
- sessions_dir = config_get_string (config_get_instance (), "LightDM", "sessions-directory");
- session_config = find_session_config (seat, sessions_dir, session_name);
+ g_autofree gchar *sessions_dir = config_get_string (config_get_instance (), "LightDM", "sessions-directory");
+ g_autoptr(SessionConfig) session_config = find_session_config (seat, sessions_dir, session_name);
if (!session_config)
{
l_debug (seat, "Can't find session '%s'", session_name);
return NULL;
}
- session = create_session (seat, TRUE);
+ g_autoptr(Session) session = create_session (seat, TRUE);
configure_session (session, session_config, session_name, NULL);
session_set_do_authenticate (session, TRUE);
session_set_is_guest (session, TRUE);
- argv = get_session_argv (seat, session_config, seat_get_string_property (seat, "session-wrapper"));
- guest_wrapper = seat_get_string_property (seat, "guest-wrapper");
+ g_auto(GStrv) argv = get_session_argv (seat, session_config, seat_get_string_property (seat, "session-wrapper"));
+ const gchar *guest_wrapper = seat_get_string_property (seat, "guest-wrapper");
if (guest_wrapper)
{
- gchar *path;
- path = g_find_program_in_path (guest_wrapper);
+ g_autofree gchar *path = g_find_program_in_path (guest_wrapper);
prepend_argv (&argv, path ? path : guest_wrapper);
- g_free (path);
}
session_set_argv (session, argv);
@@ -1123,10 +1043,8 @@ create_guest_session (Seat *seat, const gchar *session_name)
static Session *
get_greeter_session (Seat *seat, Greeter *greeter)
{
- GList *link;
-
/* Stop any greeters */
- for (link = seat->priv->sessions; link; link = link->next)
+ for (GList *link = seat->priv->sessions; link; link = link->next)
{
Session *session = link->data;
@@ -1153,11 +1071,8 @@ greeter_create_session_cb (Greeter *greeter, Seat *seat)
static gboolean
greeter_start_session_cb (Greeter *greeter, SessionType type, const gchar *session_name, Seat *seat)
{
- Session *session, *existing_session, *greeter_session;
- const gchar *username;
- DisplayServer *display_server;
-
/* Get the session to use */
+ Session *session;
if (greeter_get_guest_authenticated (greeter))
{
session = g_object_ref (create_guest_session (seat, session_name));
@@ -1167,15 +1082,10 @@ greeter_start_session_cb (Greeter *greeter, SessionType type, const gchar *sessi
}
else
{
- const gchar *language = NULL;
- g_autoptr(SessionConfig) session_config = NULL;
- User *user;
- gchar *sessions_dir = NULL;
- g_auto(GStrv) argv = NULL;
-
session = greeter_take_authentication_session (greeter);
/* Get session command to run */
+ g_autofree gchar *sessions_dir = NULL;
switch (type)
{
case SESSION_TYPE_LOCAL:
@@ -1187,7 +1097,8 @@ greeter_start_session_cb (Greeter *greeter, SessionType type, const gchar *sessi
}
/* Load user preferences */
- user = session_get_user (session);
+ const gchar *language = NULL;
+ User *user = session_get_user (session);
if (user)
{
const gchar *autologin_username;
@@ -1207,8 +1118,7 @@ greeter_start_session_cb (Greeter *greeter, SessionType type, const gchar *sessi
if (user)
user_set_xsession (session_get_user (session), session_name);
- session_config = find_session_config (seat, sessions_dir, session_name);
- g_free (sessions_dir);
+ g_autoptr(SessionConfig) session_config = find_session_config (seat, sessions_dir, session_name);
if (!session_config)
{
l_debug (seat, "Can't find session '%s'", session_name);
@@ -1216,7 +1126,7 @@ greeter_start_session_cb (Greeter *greeter, SessionType type, const gchar *sessi
}
configure_session (session, session_config, session_name, language);
- argv = get_session_argv (seat, session_config, seat_get_string_property (seat, "session-wrapper"));
+ g_auto(GStrv) argv = get_session_argv (seat, session_config, seat_get_string_property (seat, "session-wrapper"));
session_set_argv (session, argv);
}
@@ -1225,8 +1135,8 @@ greeter_start_session_cb (Greeter *greeter, SessionType type, const gchar *sessi
seat->priv->session_to_activate = session;
/* Return to existing session if it is open */
- username = session_get_username (session);
- existing_session = find_user_session (seat, username, NULL);
+ const gchar *username = session_get_username (session);
+ Session *existing_session = find_user_session (seat, username, NULL);
if (existing_session && session != existing_session)
{
l_debug (seat, "Returning to existing user session %s", username);
@@ -1237,10 +1147,10 @@ greeter_start_session_cb (Greeter *greeter, SessionType type, const gchar *sessi
}
/* If can re-use the display server, stop the greeter first */
- greeter_session = get_greeter_session (seat, greeter);
+ Session *greeter_session = get_greeter_session (seat, greeter);
if (greeter_session)
{
- display_server = session_get_display_server (greeter_session);
+ DisplayServer *display_server = session_get_display_server (greeter_session);
if (display_server &&
!greeter_get_resettable (greeter) &&
can_share_display_server (seat, display_server) &&
@@ -1259,7 +1169,7 @@ greeter_start_session_cb (Greeter *greeter, SessionType type, const gchar *sessi
}
/* Otherwise start a new display server for this session */
- display_server = create_display_server (seat, session);
+ DisplayServer *display_server = create_display_server (seat, session);
session_set_display_server (session, display_server);
if (!start_display_server (seat, display_server))
{
@@ -1273,37 +1183,23 @@ greeter_start_session_cb (Greeter *greeter, SessionType type, const gchar *sessi
static GreeterSession *
create_greeter_session (Seat *seat)
{
- gchar *sessions_dir;
- g_auto(GStrv) argv = NULL;
- SessionConfig *session_config;
- GreeterSession *greeter_session;
- Greeter *greeter;
- const gchar *greeter_wrapper;
- const gchar *autologin_username;
- const gchar *autologin_session;
- int autologin_timeout;
- gboolean autologin_guest;
-
l_debug (seat, "Creating greeter session");
- sessions_dir = config_get_string (config_get_instance (), "LightDM", "greeters-directory");
- session_config = find_session_config (seat, sessions_dir, seat_get_string_property (seat, "greeter-session"));
- g_free (sessions_dir);
+ g_autofree gchar *sessions_dir = config_get_string (config_get_instance (), "LightDM", "greeters-directory");
+ g_autoptr(SessionConfig) session_config = find_session_config (seat, sessions_dir, seat_get_string_property (seat, "greeter-session"));
if (!session_config)
return NULL;
- argv = get_session_argv (seat, session_config, NULL);
- greeter_wrapper = seat_get_string_property (seat, "greeter-wrapper");
+ g_auto(GStrv) argv = get_session_argv (seat, session_config, NULL);
+ const gchar *greeter_wrapper = seat_get_string_property (seat, "greeter-wrapper");
if (greeter_wrapper)
{
- gchar *path;
- path = g_find_program_in_path (greeter_wrapper);
+ g_autofree gchar *path = g_find_program_in_path (greeter_wrapper);
prepend_argv (&argv, path ? path : greeter_wrapper);
- g_free (path);
}
- greeter_session = SEAT_GET_CLASS (seat)->create_greeter_session (seat);
- greeter = greeter_session_get_greeter (greeter_session);
+ GreeterSession *greeter_session = SEAT_GET_CLASS (seat)->create_greeter_session (seat);
+ Greeter *greeter = greeter_session_get_greeter (greeter_session);
session_set_config (SESSION (greeter_session), session_config);
seat->priv->sessions = g_list_append (seat->priv->sessions, SESSION (greeter_session));
g_signal_connect (greeter, GREETER_SIGNAL_ACTIVE_USERNAME_CHANGED, G_CALLBACK (greeter_active_username_changed_cb), seat);
@@ -1316,10 +1212,8 @@ create_greeter_session (Seat *seat)
session_set_pam_service (SESSION (greeter_session), seat_get_string_property (seat, "pam-greeter-service"));
if (getuid () == 0)
{
- gchar *greeter_user;
- greeter_user = config_get_string (config_get_instance (), "LightDM", "greeter-user");
+ g_autofree gchar *greeter_user = config_get_string (config_get_instance (), "LightDM", "greeter-user");
session_set_username (SESSION (greeter_session), greeter_user);
- g_free (greeter_user);
}
else
{
@@ -1339,21 +1233,18 @@ create_greeter_session (Seat *seat)
set_greeter_hints (seat, greeter);
/* Configure for automatic login */
- autologin_username = seat_get_string_property (seat, "autologin-user");
+ const gchar *autologin_username = seat_get_string_property (seat, "autologin-user");
if (g_strcmp0 (autologin_username, "") == 0)
autologin_username = NULL;
- autologin_session = seat_get_string_property (seat, "autologin-session");
+ const gchar *autologin_session = seat_get_string_property (seat, "autologin-session");
if (g_strcmp0 (autologin_session, "") == 0)
autologin_session = NULL;
- autologin_timeout = seat_get_integer_property (seat, "autologin-user-timeout");
- autologin_guest = seat_get_boolean_property (seat, "autologin-guest");
+ int autologin_timeout = seat_get_integer_property (seat, "autologin-user-timeout");
+ gboolean autologin_guest = seat_get_boolean_property (seat, "autologin-guest");
if (autologin_timeout > 0)
{
- gchar *value;
-
- value = g_strdup_printf ("%d", autologin_timeout);
+ g_autofree gchar *value = g_strdup_printf ("%d", autologin_timeout);
greeter_set_hint (greeter, "autologin-timeout", value);
- g_free (value);
if (autologin_username)
greeter_set_hint (greeter, "autologin-user", autologin_username);
if (autologin_session)
@@ -1368,9 +1259,7 @@ create_greeter_session (Seat *seat)
static Session *
find_session_for_display_server (Seat *seat, DisplayServer *display_server)
{
- GList *link;
-
- for (link = seat->priv->sessions; link; link = link->next)
+ for (GList *link = seat->priv->sessions; link; link = link->next)
{
Session *session = link->data;
@@ -1386,11 +1275,8 @@ find_session_for_display_server (Seat *seat, DisplayServer *display_server)
static void
display_server_ready_cb (DisplayServer *display_server, Seat *seat)
{
- const gchar *script;
- Session *session;
-
/* Run setup script */
- script = seat_get_string_property (seat, "display-setup-script");
+ const gchar *script = seat_get_string_property (seat, "display-setup-script");
if (script && !run_script (seat, display_server, script, NULL))
{
l_debug (seat, "Stopping display server due to failed setup script");
@@ -1401,7 +1287,7 @@ display_server_ready_cb (DisplayServer *display_server, Seat *seat)
emit_upstart_signal ("login-session-start");
/* Start the session waiting for this display server */
- session = find_session_for_display_server (seat, display_server);
+ Session *session = find_session_for_display_server (seat, display_server);
if (session)
{
if (session_get_is_authenticated (session))
@@ -1425,16 +1311,14 @@ display_server_ready_cb (DisplayServer *display_server, Seat *seat)
static DisplayServer *
create_display_server (Seat *seat, Session *session)
{
- DisplayServer *display_server;
-
l_debug (seat, "Creating display server of type %s", session_get_session_type (session));
- display_server = SEAT_GET_CLASS (seat)->create_display_server (seat, session);
+ DisplayServer *display_server = SEAT_GET_CLASS (seat)->create_display_server (seat, session);
if (!display_server)
return NULL;
/* Remember this display server */
- if (!g_list_find (seat->priv->display_servers, display_server))
+ if (!g_list_find (seat->priv->display_servers, display_server))
{
seat->priv->display_servers = g_list_append (seat->priv->display_servers, display_server);
g_signal_connect (display_server, DISPLAY_SERVER_SIGNAL_READY, G_CALLBACK (display_server_ready_cb), seat);
@@ -1459,16 +1343,13 @@ start_display_server (Seat *seat, DisplayServer *display_server)
gboolean
seat_switch_to_greeter (Seat *seat)
{
- GreeterSession *greeter_session;
- DisplayServer *display_server;
-
g_return_val_if_fail (seat != NULL, FALSE);
if (!seat_get_can_switch (seat) && seat->priv->sessions != NULL)
return FALSE;
/* Switch to greeter if one open */
- greeter_session = find_greeter_session (seat);
+ GreeterSession *greeter_session = find_greeter_session (seat);
if (greeter_session)
{
l_debug (seat, "Switching to existing greeter");
@@ -1483,7 +1364,7 @@ seat_switch_to_greeter (Seat *seat)
g_clear_object (&seat->priv->session_to_activate);
seat->priv->session_to_activate = g_object_ref (SESSION (greeter_session));
- display_server = create_display_server (seat, SESSION (greeter_session));
+ DisplayServer *display_server = create_display_server (seat, SESSION (greeter_session));
if (!display_server) {
g_clear_object (&seat->priv->session_to_activate);
return FALSE;
@@ -1496,17 +1377,10 @@ seat_switch_to_greeter (Seat *seat)
static void
switch_authentication_complete_cb (Session *session, Seat *seat)
{
- GreeterSession *greeter_session;
- Greeter *greeter;
- DisplayServer *display_server;
- gboolean existing = FALSE;
-
/* If authenticated, then unlock existing session or start new one */
if (session_get_is_authenticated (session))
{
- Session *s;
-
- s = find_user_session (seat, session_get_username (session), session);
+ Session *s = find_user_session (seat, session_get_username (session), session);
if (s)
{
l_debug (seat, "Session authenticated, switching to existing user session");
@@ -1519,7 +1393,7 @@ switch_authentication_complete_cb (Session *session, Seat *seat)
l_debug (seat, "Session authenticated, starting display server");
g_clear_object (&seat->priv->session_to_activate);
seat->priv->session_to_activate = g_object_ref (session);
- display_server = create_display_server (seat, session);
+ DisplayServer *display_server = create_display_server (seat, session);
session_set_display_server (session, display_server);
start_display_server (seat, display_server);
}
@@ -1530,7 +1404,8 @@ switch_authentication_complete_cb (Session *session, Seat *seat)
session_stop (session);
/* See if we already have a greeter up and reuse it if so */
- greeter_session = find_resettable_greeter (seat);
+ GreeterSession *greeter_session = find_resettable_greeter (seat);
+ gboolean existing = FALSE;
if (greeter_session)
{
l_debug (seat, "Switching to existing greeter to authenticate session");
@@ -1542,7 +1417,7 @@ switch_authentication_complete_cb (Session *session, Seat *seat)
l_debug (seat, "Starting greeter to authenticate session");
greeter_session = create_greeter_session (seat);
}
- greeter = greeter_session_get_greeter (greeter_session);
+ Greeter *greeter = greeter_session_get_greeter (greeter_session);
if (session_get_is_guest (session))
greeter_set_hint (greeter, "select-guest", "true");
@@ -1559,7 +1434,7 @@ switch_authentication_complete_cb (Session *session, Seat *seat)
g_clear_object (&seat->priv->session_to_activate);
seat->priv->session_to_activate = g_object_ref (SESSION (greeter_session));
- display_server = create_display_server (seat, SESSION (greeter_session));
+ DisplayServer *display_server = create_display_server (seat, SESSION (greeter_session));
session_set_display_server (SESSION (greeter_session), display_server);
start_display_server (seat, display_server);
}
@@ -1568,8 +1443,6 @@ switch_authentication_complete_cb (Session *session, Seat *seat)
gboolean
seat_switch_to_user (Seat *seat, const gchar *username, const gchar *session_name)
{
- Session *session;
-
g_return_val_if_fail (seat != NULL, FALSE);
g_return_val_if_fail (username != NULL, FALSE);
@@ -1577,7 +1450,7 @@ seat_switch_to_user (Seat *seat, const gchar *username, const gchar *session_nam
return FALSE;
/* If we're already on this session, then ignore */
- session = find_user_session (seat, username, NULL);
+ Session *session = find_user_session (seat, username, NULL);
if (session && session == seat->priv->active_session)
return TRUE;
@@ -1594,9 +1467,7 @@ seat_switch_to_user (Seat *seat, const gchar *username, const gchar *session_nam
static Session *
find_guest_session (Seat *seat)
{
- GList *link;
-
- for (link = seat->priv->sessions; link; link = link->next)
+ for (GList *link = seat->priv->sessions; link; link = link->next)
{
Session *session = link->data;
if (!session_get_is_stopping (session) && session_get_is_guest (session))
@@ -1609,16 +1480,13 @@ find_guest_session (Seat *seat)
gboolean
seat_switch_to_guest (Seat *seat, const gchar *session_name)
{
- Session *session;
- DisplayServer *display_server;
-
g_return_val_if_fail (seat != NULL, FALSE);
if (!seat_get_can_switch (seat) || !seat_get_allow_guest (seat))
return FALSE;
/* Switch to session if one open */
- session = find_guest_session (seat);
+ Session *session = find_guest_session (seat);
if (session)
{
l_debug (seat, "Switching to existing guest account %s", session_get_username (session));
@@ -1630,7 +1498,7 @@ seat_switch_to_guest (Seat *seat, const gchar *session_name)
if (!session)
return FALSE;
- display_server = create_display_server (seat, session);
+ DisplayServer *display_server = create_display_server (seat, session);
g_clear_object (&seat->priv->session_to_activate);
seat->priv->session_to_activate = g_object_ref (session);
@@ -1643,12 +1511,6 @@ seat_switch_to_guest (Seat *seat, const gchar *session_name)
gboolean
seat_lock (Seat *seat, const gchar *username)
{
- GreeterSession *greeter_session;
- Greeter *greeter;
- DisplayServer *display_server = NULL;
- gboolean reset_existing = FALSE;
- gboolean reuse_xserver = FALSE;
-
g_return_val_if_fail (seat != NULL, FALSE);
if (!seat_get_can_switch (seat))
@@ -1659,7 +1521,10 @@ seat_lock (Seat *seat, const gchar *username)
l_debug (seat, "Locking");
/* Switch to greeter we can reuse */
- greeter_session = find_resettable_greeter (seat);
+ gboolean reset_existing = FALSE;
+ gboolean reuse_xserver = FALSE;
+ DisplayServer *display_server = NULL;
+ GreeterSession *greeter_session = find_resettable_greeter (seat);
if (greeter_session)
{
l_debug (seat, "Switching to existing greeter");
@@ -1680,12 +1545,12 @@ seat_lock (Seat *seat, const gchar *username)
}
reuse_xserver = TRUE;
}
-
+
greeter_session = create_greeter_session (seat);
if (!greeter_session)
return FALSE;
}
- greeter = greeter_session_get_greeter (greeter_session);
+ Greeter *greeter = greeter_session_get_greeter (greeter_session);
greeter_set_hint (greeter, "lock-screen", "true");
if (username)
@@ -1745,21 +1610,16 @@ seat_real_setup (Seat *seat)
static gboolean
seat_real_start (Seat *seat)
{
- const gchar *autologin_username;
- int autologin_timeout;
- gboolean autologin_guest;
- gboolean autologin_in_background;
- Session *session = NULL, *background_session = NULL;
-
/* Get autologin settings */
- autologin_username = seat_get_string_property (seat, "autologin-user");
+ const gchar *autologin_username = seat_get_string_property (seat, "autologin-user");
if (g_strcmp0 (autologin_username, "") == 0)
autologin_username = NULL;
- autologin_timeout = seat_get_integer_property (seat, "autologin-user-timeout");
- autologin_guest = seat_get_boolean_property (seat, "autologin-guest");
- autologin_in_background = seat_get_boolean_property (seat, "autologin-in-background");
+ int autologin_timeout = seat_get_integer_property (seat, "autologin-user-timeout");
+ gboolean autologin_guest = seat_get_boolean_property (seat, "autologin-guest");
+ gboolean autologin_in_background = seat_get_boolean_property (seat, "autologin-in-background");
/* Autologin if configured */
+ Session *session = NULL, *background_session = NULL;
if (autologin_timeout == 0 || autologin_in_background)
{
if (autologin_guest)
@@ -1779,12 +1639,10 @@ seat_real_start (Seat *seat)
if (session)
{
- DisplayServer *display_server;
-
g_clear_object (&seat->priv->session_to_activate);
seat->priv->session_to_activate = g_object_ref (session);
- display_server = create_display_server (seat, session);
+ DisplayServer *display_server = create_display_server (seat, session);
session_set_display_server (session, display_server);
if (!display_server || !start_display_server (seat, display_server))
{
@@ -1800,10 +1658,7 @@ seat_real_start (Seat *seat)
/* Fallback to a greeter */
if (!session)
{
- GreeterSession *greeter_session;
- DisplayServer *display_server;
-
- greeter_session = create_greeter_session (seat);
+ GreeterSession *greeter_session = create_greeter_session (seat);
if (!greeter_session)
{
l_debug (seat, "Failed to create greeter session");
@@ -1814,7 +1669,7 @@ seat_real_start (Seat *seat)
session = SESSION (greeter_session);
seat->priv->session_to_activate = g_object_ref (session);
- display_server = create_display_server (seat, session);
+ DisplayServer *display_server = create_display_server (seat, session);
session_set_display_server (session, display_server);
if (!display_server || !start_display_server (seat, display_server))
{
@@ -1836,9 +1691,7 @@ seat_real_start (Seat *seat)
/* Start background session */
if (background_session)
{
- DisplayServer *background_display_server;
-
- background_display_server = create_display_server (seat, background_session);
+ DisplayServer *background_display_server = create_display_server (seat, background_session);
session_set_display_server (background_session, background_display_server);
if (!start_display_server (seat, background_display_server))
l_warning (seat, "Failed to start display server for background session");
@@ -1856,14 +1709,11 @@ seat_real_create_display_server (Seat *seat, Session *session)
static gboolean
seat_real_display_server_is_used (Seat *seat, DisplayServer *display_server)
{
- GList *link;
-
- for (link = seat->priv->sessions; link; link = link->next)
+ for (GList *link = seat->priv->sessions; link; link = link->next)
{
Session *session = link->data;
- DisplayServer *d;
- d = session_get_display_server (session);
+ DisplayServer *d = session_get_display_server (session);
if (!d)
continue;
@@ -1889,9 +1739,7 @@ create_session_cb (Greeter *greeter, Seat *seat)
static Greeter *
create_greeter_cb (Session *session, Seat *seat)
{
- Greeter *greeter;
-
- greeter = greeter_new ();
+ g_autoptr(Greeter) greeter = greeter_new ();
greeter_set_pam_services (greeter,
seat_get_string_property (seat, "pam-service"),
@@ -1903,18 +1751,16 @@ create_greeter_cb (Session *session, Seat *seat)
greeter_set_allow_guest (greeter, seat_get_allow_guest (seat));
set_greeter_hints (seat, greeter);
- return greeter;
+ return g_steal_pointer (&greeter);
}
static Session *
seat_real_create_session (Seat *seat)
{
- Session *session;
-
- session = session_new ();
+ g_autoptr(Session) session = session_new ();
g_signal_connect (session, SESSION_SIGNAL_CREATE_GREETER, G_CALLBACK (create_greeter_cb), seat);
- return session;
+ return g_steal_pointer (&session);
}
static void
@@ -1936,18 +1782,16 @@ seat_real_get_active_session (Seat *seat)
static void
seat_real_stop (Seat *seat)
{
- GList *list, *link;
-
check_stopped (seat);
if (seat->priv->stopped)
return;
/* Stop all the display servers and sessions on the seat. Copy the list as
* it might be modified if a display server / session stops during this loop */
- list = g_list_copy (seat->priv->display_servers);
- for (link = list; link; link = link->next)
+ GList *list = g_list_copy (seat->priv->display_servers);
+ for (GList *link = list; link; link = link->next)
g_object_ref (link->data);
- for (link = list; link; link = link->next)
+ for (GList *link = list; link; link = link->next)
{
DisplayServer *display_server = link->data;
if (!display_server_get_is_stopping (display_server))
@@ -1958,9 +1802,9 @@ seat_real_stop (Seat *seat)
}
g_list_free_full (list, g_object_unref);
list = g_list_copy (seat->priv->sessions);
- for (link = list; link; link = link->next)
+ for (GList *link = list; link; link = link->next)
g_object_ref (link->data);
- for (link = list; link; link = link->next)
+ for (GList *link = list; link; link = link->next)
{
Session *session = link->data;
if (!session_get_is_stopping (session))
@@ -1984,17 +1828,16 @@ static void
seat_finalize (GObject *object)
{
Seat *self = SEAT (object);
- GList *link;
g_free (self->priv->name);
g_hash_table_unref (self->priv->properties);
- for (link = self->priv->display_servers; link; link = link->next)
+ for (GList *link = self->priv->display_servers; link; link = link->next)
{
DisplayServer *display_server = link->data;
g_signal_handlers_disconnect_matched (display_server, G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, self);
}
g_list_free_full (self->priv->display_servers, g_object_unref);
- for (link = self->priv->sessions; link; link = link->next)
+ for (GList *link = self->priv->sessions; link; link = link->next)
{
Session *session = link->data;
g_signal_handlers_disconnect_matched (session, G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, self);
@@ -2016,7 +1859,7 @@ seat_class_init (SeatClass *klass)
klass->setup = seat_real_setup;
klass->start = seat_real_start;
klass->create_display_server = seat_real_create_display_server;
- klass->display_server_is_used = seat_real_display_server_is_used;
+ klass->display_server_is_used = seat_real_display_server_is_used;
klass->create_greeter_session = seat_real_create_greeter_session;
klass->create_session = seat_real_create_session;
klass->set_active_session = seat_real_set_active_session;
diff --git a/src/session-child.c b/src/session-child.c
index d4035366..5d77c5a5 100644
--- a/src/session-child.c
+++ b/src/session-child.c
@@ -56,9 +56,7 @@ write_data (const void *buf, size_t count)
static void
write_string (const char *value)
{
- int length;
-
- length = value ? strlen (value) : -1;
+ int length = value ? strlen (value) : -1;
write_data (&length, sizeof (length));
if (value)
write_data (value, sizeof (char) * length);
@@ -67,9 +65,7 @@ write_string (const char *value)
static ssize_t
read_data (void *buf, size_t count)
{
- ssize_t n_read;
-
- n_read = read (from_daemon_output, buf, count);
+ ssize_t n_read = read (from_daemon_output, buf, count);
if (n_read < 0)
g_printerr ("Error reading from daemon: %s\n", strerror (errno));
@@ -80,8 +76,6 @@ static gchar *
read_string_full (void* (*alloc_fn)(size_t n))
{
int length;
- char *value;
-
if (read_data (&length, sizeof (length)) <= 0)
return NULL;
if (length < 0)
@@ -92,7 +86,7 @@ read_string_full (void* (*alloc_fn)(size_t n))
return NULL;
}
- value = (*alloc_fn) (sizeof (char) * (length + 1));
+ gchar *value = (*alloc_fn) (sizeof (gchar) * (length + 1));
read_data (value, length);
value[length] = '\0';
@@ -108,11 +102,6 @@ read_string (void)
static int
pam_conv_cb (int msg_length, const struct pam_message **msg, struct pam_response **resp, void *app_data)
{
- int i, error;
- gboolean auth_complete = FALSE;
- struct pam_response *response;
- gchar *username = NULL;
-
/* FIXME: We don't support communication after pam_authenticate completes */
if (authentication_complete)
return PAM_SUCCESS;
@@ -120,7 +109,7 @@ pam_conv_cb (int msg_length, const struct pam_message **msg, struct pam_response
/* Cancel authentication if requiring input */
if (!is_interactive)
{
- for (i = 0; i < msg_length; i++)
+ for (int i = 0; i < msg_length; i++)
{
if (msg[i]->msg_style == PAM_PROMPT_ECHO_ON || msg[i]->msg_style == PAM_PROMPT_ECHO_OFF)
{
@@ -134,13 +123,15 @@ pam_conv_cb (int msg_length, const struct pam_message **msg, struct pam_response
}
/* Check if we changed user */
+ gchar *username = NULL;
pam_get_item (pam_handle, PAM_USER, (const void **) &username);
/* Notify the daemon */
write_string (username);
+ gboolean auth_complete = FALSE;
write_data (&auth_complete, sizeof (auth_complete));
write_data (&msg_length, sizeof (msg_length));
- for (i = 0; i < msg_length; i++)
+ for (int i = 0; i < msg_length; i++)
{
const struct pam_message *m = msg[i];
write_data (&m->msg_style, sizeof (m->msg_style));
@@ -148,11 +139,12 @@ pam_conv_cb (int msg_length, const struct pam_message **msg, struct pam_response
}
/* Get response */
+ int error;
read_data (&error, sizeof (error));
if (error != PAM_SUCCESS)
return error;
- response = calloc (msg_length, sizeof (struct pam_response));
- for (i = 0; i < msg_length; i++)
+ struct pam_response *response = calloc (msg_length, sizeof (struct pam_response));
+ for (int i = 0; i < msg_length; i++)
{
struct pam_response *r = &response[i];
// callers of this function inside pam will expect to be able to call
@@ -178,25 +170,23 @@ signal_cb (int signum)
static XAuthority *
read_xauth (void)
{
- gchar *x_authority_name;
- guint16 x_authority_family;
- guint8 *x_authority_address;
- gsize x_authority_address_length;
- gchar *x_authority_number;
- guint8 *x_authority_data;
- gsize x_authority_data_length;
-
- x_authority_name = read_string ();
+ g_autofree gchar *x_authority_name = read_string ();
if (!x_authority_name)
return NULL;
+ guint16 x_authority_family;
read_data (&x_authority_family, sizeof (x_authority_family));
+
+ gsize x_authority_address_length;
read_data (&x_authority_address_length, sizeof (x_authority_address_length));
- x_authority_address = g_malloc (x_authority_address_length);
+ g_autofree guint8 *x_authority_address = g_malloc (x_authority_address_length);
read_data (x_authority_address, x_authority_address_length);
- x_authority_number = read_string ();
+
+ g_autofree gchar *x_authority_number = read_string ();
+
+ gsize x_authority_data_length;
read_data (&x_authority_data_length, sizeof (x_authority_data_length));
- x_authority_data = g_malloc (x_authority_data_length);
+ g_autofree guint8 *x_authority_data = g_malloc (x_authority_data_length);
read_data (x_authority_data, x_authority_data_length);
return x_authority_new (x_authority_family, x_authority_address, x_authority_address_length, x_authority_number, x_authority_name, x_authority_data, x_authority_data_length);
@@ -207,7 +197,6 @@ static void
updwtmpx (const gchar *wtmp_file, struct utmpx *ut)
{
struct utmp u;
-
memset (&u, 0, sizeof (u));
u.ut_type = ut->ut_type;
u.ut_pid = ut->ut_pid;
@@ -229,20 +218,18 @@ updwtmpx (const gchar *wtmp_file, struct utmpx *ut)
static void
audit_event (int type, const gchar *username, uid_t uid, const gchar *remote_host_name, const gchar *tty, gboolean success)
{
- int auditfd, result;
- const char *op = NULL;
-
- auditfd = audit_open ();
+ int auditfd = audit_open ();
if (auditfd < 0) {
g_printerr ("Error opening audit socket: %s\n", strerror (errno));
return;
}
+ const char *op = NULL;
if (type == AUDIT_USER_LOGIN)
op = "login";
else if (type == AUDIT_USER_LOGOUT)
op = "logout";
- result = success == TRUE ? 1 : 0;
+ int result = success == TRUE ? 1 : 0;
if (audit_log_acct_message (auditfd, type, NULL, op, username, uid, remote_host_name, NULL, tty, result) <= 0)
g_printerr ("Error writing audit message: %s\n", strerror (errno));
@@ -254,52 +241,6 @@ audit_event (int type, const gchar *username, uid_t uid, const gchar *remote_hos
int
session_child_run (int argc, char **argv)
{
- struct pam_conv conversation = { pam_conv_cb, NULL };
- int i, version, fd, result;
- gboolean auth_complete = TRUE;
- User *user = NULL;
- g_autofree gchar *log_filename = NULL;
- LogMode log_mode = LOG_MODE_BACKUP_AND_TRUNCATE;
- gsize env_length;
- gsize command_argc;
- gchar **command_argv;
- GVariantBuilder ck_parameters;
- int return_code;
- int authentication_result;
- gchar *authentication_result_string;
- gchar *service;
- gchar *username;
- gchar *tty;
- gchar *remote_host_name;
- gchar *xdisplay;
- XAuthority *x_authority = NULL;
- gchar *x_authority_filename;
- GDBusConnection *bus;
- const gchar *login1_session_id = NULL;
- gchar *console_kit_cookie = NULL;
- const gchar *locale_value;
- static const gchar * const locale_var_names[] = {
- "LC_PAPER",
- "LC_NAME",
- "LC_ADDRESS",
- "LC_TELEPHONE",
- "LC_MEASUREMENT",
- "LC_IDENTIFICATION",
- "LC_COLLATE",
- "LC_CTYPE",
- "LC_MONETARY",
- "LC_NUMERIC",
- "LC_TIME",
- "LC_MESSAGES",
- "LC_ALL",
- "LANG",
- NULL
- };
- gid_t gid;
- uid_t uid;
- const gchar *home_directory;
- g_autoptr(GError) error = NULL;
-
#if !defined(GLIB_VERSION_2_36)
g_type_init ();
#endif
@@ -311,7 +252,7 @@ session_child_run (int argc, char **argv)
}
/* Make input non-blocking */
- fd = open ("/dev/null", O_RDONLY);
+ int fd = open ("/dev/null", O_RDONLY);
dup2 (fd, STDIN_FILENO);
close (fd);
@@ -339,20 +280,22 @@ session_child_run (int argc, char **argv)
fcntl (to_daemon_input, F_SETFD, FD_CLOEXEC);
/* Read a version number so we can handle upgrades (i.e. a newer version of session child is run for an old daemon */
+ int version;
read_data (&version, sizeof (version));
- service = read_string ();
- username = read_string ();
+ g_autofree gchar *service = read_string ();
+ g_autofree gchar *username = read_string ();
read_data (&do_authenticate, sizeof (do_authenticate));
read_data (&is_interactive, sizeof (is_interactive));
- read_string (); /* Used to be class, now we just use the environment variable */
- tty = read_string ();
- remote_host_name = read_string ();
- xdisplay = read_string ();
- x_authority = read_xauth ();
+ g_autofree gchar *unused_class = read_string (); /* Used to be class, now we just use the environment variable */
+ g_autofree gchar *tty = read_string ();
+ g_autofree gchar *remote_host_name = read_string ();
+ g_autofree gchar *xdisplay = read_string ();
+ g_autoptr(XAuthority) x_authority = read_xauth ();
/* Setup PAM */
- result = pam_start (service, username, &conversation, &pam_handle);
+ struct pam_conv conversation = { pam_conv_cb, NULL };
+ int result = pam_start (service, username, &conversation, &pam_handle);
if (result != PAM_SUCCESS)
{
g_printerr ("Failed to start PAM: %s", pam_strerror (NULL, result));
@@ -382,6 +325,7 @@ session_child_run (int argc, char **argv)
#endif
/* Authenticate */
+ int authentication_result = PAM_SUCCESS;
if (do_authenticate)
{
const gchar *new_username;
@@ -436,6 +380,7 @@ session_child_run (int argc, char **argv)
authentication_result = PAM_SUCCESS;
authentication_complete = TRUE;
+ User *user = NULL;
if (authentication_result == PAM_SUCCESS)
{
/* Fail authentication if user doesn't actually exist */
@@ -455,8 +400,26 @@ session_child_run (int argc, char **argv)
pam_putenv (pam_handle, g_strdup_printf ("SHELL=%s", user_get_shell (user)));
/* Let the greeter and user session inherit the system default locale */
- for (i = 0; locale_var_names[i] != NULL; i++)
+ static const gchar * const locale_var_names[] = {
+ "LC_PAPER",
+ "LC_NAME",
+ "LC_ADDRESS",
+ "LC_TELEPHONE",
+ "LC_MEASUREMENT",
+ "LC_IDENTIFICATION",
+ "LC_COLLATE",
+ "LC_CTYPE",
+ "LC_MONETARY",
+ "LC_NUMERIC",
+ "LC_TIME",
+ "LC_MESSAGES",
+ "LC_ALL",
+ "LANG",
+ NULL
+ };
+ for (int i = 0; locale_var_names[i] != NULL; i++)
{
+ const gchar *locale_value;
if ((locale_value = g_getenv (locale_var_names[i])) != NULL)
{
g_autofree gchar *locale_var = g_strdup_printf ("%s=%s", locale_var_names[i], locale_value);
@@ -466,10 +429,11 @@ session_child_run (int argc, char **argv)
}
}
- authentication_result_string = g_strdup (pam_strerror (pam_handle, authentication_result));
+ g_autofree gchar *authentication_result_string = g_strdup (pam_strerror (pam_handle, authentication_result));
/* Report authentication result */
write_string (username);
+ gboolean auth_complete = TRUE;
write_data (&auth_complete, sizeof (auth_complete));
write_data (&authentication_result, sizeof (authentication_result));
write_string (authentication_result_string);
@@ -490,7 +454,8 @@ session_child_run (int argc, char **argv)
}
/* Get the command to run (blocks) */
- log_filename = read_string ();
+ g_autofree gchar *log_filename = read_string ();
+ LogMode log_mode = LOG_MODE_BACKUP_AND_TRUNCATE;
if (version >= 3)
read_data (&log_mode, sizeof (log_mode));
if (version >= 1)
@@ -498,7 +463,7 @@ session_child_run (int argc, char **argv)
g_free (tty);
tty = read_string ();
}
- x_authority_filename = read_string ();
+ g_autofree gchar *x_authority_filename = read_string ();
if (version >= 1)
{
g_free (xdisplay);
@@ -506,11 +471,14 @@ session_child_run (int argc, char **argv)
g_clear_object (&x_authority);
x_authority = read_xauth ();
}
+ gsize env_length;
read_data (&env_length, sizeof (env_length));
- for (i = 0; i < env_length; i++)
+ for (int i = 0; i < env_length; i++)
pam_putenv (pam_handle, read_string ());
+ gsize command_argc;
read_data (&command_argc, sizeof (command_argc));
- command_argv = g_malloc (sizeof (gchar *) * (command_argc + 1));
+ g_auto(GStrv) command_argv = g_malloc (sizeof (gchar *) * (command_argc + 1));
+ int i;
for (i = 0; i < command_argc; i++)
command_argv[i] = read_string ();
command_argv[i] = NULL;
@@ -528,7 +496,7 @@ session_child_run (int argc, char **argv)
{
if (g_path_is_absolute (log_filename))
{
- fd = log_file_open (log_filename, log_mode);
+ int fd = log_file_open (log_filename, log_mode);
dup2 (fd, STDERR_FILENO);
close (fd);
g_clear_pointer (&log_filename, g_free);
@@ -536,7 +504,7 @@ session_child_run (int argc, char **argv)
}
else
{
- fd = open ("/dev/null", O_WRONLY);
+ int fd = open ("/dev/null", O_WRONLY);
dup2 (fd, STDERR_FILENO);
close (fd);
}
@@ -570,7 +538,8 @@ session_child_run (int argc, char **argv)
}
/* Open a connection to the system bus for ConsoleKit - we must keep it open or CK will close the session */
- bus = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, &error);
+ g_autoptr(GError) error = NULL;
+ g_autoptr(GDBusConnection) bus = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, &error);
if (error)
g_printerr ("Unable to contact system bus: %s", error->message);
if (!bus)
@@ -580,7 +549,8 @@ session_child_run (int argc, char **argv)
}
/* Check what logind session we are, or fallback to ConsoleKit */
- login1_session_id = pam_getenv (pam_handle, "XDG_SESSION_ID");
+ const gchar *login1_session_id = pam_getenv (pam_handle, "XDG_SESSION_ID");
+ g_autofree gchar *console_kit_cookie = NULL;
if (login1_session_id)
{
write_string (login1_session_id);
@@ -589,6 +559,7 @@ session_child_run (int argc, char **argv)
}
else
{
+ GVariantBuilder ck_parameters;
g_variant_builder_init (&ck_parameters, G_VARIANT_TYPE ("(a(sv))"));
g_variant_builder_open (&ck_parameters, G_VARIANT_TYPE ("a(sv)"));
g_variant_builder_add (&ck_parameters, "(sv)", "unix-user", g_variant_new_int32 (user_get_uid (user)));
@@ -630,14 +601,12 @@ session_child_run (int argc, char **argv)
/* Write X authority */
if (x_authority)
{
- gboolean drop_privileges, result;
- g_autofree gchar *value = NULL;
- g_autoptr(GError) error = NULL;
-
- drop_privileges = geteuid () == 0;
+ gboolean drop_privileges = geteuid () == 0;
if (drop_privileges)
privileges_drop (user_get_uid (user), user_get_gid (user));
- result = x_authority_write (x_authority, XAUTH_WRITE_MODE_REPLACE, x_authority_filename, &error);
+
+ g_autoptr(GError) error = NULL;
+ gboolean result = x_authority_write (x_authority, XAUTH_WRITE_MODE_REPLACE, x_authority_filename, &error);
if (drop_privileges)
privileges_reclaim ();
@@ -649,7 +618,7 @@ session_child_run (int argc, char **argv)
return EXIT_FAILURE;
}
- value = g_strdup_printf ("XAUTHORITY=%s", x_authority_filename);
+ g_autofree gchar *value = g_strdup_printf ("XAUTHORITY=%s", x_authority_filename);
pam_putenv (pam_handle, value);
}
@@ -657,9 +626,9 @@ session_child_run (int argc, char **argv)
signal (SIGTERM, signal_cb);
/* Run the command as the authenticated user */
- uid = user_get_uid (user);
- gid = user_get_gid (user);
- home_directory = user_get_home_directory (user);
+ uid_t uid = user_get_uid (user);
+ gid_t gid = user_get_gid (user);
+ const gchar *home_directory = user_get_home_directory (user);
child_pid = fork ();
if (child_pid == 0)
{
@@ -686,7 +655,7 @@ session_child_run (int argc, char **argv)
if (log_filename)
{
- fd = log_file_open (log_filename, log_mode);
+ int fd = log_file_open (log_filename, log_mode);
if (fd >= 0)
{
dup2 (fd, STDERR_FILENO);
@@ -703,6 +672,7 @@ session_child_run (int argc, char **argv)
}
/* Bail out if failed to fork */
+ int return_code = EXIT_SUCCESS;
if (child_pid < 0)
{
g_printerr ("Failed to fork session child process: %s\n", strerror (errno));
@@ -712,14 +682,10 @@ session_child_run (int argc, char **argv)
/* Wait for the command to complete (blocks) */
if (child_pid > 0)
{
- int child_status;
-
/* Log to utmp */
if (g_strcmp0 (pam_getenv (pam_handle, "XDG_SESSION_CLASS"), "greeter") != 0)
{
struct utmpx ut;
- struct timeval tv;
-
memset (&ut, 0, sizeof (ut));
ut.ut_type = USER_PROCESS;
ut.ut_pid = child_pid;
@@ -732,6 +698,7 @@ session_child_run (int argc, char **argv)
strncpy (ut.ut_host, xdisplay, sizeof (ut.ut_host));
else if (remote_host_name)
strncpy (ut.ut_host, remote_host_name, sizeof (ut.ut_host));
+ struct timeval tv;
gettimeofday (&tv, NULL);
ut.ut_tv.tv_sec = tv.tv_sec;
ut.ut_tv.tv_usec = tv.tv_usec;
@@ -743,11 +710,12 @@ session_child_run (int argc, char **argv)
endutxent ();
updwtmpx ("/var/log/wtmp", &ut);
-#if HAVE_LIBAUDIT
+#if HAVE_LIBAUDIT
audit_event (AUDIT_USER_LOGIN, username, uid, remote_host_name, tty, TRUE);
#endif
}
+ int child_status;
waitpid (child_pid, &child_status, 0);
child_pid = 0;
if (WIFEXITED (child_status))
@@ -759,8 +727,6 @@ session_child_run (int argc, char **argv)
if (g_strcmp0 (pam_getenv (pam_handle, "XDG_SESSION_CLASS"), "greeter") != 0)
{
struct utmpx ut;
- struct timeval tv;
-
memset (&ut, 0, sizeof (ut));
ut.ut_type = DEAD_PROCESS;
ut.ut_pid = child_pid;
@@ -773,6 +739,7 @@ session_child_run (int argc, char **argv)
strncpy (ut.ut_host, xdisplay, sizeof (ut.ut_host));
else if (remote_host_name)
strncpy (ut.ut_host, remote_host_name, sizeof (ut.ut_host));
+ struct timeval tv;
gettimeofday (&tv, NULL);
ut.ut_tv.tv_sec = tv.tv_sec;
ut.ut_tv.tv_usec = tv.tv_usec;
@@ -793,13 +760,12 @@ session_child_run (int argc, char **argv)
/* Remove X authority */
if (x_authority)
{
- gboolean drop_privileges, result;
- g_autoptr(GError) error = NULL;
-
- drop_privileges = geteuid () == 0;
+ gboolean drop_privileges = geteuid () == 0;
if (drop_privileges)
privileges_drop (user_get_uid (user), user_get_gid (user));
- result = x_authority_write (x_authority, XAUTH_WRITE_MODE_REMOVE, x_authority_filename, &error);
+
+ g_autoptr(GError) error = NULL;
+ gboolean result = x_authority_write (x_authority, XAUTH_WRITE_MODE_REMOVE, x_authority_filename, &error);
if (drop_privileges)
privileges_reclaim ();
diff --git a/src/session-config.c b/src/session-config.c
index 13f77cc9..e1b56f0e 100644
--- a/src/session-config.c
+++ b/src/session-config.c
@@ -31,14 +31,10 @@ G_DEFINE_TYPE (SessionConfig, session_config, G_TYPE_OBJECT)
SessionConfig *
session_config_new_from_file (const gchar *filename, const gchar *default_session_type, GError **error)
{
- GKeyFile *desktop_file;
- SessionConfig *config;
- gchar *command;
-
- desktop_file = g_key_file_new ();
+ g_autoptr(GKeyFile) desktop_file = g_key_file_new ();
if (!g_key_file_load_from_file (desktop_file, filename, G_KEY_FILE_NONE, error))
return NULL;
- command = g_key_file_get_string (desktop_file, G_KEY_FILE_DESKTOP_GROUP, G_KEY_FILE_DESKTOP_KEY_EXEC, NULL);
+ g_autofree gchar *command = g_key_file_get_string (desktop_file, G_KEY_FILE_DESKTOP_GROUP, G_KEY_FILE_DESKTOP_KEY_EXEC, NULL);
if (!command)
{
g_set_error (error,
@@ -48,8 +44,8 @@ session_config_new_from_file (const gchar *filename, const gchar *default_sessio
return NULL;
}
- config = g_object_new (SESSION_CONFIG_TYPE, NULL);
- config->priv->command = command;
+ g_autoptr(SessionConfig) config = g_object_new (SESSION_CONFIG_TYPE, NULL);
+ config->priv->command = g_steal_pointer (&command);
config->priv->session_type = g_key_file_get_string (desktop_file, G_KEY_FILE_DESKTOP_GROUP, "X-LightDM-Session-Type", NULL);
if (!config->priv->session_type)
config->priv->session_type = g_strdup (default_session_type);
@@ -69,9 +65,7 @@ session_config_new_from_file (const gchar *filename, const gchar *default_sessio
}
config->priv->allow_greeter = g_key_file_get_boolean (desktop_file, G_KEY_FILE_DESKTOP_GROUP, "X-LightDM-Allow-Greeter", NULL);
- g_key_file_free (desktop_file);
-
- return config;
+ return g_steal_pointer (&config);
}
const gchar *
diff --git a/src/session.c b/src/session.c
index d7b531fb..c1f44204 100644
--- a/src/session.c
+++ b/src/session.c
@@ -271,9 +271,7 @@ session_set_remote_host_name (Session *session, const gchar *remote_host_name)
static GList *
find_env_entry (Session *session, const gchar *name)
{
- GList *link;
-
- for (link = session->priv->env; link; link = link->next)
+ for (GList *link = session->priv->env; link; link = link->next)
{
const gchar *entry = link->data;
@@ -287,15 +285,12 @@ find_env_entry (Session *session, const gchar *name)
void
session_set_env (Session *session, const gchar *name, const gchar *value)
{
- GList *link;
- gchar *entry;
-
g_return_if_fail (session != NULL);
g_return_if_fail (value != NULL);
- entry = g_strdup_printf ("%s=%s", name, value);
+ gchar *entry = g_strdup_printf ("%s=%s", name, value);
- link = find_env_entry (session, name);
+ GList *link = find_env_entry (session, name);
if (link)
{
g_free (link->data);
@@ -308,14 +303,11 @@ session_set_env (Session *session, const gchar *name, const gchar *value)
const gchar *
session_get_env (Session *session, const gchar *name)
{
- GList *link;
- gchar *entry;
-
- link = find_env_entry (session, name);
+ GList *link = find_env_entry (session, name);
if (!link)
return NULL;
- entry = link->data;
+ gchar *entry = link->data;
return entry + strlen (name) + 1;
}
@@ -323,11 +315,9 @@ session_get_env (Session *session, const gchar *name)
void
session_unset_env (Session *session, const gchar *name)
{
- GList *link;
-
g_return_if_fail (session != NULL);
- link = find_env_entry (session, name);
+ GList *link = find_env_entry (session, name);
if (!link)
return;
@@ -366,9 +356,7 @@ write_data (Session *session, const void *buf, size_t count)
static void
write_string (Session *session, const char *value)
{
- int length;
-
- length = value ? strlen (value) : -1;
+ int length = value ? strlen (value) : -1;
write_data (session, &length, sizeof (length));
if (value)
write_data (session, value, sizeof (char) * length);
@@ -377,9 +365,6 @@ write_string (Session *session, const char *value)
static void
write_xauth (Session *session, XAuthority *x_authority)
{
- guint16 family;
- gsize length;
-
if (!x_authority)
{
write_string (session, NULL);
@@ -387,9 +372,9 @@ write_xauth (Session *session, XAuthority *x_authority)
}
write_string (session, x_authority_get_authorization_name (session->priv->x_authority));
- family = x_authority_get_family (session->priv->x_authority);
+ guint16 family = x_authority_get_family (session->priv->x_authority);
write_data (session, &family, sizeof (family));
- length = x_authority_get_address_length (session->priv->x_authority);
+ gsize length = x_authority_get_address_length (session->priv->x_authority);
write_data (session, &length, sizeof (length));
write_data (session, x_authority_get_address (session->priv->x_authority), length);
write_string (session, x_authority_get_number (session->priv->x_authority));
@@ -401,8 +386,7 @@ write_xauth (Session *session, XAuthority *x_authority)
static ssize_t
read_from_child (Session *session, void *buf, size_t count)
{
- ssize_t n_read;
- n_read = read (session->priv->from_child_output, buf, count);
+ ssize_t n_read = read (session->priv->from_child_output, buf, count);
if (n_read < 0)
l_warning (session, "Error reading from session: %s", strerror (errno));
return n_read;
@@ -412,8 +396,6 @@ static gchar *
read_string_from_child (Session *session)
{
int length;
- char *value;
-
if (read_from_child (session, &length, sizeof (length)) <= 0)
return NULL;
if (length < 0)
@@ -424,7 +406,7 @@ read_string_from_child (Session *session)
return NULL;
}
- value = g_malloc (sizeof (char) * (length + 1));
+ char *value = g_malloc (sizeof (char) * (length + 1));
read_from_child (session, value, length);
value[length] = '\0';
@@ -471,9 +453,6 @@ static gboolean
from_child_cb (GIOChannel *source, GIOCondition condition, gpointer data)
{
Session *session = data;
- g_autofree gchar *username = NULL;
- ssize_t n_read;
- gboolean auth_complete;
/* Remote end gone */
if (condition == G_IO_HUP)
@@ -483,7 +462,7 @@ from_child_cb (GIOChannel *source, GIOCondition condition, gpointer data)
}
/* Get the username currently being authenticated (may change during authentication) */
- username = read_string_from_child (session);
+ g_autofree gchar *username = read_string_from_child (session);
if (g_strcmp0 (username, session->priv->username) != 0)
{
g_free (session->priv->username);
@@ -492,7 +471,8 @@ from_child_cb (GIOChannel *source, GIOCondition condition, gpointer data)
}
/* Check if authentication completed */
- n_read = read_from_child (session, &auth_complete, sizeof (auth_complete));
+ gboolean auth_complete;
+ ssize_t n_read = read_from_child (session, &auth_complete, sizeof (auth_complete));
if (n_read < 0)
l_debug (session, "Error reading from child: %s", strerror (errno));
if (n_read <= 0)
@@ -519,12 +499,10 @@ from_child_cb (GIOChannel *source, GIOCondition condition, gpointer data)
}
else
{
- int i;
-
session->priv->messages_length = 0;
read_from_child (session, &session->priv->messages_length, sizeof (session->priv->messages_length));
session->priv->messages = calloc (session->priv->messages_length, sizeof (struct pam_message));
- for (i = 0; i < session->priv->messages_length; i++)
+ for (int i = 0; i < session->priv->messages_length; i++)
{
struct pam_message *m = &session->priv->messages[i];
read_from_child (session, &m->msg_style, sizeof (m->msg_style));
@@ -555,7 +533,7 @@ session_get_is_started (Session *session)
static Greeter *
create_greeter_cb (GreeterSocket *socket, Session *session)
{
- Greeter *greeter;
+ Greeter *greeter = NULL;
g_signal_emit (session, signals[CREATE_GREETER], 0, &greeter);
return greeter;
}
@@ -563,27 +541,22 @@ create_greeter_cb (GreeterSocket *socket, Session *session)
static gboolean
session_real_start (Session *session)
{
- int version;
- int to_child_pipe[2], from_child_pipe[2];
- int to_child_output, from_child_input;
- g_autofree gchar *arg0 = NULL;
- g_autofree gchar *arg1 = NULL;
-
g_return_val_if_fail (session->priv->pid == 0, FALSE);
if (session->priv->display_server)
display_server_connect_session (session->priv->display_server, session);
/* Create pipes to talk to the child */
+ int to_child_pipe[2], from_child_pipe[2];
if (pipe (to_child_pipe) < 0 || pipe (from_child_pipe) < 0)
{
g_warning ("Failed to create pipe to communicate with session process: %s", strerror (errno));
return FALSE;
}
- to_child_output = to_child_pipe[0];
+ int to_child_output = to_child_pipe[0];
session->priv->to_child_input = to_child_pipe[1];
session->priv->from_child_output = from_child_pipe[0];
- from_child_input = from_child_pipe[1];
+ int from_child_input = from_child_pipe[1];
session->priv->from_child_channel = g_io_channel_unix_new (session->priv->from_child_output);
session->priv->from_child_watch = g_io_add_watch (session->priv->from_child_channel, G_IO_IN | G_IO_HUP, from_child_cb, session);
@@ -600,8 +573,8 @@ session_real_start (Session *session)
}
/* Run the child */
- arg0 = g_strdup_printf ("%d", to_child_output);
- arg1 = g_strdup_printf ("%d", from_child_input);
+ g_autofree gchar *arg0 = g_strdup_printf ("%d", to_child_output);
+ g_autofree gchar *arg1 = g_strdup_printf ("%d", from_child_input);
session->priv->pid = fork ();
if (session->priv->pid == 0)
{
@@ -633,7 +606,7 @@ session_real_start (Session *session)
close (from_child_input);
/* Indicate what version of the protocol we are using */
- version = 3;
+ int version = 3;
write_data (session, &version, sizeof (version));
/* Send configuration */
@@ -676,20 +649,18 @@ session_get_console_kit_cookie (Session *session)
void
session_respond (Session *session, struct pam_response *response)
{
- int error = PAM_SUCCESS;
- int i;
-
g_return_if_fail (session != NULL);
+ int error = PAM_SUCCESS;
write_data (session, &error, sizeof (error));
- for (i = 0; i < session->priv->messages_length; i++)
+ for (int i = 0; i < session->priv->messages_length; i++)
{
write_string (session, response[i].resp);
write_data (session, &response[i].resp_retcode, sizeof (response[i].resp_retcode));
}
/* Delete the old messages */
- for (i = 0; i < session->priv->messages_length; i++)
+ for (int i = 0; i < session->priv->messages_length; i++)
g_free ((char *) session->priv->messages[i].msg);
g_free (session->priv->messages);
session->priv->messages = NULL;
@@ -758,11 +729,6 @@ session_get_is_run (Session *session)
static void
session_real_run (Session *session)
{
- gsize i, argc;
- g_autofree gchar *command = NULL;
- g_autofree gchar *x_authority_filename = NULL;
- GList *link;
-
g_return_if_fail (session != NULL);
g_return_if_fail (!session->priv->command_run);
g_return_if_fail (session_get_is_authenticated (session));
@@ -773,17 +739,15 @@ session_real_run (Session *session)
session->priv->command_run = TRUE;
- command = g_strjoinv (" ", session->priv->argv);
+ g_autofree gchar *command = g_strjoinv (" ", session->priv->argv);
l_debug (session, "Running command %s", command);
/* Create authority location */
+ g_autofree gchar *x_authority_filename = NULL;
if (session->priv->x_authority_use_system_location)
{
- g_autofree gchar *run_dir = NULL;
- g_autofree gchar *dir = NULL;
-
- run_dir = config_get_string (config_get_instance (), "LightDM", "run-directory");
- dir = g_build_filename (run_dir, session->priv->username, NULL);
+ g_autofree gchar *run_dir = config_get_string (config_get_instance (), "LightDM", "run-directory");
+ g_autofree gchar *dir = g_build_filename (run_dir, session->priv->username, NULL);
if (g_mkdir_with_parents (dir, S_IRWXU) < 0)
l_warning (session, "Failed to set create system authority dir %s: %s", dir, strerror (errno));
@@ -809,13 +773,8 @@ session_real_run (Session *session)
/* Open socket to allow in-session greeter */
if (session->priv->config && session_config_get_allow_greeter (session->priv->config))
{
- g_autofree gchar *run_dir = NULL;
- g_autofree gchar *dir = NULL;
- g_autofree gchar *path = NULL;
- g_autoptr(GError) error = NULL;
-
- run_dir = config_get_string (config_get_instance (), "LightDM", "run-directory");
- dir = g_build_filename (run_dir, session->priv->username, NULL);
+ g_autofree gchar *run_dir = config_get_string (config_get_instance (), "LightDM", "run-directory");
+ g_autofree gchar *dir = g_build_filename (run_dir, session->priv->username, NULL);
if (g_mkdir_with_parents (dir, S_IRWXU) < 0)
l_warning (session, "Failed to create greeter socket dir %s: %s", dir, strerror (errno));
@@ -825,11 +784,12 @@ session_real_run (Session *session)
l_warning (session, "Failed to set ownership of greeter socket dir: %s", strerror (errno));
}
- path = g_build_filename (dir, "greeter-socket", NULL);
+ g_autofree gchar *path = g_build_filename (dir, "greeter-socket", NULL);
session->priv->greeter_socket = greeter_socket_new (path);
g_signal_connect (session->priv->greeter_socket, GREETER_SOCKET_SIGNAL_CREATE_GREETER, G_CALLBACK (create_greeter_cb), session);
session_set_env (session, "LIGHTDM_GREETER_PIPE", path);
+ g_autoptr(GError) error = NULL;
if (!greeter_socket_start (session->priv->greeter_socket, &error))
l_warning (session, "Failed to start greeter socket: %s\n", error->message);
}
@@ -842,13 +802,13 @@ session_real_run (Session *session)
write_string (session, x_authority_filename);
write_string (session, session->priv->xdisplay);
write_xauth (session, session->priv->x_authority);
- argc = g_list_length (session->priv->env);
+ gsize argc = g_list_length (session->priv->env);
write_data (session, &argc, sizeof (argc));
- for (link = session->priv->env; link; link = link->next)
+ for (GList *link = session->priv->env; link; link = link->next)
write_string (session, (gchar *) link->data);
argc = g_strv_length (session->priv->argv);
write_data (session, &argc, sizeof (argc));
- for (i = 0; i < argc; i++)
+ for (gsize i = 0; i < argc; i++)
write_string (session, session->priv->argv[i]);
session->priv->login1_session_id = read_string_from_child (session);
@@ -911,16 +871,15 @@ session_stop (Session *session)
/* If can cleanly stop then do that */
if (session_get_is_authenticated (session) && !session->priv->command_run)
{
- gsize n = 0;
- LogMode log_mode = LOG_MODE_INVALID;
-
session->priv->command_run = TRUE;
write_string (session, NULL); // log filename
+ LogMode log_mode = LOG_MODE_INVALID;
write_data (session, &log_mode, sizeof (log_mode)); // log mode
write_string (session, NULL); // tty
write_string (session, NULL); // xauth filename
write_string (session, NULL); // xdisplay
write_xauth (session, NULL); // xauth
+ gsize n = 0;
write_data (session, &n, sizeof (n)); // environment
write_data (session, &n, sizeof (n)); // command
return;
@@ -965,7 +924,6 @@ static void
session_finalize (GObject *object)
{
Session *self = SESSION (object);
- int i;
g_clear_object (&self->priv->config);
g_clear_object (&self->priv->display_server);
@@ -981,7 +939,7 @@ session_finalize (GObject *object)
g_clear_pointer (&self->priv->username, g_free);
g_clear_object (&self->priv->user);
g_clear_pointer (&self->priv->pam_service, g_free);
- for (i = 0; i < self->priv->messages_length; i++)
+ for (int i = 0; i < self->priv->messages_length; i++)
g_free ((char *) self->priv->messages[i].msg);
g_clear_pointer (&self->priv->messages, g_free);
g_clear_pointer (&self->priv->authentication_result_string, g_free);
diff --git a/src/shared-data-manager.c b/src/shared-data-manager.c
index 17b5b936..e493e584 100644
--- a/src/shared-data-manager.c
+++ b/src/shared-data-manager.c
@@ -56,19 +56,16 @@ static void
delete_unused_user (gpointer key, gpointer value, gpointer user_data)
{
const gchar *user = (const gchar *)key;
- g_autofree gchar *path = NULL;
- g_autofree gchar *quoted_path = NULL;
- g_autofree gchar *cmd = NULL;
- g_autoptr(GError) error = NULL;
/* For this operation, we just need a fire and forget rm -rf. Since
recursively deleting in GIO is a huge pain in the butt, we'll just drop
to shell for this. */
- path = g_build_filename (USERS_DIR, user, NULL);
- quoted_path = g_shell_quote (path);
- cmd = g_strdup_printf ("/bin/rm -rf %s", quoted_path);
+ g_autofree gchar *path = g_build_filename (USERS_DIR, user, NULL);
+ g_autofree gchar *quoted_path = g_shell_quote (path);
+ g_autofree gchar *cmd = g_strdup_printf ("/bin/rm -rf %s", quoted_path);
+ g_autoptr(GError) error = NULL;
g_spawn_command_line_async (cmd, &error);
if (error)
g_warning ("Could not delete unused user data directory %s: %s", path, error->message);
@@ -77,23 +74,17 @@ delete_unused_user (gpointer key, gpointer value, gpointer user_data)
gchar *
shared_data_manager_ensure_user_dir (SharedDataManager *manager, const gchar *user)
{
- struct passwd *entry;
- g_autofree gchar *path = NULL;
- g_autoptr(GFile) file = NULL;
- gboolean result;
- g_autoptr(GFileInfo) info = NULL;
- g_autoptr(GError) error = NULL;
-
- entry = getpwnam (user);
+ struct passwd *entry = getpwnam (user);
if (!entry)
return NULL;
- path = g_build_filename (USERS_DIR, user, NULL);
- file = g_file_new_for_path (path);
+ g_autofree gchar *path = g_build_filename (USERS_DIR, user, NULL);
+ g_autoptr(GFile) file = g_file_new_for_path (path);
g_debug ("Creating shared data directory %s", path);
- result = g_file_make_directory (file, NULL, &error);
+ g_autoptr(GError) error = NULL;
+ gboolean result = g_file_make_directory (file, NULL, &error);
if (error)
{
if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_EXISTS))
@@ -113,7 +104,7 @@ shared_data_manager_ensure_user_dir (SharedDataManager *manager, const gchar *us
/* Even if the directory already exists, we want to re-affirm the owners
because the greeter gid is configuration based and may change between
runs. */
- info = g_file_info_new ();
+ g_autoptr(GFileInfo) info = g_file_info_new ();
g_file_info_set_attribute_uint32 (info, G_FILE_ATTRIBUTE_UNIX_UID, entry->pw_uid);
g_file_info_set_attribute_uint32 (info, G_FILE_ATTRIBUTE_UNIX_GID, manager->priv->greeter_gid);
g_file_info_set_attribute_uint32 (info, G_FILE_ATTRIBUTE_UNIX_MODE, 0770);
@@ -131,9 +122,8 @@ next_user_dirs_cb (GObject *object, GAsyncResult *res, gpointer user_data)
{
GFileEnumerator *enumerator = G_FILE_ENUMERATOR (object);
SharedDataManager *manager = SHARED_DATA_MANAGER (user_data);
- GList *link;
- g_autoptr(GError) error = NULL;
+ g_autoptr(GError) error = NULL;
GList *files = g_file_enumerator_next_files_finish (enumerator, res, &error);
if (error)
{
@@ -142,7 +132,7 @@ next_user_dirs_cb (GObject *object, GAsyncResult *res, gpointer user_data)
return;
}
- for (link = files; link; link = link->next)
+ for (GList *link = files; link; link = link->next)
{
GFileInfo *info = link->data;
g_hash_table_insert (manager->priv->starting_dirs, g_strdup (g_file_info_get_name (info)), NULL);
@@ -159,7 +149,7 @@ next_user_dirs_cb (GObject *object, GAsyncResult *res, gpointer user_data)
// iterate the current users and as we go, remove the users from the
// starting_dirs hash and thus see which users are obsolete.
GList *users = common_user_list_get_users (common_user_list_get_instance ());
- for (link = users; link; link = link->next)
+ for (GList *link = users; link; link = link->next)
{
CommonUser *user = link->data;
g_hash_table_remove (manager->priv->starting_dirs, common_user_get_name (user));
@@ -176,23 +166,19 @@ static void
list_user_dirs_cb (GObject *object, GAsyncResult *res, gpointer user_data)
{
GFile *file = G_FILE (object);
- SharedDataManager *manager = SHARED_DATA_MANAGER (user_data);
- GFileEnumerator *enumerator;
- g_autoptr(GError) error = NULL;
+ g_autoptr(SharedDataManager) manager = SHARED_DATA_MANAGER (user_data);
- enumerator = g_file_enumerate_children_finish (file, res, &error);
+ g_autoptr(GError) error = NULL;
+ GFileEnumerator *enumerator = g_file_enumerate_children_finish (file, res, &error);
if (error)
g_warning ("Could not enumerate user data directory %s: %s", USERS_DIR, error->message);
if (!enumerator)
- {
- g_object_unref (manager);
return;
- }
manager->priv->starting_dirs = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL);
g_file_enumerator_next_files_async (enumerator, NUM_ENUMERATION_FILES,
G_PRIORITY_DEFAULT, NULL,
- next_user_dirs_cb, manager);
+ next_user_dirs_cb, g_steal_pointer (&manager));
}
static void
@@ -204,10 +190,8 @@ user_removed_cb (CommonUserList *list, CommonUser *user, SharedDataManager *mana
void
shared_data_manager_start (SharedDataManager *manager)
{
- g_autoptr(GFile) file = NULL;
-
/* Grab list of all current directories, so we know if any exist that we no longer need. */
- file = g_file_new_for_path (USERS_DIR);
+ g_autoptr(GFile) file = g_file_new_for_path (USERS_DIR);
g_file_enumerate_children_async (file, G_FILE_ATTRIBUTE_STANDARD_NAME,
G_FILE_QUERY_INFO_NONE,
G_PRIORITY_DEFAULT, NULL,
@@ -220,13 +204,11 @@ shared_data_manager_start (SharedDataManager *manager)
static void
shared_data_manager_init (SharedDataManager *manager)
{
- struct passwd *greeter_entry;
-
manager->priv = G_TYPE_INSTANCE_GET_PRIVATE (manager, SHARED_DATA_MANAGER_TYPE, SharedDataManagerPrivate);
/* Grab current greeter-user gid */
manager->priv->greeter_user = config_get_string (config_get_instance (), "LightDM", "greeter-user");
- greeter_entry = getpwnam (manager->priv->greeter_user);
+ struct passwd *greeter_entry = getpwnam (manager->priv->greeter_user);
if (greeter_entry)
manager->priv->greeter_gid = greeter_entry->pw_gid;
}
@@ -235,7 +217,7 @@ static void
shared_data_manager_finalize (GObject *object)
{
SharedDataManager *self = SHARED_DATA_MANAGER (object);
-
+
/* Should also cancel outstanding GIO operations, but whatever, let them do their thing. */
g_signal_handlers_disconnect_by_data (common_user_list_get_instance (), self);
diff --git a/src/shared-data-manager.h b/src/shared-data-manager.h
index 7b60e8f0..6099bd8a 100644
--- a/src/shared-data-manager.h
+++ b/src/shared-data-manager.h
@@ -36,6 +36,8 @@ typedef struct
GObjectClass parent_class;
} SharedDataManagerClass;
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (SharedDataManager, g_object_unref)
+
GType shared_data_manager_get_type (void);
SharedDataManager *shared_data_manager_get_instance (void);
diff --git a/src/unity-system-compositor.c b/src/unity-system-compositor.c
index 1bd85fe8..81270276 100644
--- a/src/unity-system-compositor.c
+++ b/src/unity-system-compositor.c
@@ -136,10 +136,8 @@ unity_system_compositor_set_timeout (UnitySystemCompositor *compositor, gint tim
static void
write_message (UnitySystemCompositor *compositor, guint16 id, const guint8 *payload, guint16 payload_length)
{
- g_autofree guint8 *data = NULL;
gsize data_length = 4 + payload_length;
-
- data = g_malloc (data_length);
+ g_autofree guint8 *data = g_malloc (data_length);
data[0] = id >> 8;
data[1] = id & 0xFF;
data[2] = payload_length >> 8;
@@ -186,7 +184,6 @@ unity_system_compositor_connect_session (DisplayServer *display_server, Session
if (!session_get_env (session, "MIR_SERVER_NAME"))
{
g_autofree gchar *name = NULL;
-
if (IS_GREETER_SESSION (session))
{
name = g_strdup_printf ("greeter-%d", compositor->priv->next_greeter_id);
@@ -219,13 +216,10 @@ unity_system_compositor_disconnect_session (DisplayServer *display_server, Sessi
static gchar *
get_absolute_command (const gchar *command)
{
- g_auto(GStrv) tokens = NULL;
- g_autofree gchar *absolute_binary = NULL;
- gchar *absolute_command = NULL;
+ g_auto(GStrv) tokens = g_strsplit (command, " ", 2);
- tokens = g_strsplit (command, " ", 2);
-
- absolute_binary = g_find_program_in_path (tokens[0]);
+ g_autofree gchar *absolute_binary = g_find_program_in_path (tokens[0]);
+ gchar *absolute_command = NULL;
if (absolute_binary)
{
if (tokens[1])
@@ -241,9 +235,6 @@ static gboolean
read_cb (GIOChannel *source, GIOCondition condition, gpointer data)
{
UnitySystemCompositor *compositor = data;
- gsize n_to_read = 0;
- guint16 id, payload_length;
- /*guint8 *payload;*/
if (condition == G_IO_HUP)
{
@@ -253,30 +244,29 @@ read_cb (GIOChannel *source, GIOCondition condition, gpointer data)
}
/* Work out how much required for a message */
+ gsize n_to_read = 0;
if (compositor->priv->read_buffer_n_used < 4)
n_to_read = 4 - compositor->priv->read_buffer_n_used;
else
{
- payload_length = compositor->priv->read_buffer[2] << 8 | compositor->priv->read_buffer[3];
+ guint16 payload_length = compositor->priv->read_buffer[2] << 8 | compositor->priv->read_buffer[3];
n_to_read = 4 + payload_length - compositor->priv->read_buffer_n_used;
}
/* Read from compositor */
if (n_to_read > 0)
{
- gsize n_total, n_read = 0;
- GIOStatus status;
- g_autoptr(GError) error = NULL;
-
- n_total = compositor->priv->read_buffer_n_used + n_to_read;
+ gsize n_total = compositor->priv->read_buffer_n_used + n_to_read;
if (compositor->priv->read_buffer_length < n_total)
compositor->priv->read_buffer = g_realloc (compositor->priv->read_buffer, n_total);
- status = g_io_channel_read_chars (source,
- (gchar *)compositor->priv->read_buffer + compositor->priv->read_buffer_n_used,
- n_to_read,
- &n_read,
- &error);
+ g_autoptr(GError) error = NULL;
+ gsize n_read = 0;
+ GIOStatus status = g_io_channel_read_chars (source,
+ (gchar *)compositor->priv->read_buffer + compositor->priv->read_buffer_n_used,
+ n_to_read,
+ &n_read,
+ &error);
if (error)
l_warning (compositor, "Failed to read from compositor: %s", error->message);
if (status != G_IO_STATUS_NORMAL)
@@ -287,13 +277,13 @@ read_cb (GIOChannel *source, GIOCondition condition, gpointer data)
/* Read header */
if (compositor->priv->read_buffer_n_used < 4)
return TRUE;
- id = compositor->priv->read_buffer[0] << 8 | compositor->priv->read_buffer[1];
- payload_length = compositor->priv->read_buffer[2] << 8 | compositor->priv->read_buffer[3];
+ guint16 id = compositor->priv->read_buffer[0] << 8 | compositor->priv->read_buffer[1];
+ guint16 payload_length = compositor->priv->read_buffer[2] << 8 | compositor->priv->read_buffer[3];
/* Read payload */
if (compositor->priv->read_buffer_n_used < 4 + payload_length)
return TRUE;
- /*payload = compositor->priv->read_buffer + 4;*/
+ /*guint8 *payload = compositor->priv->read_buffer + 4;*/
switch (id)
{
@@ -332,10 +322,8 @@ read_cb (GIOChannel *source, GIOCondition condition, gpointer data)
static void
run_cb (Process *process, gpointer user_data)
{
- int fd;
-
/* Make input non-blocking */
- fd = open ("/dev/null", O_RDONLY);
+ int fd = open ("/dev/null", O_RDONLY);
dup2 (fd, STDIN_FILENO);
close (fd);
}
@@ -376,12 +364,6 @@ static gboolean
unity_system_compositor_start (DisplayServer *server)
{
UnitySystemCompositor *compositor = UNITY_SYSTEM_COMPOSITOR (server);
- gboolean result, backup_logs;
- g_autoptr(GString) command = NULL;
- g_autofree gchar *dir = NULL;
- g_autofree gchar *log_file = NULL;
- g_autofree gchar *value = NULL;
- g_autofree gchar *absolute_command = NULL;
g_return_val_if_fail (compositor->priv->process == NULL, FALSE);
@@ -405,17 +387,17 @@ unity_system_compositor_start (DisplayServer *server)
compositor->priv->from_compositor_watch = g_io_add_watch (compositor->priv->from_compositor_channel, G_IO_IN | G_IO_HUP, read_cb, compositor);
/* Setup logging */
- dir = config_get_string (config_get_instance (), "LightDM", "log-directory");
- log_file = g_build_filename (dir, "unity-system-compositor.log", NULL);
+ g_autofree gchar *dir = config_get_string (config_get_instance (), "LightDM", "log-directory");
+ g_autofree gchar *log_file = g_build_filename (dir, "unity-system-compositor.log", NULL);
l_debug (compositor, "Logging to %s", log_file);
/* Setup environment */
compositor->priv->process = process_new (run_cb, compositor);
- backup_logs = config_get_boolean (config_get_instance (), "LightDM", "backup-logs");
+ gboolean backup_logs = config_get_boolean (config_get_instance (), "LightDM", "backup-logs");
process_set_log_file (compositor->priv->process, log_file, TRUE, backup_logs ? LOG_MODE_BACKUP_AND_TRUNCATE : LOG_MODE_APPEND);
process_set_clear_environment (compositor->priv->process, TRUE);
process_set_env (compositor->priv->process, "XDG_SEAT", "seat0");
- value = g_strdup_printf ("%d", compositor->priv->vt);
+ g_autofree gchar *value = g_strdup_printf ("%d", compositor->priv->vt);
process_set_env (compositor->priv->process, "XDG_VTNR", value);
/* Variable required for regression tests */
if (g_getenv ("LIGHTDM_TEST_ROOT"))
@@ -426,13 +408,13 @@ unity_system_compositor_start (DisplayServer *server)
}
/* Generate command line to run */
- absolute_command = get_absolute_command (compositor->priv->command);
+ g_autofree gchar *absolute_command = get_absolute_command (compositor->priv->command);
if (!absolute_command)
{
l_debug (compositor, "Can't launch compositor %s, not found in path", compositor->priv->command);
return FALSE;
}
- command = g_string_new (absolute_command);
+ g_autoptr(GString) command = g_string_new (absolute_command);
g_string_append_printf (command, " --file '%s'", compositor->priv->socket);
g_string_append_printf (command, " --from-dm-fd %d --to-dm-fd %d", compositor->priv->to_compositor_pipe[0], compositor->priv->from_compositor_pipe[1]);
if (compositor->priv->vt > 0)
@@ -441,7 +423,7 @@ unity_system_compositor_start (DisplayServer *server)
/* Start the compositor */
g_signal_connect (compositor->priv->process, PROCESS_SIGNAL_STOPPED, G_CALLBACK (stopped_cb), compositor);
- result = process_start (compositor->priv->process, FALSE);
+ gboolean result = process_start (compositor->priv->process, FALSE);
/* Close compositor ends of the pipes */
close (compositor->priv->to_compositor_pipe[0]);
diff --git a/src/vnc-server.c b/src/vnc-server.c
index 0834df5a..b68745b5 100644
--- a/src/vnc-server.c
+++ b/src/vnc-server.c
@@ -72,20 +72,15 @@ vnc_server_get_listen_address (VNCServer *server)
static gboolean
read_cb (GSocket *socket, GIOCondition condition, VNCServer *server)
{
- g_autoptr(GSocket) client_socket = NULL;
g_autoptr(GError) error = NULL;
-
- client_socket = g_socket_accept (socket, NULL, &error);
+ g_autoptr(GSocket) client_socket = g_socket_accept (socket, NULL, &error);
if (error)
g_warning ("Failed to get connection from from VNC socket: %s", error->message);
if (client_socket)
{
- GInetSocketAddress *address;
- g_autofree gchar *hostname = NULL;
-
- address = G_INET_SOCKET_ADDRESS (g_socket_get_remote_address (client_socket, NULL));
- hostname = g_inet_address_to_string (g_inet_socket_address_get_address (address));
+ GInetSocketAddress *address = G_INET_SOCKET_ADDRESS (g_socket_get_remote_address (client_socket, NULL));
+ g_autofree gchar *hostname = g_inet_address_to_string (g_inet_socket_address_get_address (address));
g_debug ("Got VNC connection from %s:%d", hostname, g_inet_socket_address_get_port (address));
g_signal_emit (server, signals[NEW_CONNECTION], 0, client_socket);
@@ -97,18 +92,14 @@ read_cb (GSocket *socket, GIOCondition condition, VNCServer *server)
static GSocket *
open_tcp_socket (GSocketFamily family, guint port, const gchar *listen_address, GError **error)
{
- g_autoptr(GSocket) socket = NULL;
- g_autoptr(GSocketAddress) address = NULL;
-
- socket = g_socket_new (family, G_SOCKET_TYPE_STREAM, G_SOCKET_PROTOCOL_TCP, error);
+ g_autoptr(GSocket) socket = g_socket_new (family, G_SOCKET_TYPE_STREAM, G_SOCKET_PROTOCOL_TCP, error);
if (!socket)
return NULL;
- if (listen_address)
+ g_autoptr(GSocketAddress) address = NULL;
+ if (listen_address)
{
- GList *addresses;
-
- addresses = g_resolver_lookup_by_name (g_resolver_get_default (), listen_address, NULL, error);
+ GList *addresses = g_resolver_lookup_by_name (g_resolver_get_default (), listen_address, NULL, error);
if (!addresses)
return NULL;
address = g_inet_socket_address_new (addresses->data, port);
@@ -126,30 +117,28 @@ open_tcp_socket (GSocketFamily family, guint port, const gchar *listen_address,
gboolean
vnc_server_start (VNCServer *server)
{
- GSource *source;
- g_autoptr(GError) ipv4_error = NULL;
- g_autoptr(GError) ipv6_error = NULL;
-
g_return_val_if_fail (server != NULL, FALSE);
+ g_autoptr(GError) ipv4_error = NULL;
server->priv->socket = open_tcp_socket (G_SOCKET_FAMILY_IPV4, server->priv->port, server->priv->listen_address, &ipv4_error);
if (ipv4_error)
g_warning ("Failed to create IPv4 VNC socket: %s", ipv4_error->message);
if (server->priv->socket)
{
- source = g_socket_create_source (server->priv->socket, G_IO_IN, NULL);
+ GSource *source = g_socket_create_source (server->priv->socket, G_IO_IN, NULL);
g_source_set_callback (source, (GSourceFunc) read_cb, server, NULL);
g_source_attach (source, NULL);
}
+ g_autoptr(GError) ipv6_error = NULL;
server->priv->socket6 = open_tcp_socket (G_SOCKET_FAMILY_IPV6, server->priv->port, server->priv->listen_address, &ipv6_error);
if (ipv6_error)
g_warning ("Failed to create IPv6 VNC socket: %s", ipv6_error->message);
if (server->priv->socket6)
{
- source = g_socket_create_source (server->priv->socket6, G_IO_IN, NULL);
+ GSource *source = g_socket_create_source (server->priv->socket6, G_IO_IN, NULL);
g_source_set_callback (source, (GSourceFunc) read_cb, server, NULL);
g_source_attach (source, NULL);
}
diff --git a/src/vt.c b/src/vt.c
index cc9234d4..920ae682 100644
--- a/src/vt.c
+++ b/src/vt.c
@@ -28,9 +28,7 @@ static GList *used_vts = NULL;
static gint
open_tty (void)
{
- int fd;
-
- fd = g_open ("/dev/tty0", O_RDONLY | O_NOCTTY, 0);
+ int fd = g_open ("/dev/tty0", O_RDONLY | O_NOCTTY, 0);
if (fd < 0)
g_warning ("Error opening /dev/tty0: %s", strerror (errno));
return fd;
@@ -50,14 +48,12 @@ gint
vt_get_active (void)
{
#ifdef __linux__
- gint tty_fd;
- gint active = -1;
-
/* Pretend always active */
if (getuid () != 0)
return 1;
- tty_fd = open_tty ();
+ gint tty_fd = open_tty ();
+ gint active = -1;
if (tty_fd >= 0)
{
struct vt_stat vt_state = { 0 };
@@ -78,19 +74,16 @@ void
vt_set_active (gint number)
{
#ifdef __linux__
- gint tty_fd;
-
g_debug ("Activating VT %d", number);
/* Pretend always active */
if (getuid () != 0)
return;
- tty_fd = open_tty ();
+ gint tty_fd = open_tty ();
if (tty_fd >= 0)
{
int n = number;
-
if (ioctl (tty_fd, VT_ACTIVATE, n) < 0)
{
g_warning ("Error using VT_ACTIVATE %d on /dev/tty0: %s", n, strerror (errno));
@@ -121,9 +114,7 @@ vt_set_active (gint number)
static gboolean
vt_is_used (gint number)
{
- GList *link;
-
- for (link = used_vts; link; link = link->next)
+ for (GList *link = used_vts; link; link = link->next)
{
int n = GPOINTER_TO_INT (link->data);
if (n == number)
@@ -136,9 +127,7 @@ vt_is_used (gint number)
gint
vt_get_min (void)
{
- gint number;
-
- number = config_get_integer (config_get_instance (), "LightDM", "minimum-vt");
+ gint number = config_get_integer (config_get_instance (), "LightDM", "minimum-vt");
if (number < 1)
number = 1;
@@ -148,12 +137,10 @@ vt_get_min (void)
gint
vt_get_unused (void)
{
- gint number;
-
if (getuid () != 0)
return -1;
- number = vt_get_min ();
+ gint number = vt_get_min ();
while (vt_is_used (number))
number++;
diff --git a/src/wayland-session.h b/src/wayland-session.h
index 79282ca6..240c19fb 100644
--- a/src/wayland-session.h
+++ b/src/wayland-session.h
@@ -34,6 +34,8 @@ typedef struct
DisplayServerClass parent_class;
} WaylandSessionClass;
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (WaylandSession, g_object_unref)
+
GType wayland_session_get_type (void);
WaylandSession *wayland_session_new (void);
diff --git a/src/x-authority.c b/src/x-authority.c
index 716a2374..705bb511 100644
--- a/src/x-authority.c
+++ b/src/x-authority.c
@@ -59,9 +59,7 @@ XAuthority *
x_authority_new_cookie (guint16 family, const guint8 *address, gsize address_length, const gchar *number)
{
guint8 cookie[16];
- gint i;
-
- for (i = 0; i < 16; i++)
+ for (gint i = 0; i < 16; i++)
cookie[i] = g_random_int () & 0xFF;
return x_authority_new (family, address, address_length, number, "MIT-MAGIC-COOKIE-1", cookie, 16);
@@ -71,7 +69,6 @@ XAuthority *
x_authority_new_local_cookie (const gchar *number)
{
gchar hostname[1024];
-
gethostname (hostname, 1024);
return x_authority_new_cookie (XAUTH_FAMILY_LOCAL, (guint8 *) hostname, strlen (hostname), number);
}
@@ -164,11 +161,9 @@ x_authority_get_authorization_data (XAuthority *auth)
guint8 *
x_authority_copy_authorization_data (XAuthority *auth)
{
- guint8 *data;
-
g_return_val_if_fail (auth != NULL, NULL);
- data = g_malloc (auth->priv->authorization_data_length);
+ guint8 *data = g_malloc (auth->priv->authorization_data_length);
memcpy (data, auth->priv->authorization_data, auth->priv->authorization_data_length);
return data;
}
@@ -195,8 +190,6 @@ read_uint16 (gchar *data, gsize data_length, gsize *offset, guint16 *value)
static gboolean
read_data (gchar *data, gsize data_length, gsize *offset, guint16 length, guint8 **value)
{
- int i;
-
g_free (*value);
*value = NULL;
@@ -204,7 +197,7 @@ read_data (gchar *data, gsize data_length, gsize *offset, guint16 length, guint8
return FALSE;
*value = g_malloc0 (length + 1);
- for (i = 0; i < length; i++)
+ for (int i = 0; i < length; i++)
(*value)[i] = data[*offset + i];
*offset += length;
(*value)[length] = 0;
@@ -246,47 +239,41 @@ write_string (int fd, const gchar *value)
gboolean
x_authority_write (XAuthority *auth, XAuthWriteMode mode, const gchar *filename, GError **error)
{
- g_autofree gchar *input = NULL;
- gsize input_length = 0, input_offset = 0;
- GList *link, *records = NULL;
- gboolean result = TRUE;
- gboolean matched = FALSE;
- int output_fd;
-
g_return_val_if_fail (auth != NULL, FALSE);
g_return_val_if_fail (filename != NULL, FALSE);
/* Read out existing records */
+ g_autofree gchar *input = NULL;
+ gsize input_length = 0, input_offset = 0;
if (mode != XAUTH_WRITE_MODE_SET)
{
g_autoptr(GError) read_error = NULL;
-
g_file_get_contents (filename, &input, &input_length, &read_error);
if (read_error && !g_error_matches (read_error, G_FILE_ERROR, G_FILE_ERROR_NOENT))
g_warning ("Error reading existing Xauthority: %s", read_error->message);
}
+ GList *records = NULL;
+ gboolean matched = FALSE;
while (input_offset != input_length)
{
- g_autoptr(XAuthority) a = NULL;
- gboolean address_matches = FALSE;
+ g_autoptr(XAuthority) a = g_object_new (X_AUTHORITY_TYPE, NULL);
+
guint16 address_length = 0;
guint16 authorization_data_length = 0;
-
- a = g_object_new (X_AUTHORITY_TYPE, NULL);
-
- result = read_uint16 (input, input_length, &input_offset, &a->priv->family) &&
- read_uint16 (input, input_length, &input_offset, &address_length) &&
- read_data (input, input_length, &input_offset, address_length, &a->priv->address) &&
- read_string (input, input_length, &input_offset, &a->priv->number) &&
- read_string (input, input_length, &input_offset, &a->priv->authorization_name) &&
- read_uint16 (input, input_length, &input_offset, &authorization_data_length) &&
- read_data (input, input_length, &input_offset, authorization_data_length, &a->priv->authorization_data);
+ gboolean result = read_uint16 (input, input_length, &input_offset, &a->priv->family) &&
+ read_uint16 (input, input_length, &input_offset, &address_length) &&
+ read_data (input, input_length, &input_offset, address_length, &a->priv->address) &&
+ read_string (input, input_length, &input_offset, &a->priv->number) &&
+ read_string (input, input_length, &input_offset, &a->priv->authorization_name) &&
+ read_uint16 (input, input_length, &input_offset, &authorization_data_length) &&
+ read_data (input, input_length, &input_offset, authorization_data_length, &a->priv->authorization_data);
a->priv->address_length = address_length;
a->priv->authorization_data_length = authorization_data_length;
if (!result)
break;
+ gboolean address_matches = FALSE;
if (auth->priv->address_length == a->priv->address_length)
{
guint16 i;
@@ -316,7 +303,7 @@ x_authority_write (XAuthority *auth, XAuthWriteMode mode, const gchar *filename,
/* Write records back */
errno = 0;
- output_fd = g_open (filename, O_WRONLY | O_CREAT, S_IRUSR | S_IWUSR);
+ int output_fd = g_open (filename, O_WRONLY | O_CREAT, S_IRUSR | S_IWUSR);
if (output_fd < 0)
{
g_set_error (error,
@@ -329,8 +316,8 @@ x_authority_write (XAuthority *auth, XAuthWriteMode mode, const gchar *filename,
}
errno = 0;
- result = TRUE;
- for (link = records; link && result; link = link->next)
+ gboolean result = TRUE;
+ for (GList *link = records; link && result; link = link->next)
{
XAuthority *a = link->data;
diff --git a/src/x-server-local.c b/src/x-server-local.c
index cfa4ab11..80e0ab0d 100644
--- a/src/x-server-local.c
+++ b/src/x-server-local.c
@@ -91,28 +91,22 @@ find_version (const gchar *line)
const gchar *
x_server_local_get_version (void)
{
- g_autofree gchar *stderr_text = NULL;
- gint exit_status;
- g_auto(GStrv) tokens = NULL;
- guint n_tokens;
-
if (version)
return version;
+ g_autofree gchar *stderr_text = NULL;
+ gint exit_status;
if (!g_spawn_command_line_sync ("X -version", NULL, &stderr_text, &exit_status, NULL))
return NULL;
if (exit_status == EXIT_SUCCESS)
{
- g_auto(GStrv) lines = NULL;
- int i;
-
- lines = g_strsplit (stderr_text, "\n", -1);
- for (i = 0; lines[i] && !version; i++)
+ g_auto(GStrv) lines = g_strsplit (stderr_text, "\n", -1);
+ for (int i = 0; lines[i] && !version; i++)
version = find_version (lines[i]);
}
- tokens = g_strsplit (version, ".", 3);
- n_tokens = g_strv_length (tokens);
+ g_auto(GStrv) tokens = g_strsplit (version, ".", 3);
+ guint n_tokens = g_strv_length (tokens);
version_major = n_tokens > 0 ? atoi (tokens[0]) : 0;
version_minor = n_tokens > 1 ? atoi (tokens[1]) : 0;
@@ -132,13 +126,8 @@ x_server_local_version_compare (guint major, guint minor)
static gboolean
display_number_in_use (guint display_number)
{
- GList *link;
- g_autofree gchar *path = NULL;
- gboolean in_use;
- g_autofree gchar *data = NULL;
-
/* See if we know we are managing a server with that number */
- for (link = display_numbers; link; link = link->next)
+ for (GList *link = display_numbers; link; link = link->next)
{
guint number = GPOINTER_TO_UINT (link->data);
if (number == display_number)
@@ -146,15 +135,14 @@ display_number_in_use (guint display_number)
}
/* See if an X server that we don't know of has a lock on that number */
- path = g_strdup_printf ("/tmp/.X%d-lock", display_number);
- in_use = g_file_test (path, G_FILE_TEST_EXISTS);
+ g_autofree gchar *path = g_strdup_printf ("/tmp/.X%d-lock", display_number);
+ gboolean in_use = g_file_test (path, G_FILE_TEST_EXISTS);
/* See if that lock file is valid, ignore it if the contents are invalid or the process doesn't exist */
+ g_autofree gchar *data = NULL;
if (in_use && g_file_get_contents (path, &data, NULL, NULL))
{
- int pid;
-
- pid = atoi (g_strstrip (data));
+ int pid = atoi (g_strstrip (data));
errno = 0;
if (pid < 0 || (kill (pid, 0) < 0 && errno == ESRCH))
@@ -167,9 +155,7 @@ display_number_in_use (guint display_number)
guint
x_server_local_get_unused_display_number (void)
{
- guint number;
-
- number = config_get_integer (config_get_instance (), "LightDM", "minimum-display-number");
+ guint number = config_get_integer (config_get_instance (), "LightDM", "minimum-display-number");
while (display_number_in_use (number))
number++;
@@ -181,8 +167,7 @@ x_server_local_get_unused_display_number (void)
void
x_server_local_release_display_number (guint display_number)
{
- GList *link;
- for (link = display_numbers; link; link = link->next)
+ for (GList *link = display_numbers; link; link = link->next)
{
guint number = GPOINTER_TO_UINT (link->data);
if (number == display_number)
@@ -321,13 +306,9 @@ x_server_local_get_authority_file_path (XServerLocal *server)
static gchar *
get_absolute_command (const gchar *command)
{
- g_auto(GStrv) tokens = NULL;
- g_autofree gchar *absolute_binary = NULL;
+ g_auto(GStrv) tokens = g_strsplit (command, " ", 2);
+ g_autofree gchar *absolute_binary = g_find_program_in_path (tokens[0]);
gchar *absolute_command = NULL;
-
- tokens = g_strsplit (command, " ", 2);
-
- absolute_binary = g_find_program_in_path (tokens[0]);
if (absolute_binary)
{
if (tokens[1])
@@ -342,10 +323,8 @@ get_absolute_command (const gchar *command)
static void
x_server_local_run (Process *process, gpointer user_data)
{
- int fd;
-
/* Make input non-blocking */
- fd = open ("/dev/null", O_RDONLY);
+ int fd = open ("/dev/null", O_RDONLY);
dup2 (fd, STDIN_FILENO);
close (fd);
@@ -407,10 +386,7 @@ stopped_cb (Process *process, XServerLocal *server)
static void
write_authority_file (XServerLocal *server)
{
- XAuthority *authority;
- g_autoptr(GError) error = NULL;
-
- authority = x_server_get_authority (X_SERVER (server));
+ XAuthority *authority = x_server_get_authority (X_SERVER (server));
if (!authority)
return;
@@ -430,6 +406,7 @@ write_authority_file (XServerLocal *server)
l_debug (server, "Writing X server authority to %s", server->priv->authority_file);
+ g_autoptr(GError) error = NULL;
x_authority_write (authority, XAUTH_WRITE_MODE_REPLACE, server->priv->authority_file, &error);
if (error)
l_warning (server, "Failed to write authority: %s", error->message);
@@ -439,13 +416,6 @@ static gboolean
x_server_local_start (DisplayServer *display_server)
{
XServerLocal *server = X_SERVER_LOCAL (display_server);
- ProcessRunFunc run_cb;
- gboolean result, backup_logs;
- g_autofree gchar *filename = NULL;
- g_autofree gchar *dir = NULL;
- g_autofree gchar *log_file = NULL;
- g_autofree gchar *absolute_command = NULL;
- g_autoptr(GString) command = NULL;
g_return_val_if_fail (server->priv->x_server_process == NULL, FALSE);
@@ -453,28 +423,28 @@ x_server_local_start (DisplayServer *display_server)
g_return_val_if_fail (server->priv->command != NULL, FALSE);
- run_cb = X_SERVER_LOCAL_GET_CLASS (server)->get_run_function (server);
+ ProcessRunFunc run_cb = X_SERVER_LOCAL_GET_CLASS (server)->get_run_function (server);
server->priv->x_server_process = process_new (run_cb, server);
process_set_clear_environment (server->priv->x_server_process, TRUE);
g_signal_connect (server->priv->x_server_process, PROCESS_SIGNAL_GOT_SIGNAL, G_CALLBACK (got_signal_cb), server);
g_signal_connect (server->priv->x_server_process, PROCESS_SIGNAL_STOPPED, G_CALLBACK (stopped_cb), server);
/* Setup logging */
- filename = g_strdup_printf ("x-%d.log", x_server_get_display_number (X_SERVER (server)));
- dir = config_get_string (config_get_instance (), "LightDM", "log-directory");
- log_file = g_build_filename (dir, filename, NULL);
- backup_logs = config_get_boolean (config_get_instance (), "LightDM", "backup-logs");
+ g_autofree gchar *filename = g_strdup_printf ("x-%d.log", x_server_get_display_number (X_SERVER (server)));
+ g_autofree gchar *dir = config_get_string (config_get_instance (), "LightDM", "log-directory");
+ g_autofree gchar *log_file = g_build_filename (dir, filename, NULL);
+ gboolean backup_logs = config_get_boolean (config_get_instance (), "LightDM", "backup-logs");
process_set_log_file (server->priv->x_server_process, log_file, X_SERVER_LOCAL_GET_CLASS (server)->get_log_stdout (server), backup_logs ? LOG_MODE_BACKUP_AND_TRUNCATE : LOG_MODE_APPEND);
l_debug (display_server, "Logging to %s", log_file);
- absolute_command = get_absolute_command (server->priv->command);
+ g_autofree gchar *absolute_command = get_absolute_command (server->priv->command);
if (!absolute_command)
{
l_debug (display_server, "Can't launch X server %s, not found in path", server->priv->command);
stopped_cb (server->priv->x_server_process, X_SERVER_LOCAL (server));
return FALSE;
}
- command = g_string_new (absolute_command);
+ g_autoptr(GString) command = g_string_new (absolute_command);
g_string_append_printf (command, " :%d", server->priv->display_number);
@@ -547,12 +517,10 @@ x_server_local_start (DisplayServer *display_server)
if (g_getenv ("LIGHTDM_TEST_ROOT"))
process_set_env (server->priv->x_server_process, "LIGHTDM_TEST_ROOT", g_getenv ("LIGHTDM_TEST_ROOT"));
- result = process_start (server->priv->x_server_process, FALSE);
-
+ gboolean result = process_start (server->priv->x_server_process, FALSE);
if (result)
l_debug (display_server, "Waiting for ready signal from X server :%d", server->priv->display_number);
-
- if (!result)
+ else
stopped_cb (server->priv->x_server_process, X_SERVER_LOCAL (server));
return result;
diff --git a/src/x-server-local.h b/src/x-server-local.h
index b6a2b409..c1714585 100644
--- a/src/x-server-local.h
+++ b/src/x-server-local.h
@@ -40,6 +40,8 @@ typedef struct
gboolean (*start)(DisplayServer *server);
} XServerLocalClass;
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (XServerLocal, g_object_unref)
+
const gchar *x_server_local_get_version (void);
gint x_server_local_version_compare (guint major, guint minor);
diff --git a/src/x-server-xmir.c b/src/x-server-xmir.c
index e2c15e89..df37bad4 100644
--- a/src/x-server-xmir.c
+++ b/src/x-server-xmir.c
@@ -32,13 +32,11 @@ G_DEFINE_TYPE (XServerXmir, x_server_xmir, X_SERVER_LOCAL_TYPE)
static void
compositor_ready_cb (UnitySystemCompositor *compositor, XServerXmir *server)
{
- gboolean result;
-
if (!server->priv->waiting_for_compositor)
return;
server->priv->waiting_for_compositor = FALSE;
- result = X_SERVER_LOCAL_CLASS (x_server_xmir_parent_class)->start (DISPLAY_SERVER (server));
+ gboolean result = X_SERVER_LOCAL_CLASS (x_server_xmir_parent_class)->start (DISPLAY_SERVER (server));
if (!result)
display_server_stop (DISPLAY_SERVER (server));
}
@@ -52,9 +50,7 @@ compositor_stopped_cb (UnitySystemCompositor *compositor, XServerXmir *server)
XServerXmir *
x_server_xmir_new (UnitySystemCompositor *compositor)
{
- XServerXmir *server;
-
- server = g_object_new (X_SERVER_XMIR_TYPE, NULL);
+ XServerXmir *server = g_object_new (X_SERVER_XMIR_TYPE, NULL);
x_server_local_set_command (X_SERVER_LOCAL (server), "Xmir");
server->priv->compositor = g_object_ref (compositor);
g_signal_connect (compositor, DISPLAY_SERVER_SIGNAL_READY, G_CALLBACK (compositor_ready_cb), server);
diff --git a/src/x-server-xmir.h b/src/x-server-xmir.h
index 65acd238..6d1d45de 100644
--- a/src/x-server-xmir.h
+++ b/src/x-server-xmir.h
@@ -33,6 +33,8 @@ typedef struct
XServerLocalClass parent_class;
} XServerXmirClass;
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (XServerXmir, g_object_unref)
+
GType x_server_xmir_get_type (void);
XServerXmir *x_server_xmir_new (UnitySystemCompositor *compositor);
diff --git a/src/x-server-xvnc.h b/src/x-server-xvnc.h
index e56ea7cb..accea198 100644
--- a/src/x-server-xvnc.h
+++ b/src/x-server-xvnc.h
@@ -35,6 +35,8 @@ typedef struct
void (*ready)(XServerXVNC *server);
} XServerXVNCClass;
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (XServerXVNC, g_object_unref)
+
GType x_server_xvnc_get_type (void);
gboolean x_server_xvnc_check_available (void);
diff --git a/src/x-server.c b/src/x-server.c
index d6423f18..d6267ae0 100644
--- a/src/x-server.c
+++ b/src/x-server.c
@@ -106,8 +106,8 @@ static gboolean
x_server_start (DisplayServer *display_server)
{
XServer *server = X_SERVER (display_server);
- xcb_auth_info_t *auth = NULL, a;
+ xcb_auth_info_t *auth = NULL, a;
if (server->priv->authority)
{
a.namelen = strlen (x_authority_get_authorization_name (server->priv->authority));
@@ -132,13 +132,11 @@ x_server_start (DisplayServer *display_server)
static void
x_server_connect_session (DisplayServer *display_server, Session *session)
{
- gint vt;
-
session_set_env (session, "XDG_SESSION_TYPE", "x11");
display_server = session_get_display_server (session);
- vt = display_server_get_vt (display_server);
+ gint vt = display_server_get_vt (display_server);
if (vt > 0)
{
g_autofree gchar *tty_text = NULL;
@@ -164,10 +162,8 @@ x_server_connect_session (DisplayServer *display_server, Session *session)
static void
x_server_disconnect_session (DisplayServer *display_server, Session *session)
{
- gint vt;
-
session_unset_env (session, "XDG_SESSION_TYPE");
- vt = display_server_get_vt (display_server);
+ gint vt = display_server_get_vt (display_server);
if (vt > 0)
{
session_set_tty (session, NULL);
diff --git a/src/x-server.h b/src/x-server.h
index d83b9329..2d38cb2f 100644
--- a/src/x-server.h
+++ b/src/x-server.h
@@ -38,6 +38,8 @@ typedef struct
guint (*get_display_number) (XServer *server);
} XServerClass;
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (XServer, g_object_unref)
+
GType x_server_get_type (void);
void x_server_set_hostname (XServer *server, const gchar *hostname);
diff --git a/src/xdmcp-protocol.c b/src/xdmcp-protocol.c
index bedcc1a0..265f3361 100644
--- a/src/xdmcp-protocol.c
+++ b/src/xdmcp-protocol.c
@@ -25,15 +25,13 @@ typedef struct
static guint8
read_card8 (PacketReader *reader)
{
- guint8 value;
-
if (reader->remaining < 1)
{
reader->overflow = TRUE;
return 0;
}
- value = reader->data[0];
+ guint8 value = reader->data[0];
reader->data++;
reader->remaining--;
@@ -55,22 +53,18 @@ read_card32 (PacketReader *reader)
static void
read_data (PacketReader *reader, XDMCPData *data)
{
- guint16 i;
-
data->length = read_card16 (reader);
data->data = g_malloc (sizeof (guint8) * data->length);
- for (i = 0; i < data->length; i++)
+ for (guint16 i = 0; i < data->length; i++)
data->data[i] = read_card8 (reader);
}
static gchar *
read_string (PacketReader *reader)
{
- guint16 length, i;
- gchar *string;
-
- length = read_card16 (reader);
- string = g_malloc (sizeof (gchar) * (length + 1));
+ guint16 length = read_card16 (reader);
+ gchar *string = g_malloc (sizeof (gchar) * (length + 1));
+ guint16 i;
for (i = 0; i < length; i++)
string[i] = (gchar) read_card8 (reader);
string[i] = '\0';
@@ -81,11 +75,9 @@ read_string (PacketReader *reader)
static gchar **
read_string_array (PacketReader *reader)
{
- guint8 n_strings, i;
- gchar **strings;
-
- n_strings = read_card8 (reader);
- strings = g_malloc (sizeof (gchar *) * (n_strings + 1));
+ guint8 n_strings = read_card8 (reader);
+ gchar **strings = g_malloc (sizeof (gchar *) * (n_strings + 1));
+ guint8 i;
for (i = 0; i < n_strings; i++)
strings[i] = read_string (reader);
strings[i] = NULL;
@@ -133,39 +125,31 @@ write_card32 (PacketWriter *writer, guint32 value)
static void
write_data (PacketWriter *writer, const XDMCPData *value)
{
- guint16 i;
-
write_card16 (writer, value->length);
- for (i = 0; i < value->length; i++)
+ for (guint16 i = 0; i < value->length; i++)
write_card8 (writer, value->data[i]);
}
static void
write_string (PacketWriter *writer, const gchar *value)
{
- const gchar *c;
-
write_card16 (writer, strlen (value));
- for (c = value; *c; c++)
+ for (const gchar *c = value; *c; c++)
write_card8 (writer, *c);
}
static void
write_string_array (PacketWriter *writer, gchar **values)
{
- gchar **value;
-
write_card8 (writer, g_strv_length (values));
- for (value = values; *value; value++)
+ for (gchar **value = values; *value; value++)
write_string (writer, *value);
}
XDMCPPacket *
xdmcp_packet_alloc (XDMCPOpcode opcode)
{
- XDMCPPacket *packet;
-
- packet = g_malloc0 (sizeof (XDMCPPacket));
+ XDMCPPacket *packet = g_malloc0 (sizeof (XDMCPPacket));
packet->opcode = opcode;
return packet;
@@ -174,19 +158,14 @@ xdmcp_packet_alloc (XDMCPOpcode opcode)
XDMCPPacket *
xdmcp_packet_decode (const guint8 *data, gsize data_length)
{
- XDMCPPacket *packet;
- guint16 version, opcode, length;
PacketReader reader;
- int i;
- gboolean failed = FALSE;
-
reader.data = data;
reader.remaining = data_length;
reader.overflow = FALSE;
- version = read_card16 (&reader);
- opcode = read_card16 (&reader);
- length = read_card16 (&reader);
+ guint16 version = read_card16 (&reader);
+ guint16 opcode = read_card16 (&reader);
+ guint16 length = read_card16 (&reader);
if (reader.overflow)
{
@@ -204,7 +183,8 @@ xdmcp_packet_decode (const guint8 *data, gsize data_length)
return NULL;
}
- packet = xdmcp_packet_alloc (opcode);
+ XDMCPPacket *packet = xdmcp_packet_alloc (opcode);
+ gboolean failed = FALSE;
switch (packet->opcode)
{
case XDMCP_BroadcastQuery:
@@ -230,14 +210,14 @@ xdmcp_packet_decode (const guint8 *data, gsize data_length)
packet->Request.display_number = read_card16 (&reader);
packet->Request.n_connections = read_card8 (&reader);
packet->Request.connections = g_malloc (sizeof (XDMCPConnection) * packet->Request.n_connections);
- for (i = 0; i < packet->Request.n_connections; i++)
+ for (int i = 0; i < packet->Request.n_connections; i++)
packet->Request.connections[i].type = read_card16 (&reader);
if (read_card8 (&reader) != packet->Request.n_connections)
{
g_warning ("Number of connection types does not match number of connection addresses");
failed = TRUE;
}
- for (i = 0; i < packet->Request.n_connections; i++)
+ for (int i = 0; i < packet->Request.n_connections; i++)
read_data (&reader, &packet->Request.connections[i].address);
packet->Request.authentication_name = read_string (&reader);
read_data (&reader, &packet->Request.authentication_data);
@@ -307,13 +287,10 @@ xdmcp_packet_decode (const guint8 *data, gsize data_length)
gssize
xdmcp_packet_encode (XDMCPPacket *packet, guint8 *data, gsize max_length)
{
- guint16 length;
- PacketWriter writer;
- int i;
-
if (max_length < 6)
return -1;
+ PacketWriter writer;
writer.data = data + 6;
writer.remaining = max_length - 6;
writer.overflow = FALSE;
@@ -342,10 +319,10 @@ xdmcp_packet_encode (XDMCPPacket *packet, guint8 *data, gsize max_length)
case XDMCP_Request:
write_card16 (&writer, packet->Request.display_number);
write_card8 (&writer, packet->Request.n_connections);
- for (i = 0; i < packet->Request.n_connections; i++)
+ for (int i = 0; i < packet->Request.n_connections; i++)
write_card16 (&writer, packet->Request.connections[i].type);
write_card8 (&writer, packet->Request.n_connections);
- for (i = 0; i < packet->Request.n_connections; i++)
+ for (int i = 0; i < packet->Request.n_connections; i++)
write_data (&writer, &packet->Request.connections[i].address);
write_string (&writer, packet->Request.authentication_name);
write_data (&writer, &packet->Request.authentication_data);
@@ -386,7 +363,7 @@ xdmcp_packet_encode (XDMCPPacket *packet, guint8 *data, gsize max_length)
break;
}
- length = max_length - 6 - writer.remaining;
+ guint16 length = max_length - 6 - writer.remaining;
/* Write header */
writer.data = data;
@@ -408,11 +385,8 @@ xdmcp_packet_encode (XDMCPPacket *packet, guint8 *data, gsize max_length)
static gchar *
data_tostring (XDMCPData *data)
{
- g_autoptr(GString) s = NULL;
- guint16 i;
-
- s = g_string_new ("");
- for (i = 0; i < data->length; i++)
+ g_autoptr(GString) s = g_string_new ("");
+ for (guint16 i = 0; i < data->length; i++)
g_string_append_printf (s, "%02X", data->data[i]);
return g_steal_pointer (&s->str);
@@ -421,11 +395,8 @@ data_tostring (XDMCPData *data)
static gchar *
string_list_tostring (gchar **strings)
{
- g_autoptr(GString) s = NULL;
- gchar **i;
-
- s = g_string_new ("");
- for (i = strings; *i; i++)
+ g_autoptr(GString) s = g_string_new ("");
+ for (gchar **i = strings; *i; i++)
{
if (i != strings)
g_string_append (s, " ");
@@ -474,16 +445,14 @@ xdmcp_packet_tostring (XDMCPPacket *packet)
g_autofree gchar *names_text = string_list_tostring (packet->Request.authorization_names);
g_autofree gchar *data_text = data_tostring (&packet->Request.authentication_data);
g_autoptr(GString) connections_text = g_string_new ("");
- gint i;
-
- for (i = 0; i < packet->Request.n_connections; i++)
+ for (gint i = 0; i < packet->Request.n_connections; i++)
{
XDMCPConnection *connection = &packet->Request.connections[i];
- GSocketFamily family = G_SOCKET_FAMILY_INVALID;
if (i != 0)
g_string_append (connections_text, " ");
+ GSocketFamily family = G_SOCKET_FAMILY_INVALID;
if (connection->type == XAUTH_FAMILY_INTERNET && connection->address.length == 4)
family = G_SOCKET_FAMILY_IPV4;
else if (connection->type == XAUTH_FAMILY_INTERNET6 && connection->address.length == 16)
@@ -540,8 +509,6 @@ xdmcp_packet_tostring (XDMCPPacket *packet)
void
xdmcp_packet_free (XDMCPPacket *packet)
{
- gint i;
-
if (packet == NULL)
return;
@@ -554,7 +521,7 @@ xdmcp_packet_free (XDMCPPacket *packet)
break;
case XDMCP_ForwardQuery:
g_free (packet->ForwardQuery.client_address.data);
- g_free (packet->ForwardQuery.client_port.data);
+ g_free (packet->ForwardQuery.client_port.data);
g_strfreev (packet->ForwardQuery.authentication_names);
break;
case XDMCP_Willing:
@@ -567,7 +534,7 @@ xdmcp_packet_free (XDMCPPacket *packet)
g_free (packet->Unwilling.status);
break;
case XDMCP_Request:
- for (i = 0; i < packet->Request.n_connections; i++)
+ for (gint i = 0; i < packet->Request.n_connections; i++)
g_free (packet->Request.connections[i].address.data);
g_free (packet->Request.connections);
g_free (packet->Request.authentication_name);
diff --git a/src/xdmcp-server.c b/src/xdmcp-server.c
index 8d18707f..f1d351a0 100644
--- a/src/xdmcp-server.c
+++ b/src/xdmcp-server.c
@@ -152,15 +152,13 @@ session_timeout_cb (XDMCPSession *session)
static XDMCPSession *
add_session (XDMCPServer *server)
{
- XDMCPSession *session;
guint16 id;
-
do
{
id = g_random_int () & 0xFFFFFFFF;
} while (g_hash_table_lookup (server->priv->sessions, GINT_TO_POINTER ((gint) id)));
- session = xdmcp_session_new (id);
+ XDMCPSession *session = xdmcp_session_new (id);
session->priv->server = server;
g_hash_table_insert (server->priv->sessions, GINT_TO_POINTER ((gint) id), g_object_ref (session));
session->priv->inactive_timeout = g_timeout_add (MANAGE_TIMEOUT, (GSourceFunc) session_timeout_cb, session);
@@ -177,29 +175,23 @@ get_session (XDMCPServer *server, guint16 id)
static gchar *
socket_address_to_string (GSocketAddress *address)
{
- g_autofree gchar *inet_text = NULL;
-
- inet_text = g_inet_address_to_string (g_inet_socket_address_get_address (G_INET_SOCKET_ADDRESS (address)));
+ g_autofree gchar *inet_text = g_inet_address_to_string (g_inet_socket_address_get_address (G_INET_SOCKET_ADDRESS (address)));
return g_strdup_printf ("%s:%d", inet_text, g_inet_socket_address_get_port (G_INET_SOCKET_ADDRESS (address)));
}
static void
send_packet (GSocket *socket, GSocketAddress *address, XDMCPPacket *packet)
{
- g_autofree gchar *address_string = NULL;
- guint8 data[1024];
- gssize n_written;
-
- address_string = socket_address_to_string (address);
+ g_autofree gchar *address_string = socket_address_to_string (address);
g_debug ("Send %s to %s", xdmcp_packet_tostring (packet), address_string);
- n_written = xdmcp_packet_encode (packet, data, 1024);
+ guint8 data[1024];
+ gssize n_written = xdmcp_packet_encode (packet, data, 1024);
if (n_written < 0)
- g_critical ("Failed to encode XDMCP packet");
+ g_critical ("Failed to encode XDMCP packet");
else
{
g_autoptr(GError) error = NULL;
-
g_socket_send_to (socket, address, (gchar *) data, n_written, NULL, &error);
if (error)
g_warning ("Error sending packet: %s", error->message);
@@ -218,15 +210,12 @@ get_authentication_name (XDMCPServer *server)
static void
handle_query (XDMCPServer *server, GSocket *socket, GSocketAddress *address, gchar **authentication_names)
{
- XDMCPPacket *response;
- gchar **i;
- gchar *authentication_name = NULL;
-
/* If no authentication requested and we are configured for none then allow */
+ const gchar *authentication_name = NULL;
if (authentication_names[0] == NULL && server->priv->key == NULL)
authentication_name = "";
- for (i = authentication_names; *i; i++)
+ for (gchar **i = authentication_names; *i; i++)
{
if (strcmp (*i, get_authentication_name (server)) == 0 && server->priv->key != NULL)
{
@@ -235,6 +224,7 @@ handle_query (XDMCPServer *server, GSocket *socket, GSocketAddress *address, gch
}
}
+ XDMCPPacket *response;
if (authentication_name)
{
response = xdmcp_packet_alloc (XDMCP_Willing);
@@ -260,13 +250,7 @@ handle_query (XDMCPServer *server, GSocket *socket, GSocketAddress *address, gch
static void
handle_forward_query (XDMCPServer *server, GSocket *socket, GSocketAddress *address, XDMCPPacket *packet)
{
- GSocketFamily family;
- g_autoptr(GInetAddress) client_inet_address = NULL;
- g_autoptr(GSocketAddress) client_address = NULL;
- gint i;
- guint16 port = 0;
-
- family = g_socket_get_family (socket);
+ GSocketFamily family = g_socket_get_family (socket);
switch (family)
{
case G_SOCKET_FAMILY_IPV4:
@@ -288,11 +272,12 @@ handle_forward_query (XDMCPServer *server, GSocket *socket, GSocketAddress *addr
return;
}
- for (i = 0; i < packet->ForwardQuery.client_port.length; i++)
+ guint16 port = 0;
+ for (int i = 0; i < packet->ForwardQuery.client_port.length; i++)
port = port << 8 | packet->ForwardQuery.client_port.data[i];
- client_inet_address = g_inet_address_new_from_bytes (packet->ForwardQuery.client_address.data, family);
- client_address = g_inet_socket_address_new (client_inet_address, port);
+ g_autoptr(GInetAddress) client_inet_address = g_inet_address_new_from_bytes (packet->ForwardQuery.client_address.data, family);
+ g_autoptr(GSocketAddress) client_address = g_inet_socket_address_new (client_inet_address, port);
handle_query (server, socket, client_address, packet->ForwardQuery.authentication_names);
}
@@ -312,12 +297,10 @@ atox (char c)
static void
decode_key (const gchar *key, guint8 *data)
{
- gint i;
-
memset (data, 0, 8);
if (strncmp (key, "0x", 2) == 0 || strncmp (key, "0X", 2) == 0)
{
- for (i = 0; i < 8; i++)
+ for (gint i = 0; i < 8; i++)
{
if (key[i*2] == '\0')
break;
@@ -329,7 +312,7 @@ decode_key (const gchar *key, guint8 *data)
}
else
{
- for (i = 1; i < 8 && key[i-1]; i++)
+ for (gint i = 1; i < 8 && key[i-1]; i++)
data[i] = key[i-1];
}
}
@@ -361,23 +344,18 @@ compare_addresses (gconstpointer a, gconstpointer b, gpointer user_data)
const AddrSortItem *item_a = a;
const AddrSortItem *item_b = b;
GInetAddress *source_address = user_data;
- GSocketFamily family_a;
- GSocketFamily family_b;
- gboolean is_link_local;
/* Prefer non link-local addresses */
- is_link_local = g_inet_address_get_is_link_local (item_a->address);
+ gboolean is_link_local = g_inet_address_get_is_link_local (item_a->address);
if (is_link_local != g_inet_address_get_is_link_local (item_b->address))
return is_link_local ? 1 : -1;
/* Prefer the source address family */
- family_a = g_inet_address_get_family (item_a->address);
- family_b = g_inet_address_get_family (item_b->address);
+ GSocketFamily family_a = g_inet_address_get_family (item_a->address);
+ GSocketFamily family_b = g_inet_address_get_family (item_b->address);
if (family_a != family_b)
{
- GSocketFamily family;
-
- family = g_inet_address_get_family (source_address);
+ GSocketFamily family = g_inet_address_get_family (source_address);
if (family_a == family)
return -1;
if (family_b == family)
@@ -402,20 +380,16 @@ compare_addresses (gconstpointer a, gconstpointer b, gpointer user_data)
static XDMCPConnection *
choose_connection (XDMCPPacket *packet, GInetAddress *source_address)
{
- gsize addresses_length, i;
- GArray *addresses;
- gssize index = -1;
- AddrSortItem addr;
-
- addresses_length = packet->Request.n_connections;
+ gsize addresses_length = packet->Request.n_connections;
if (addresses_length == 0)
return NULL;
- addresses = g_array_sized_new (FALSE, FALSE, sizeof addr, addresses_length);
+ AddrSortItem addr;
+ GArray *addresses = g_array_sized_new (FALSE, FALSE, sizeof addr, addresses_length);
if (!addresses)
return NULL;
- for (i = 0; i < addresses_length; i++)
+ for (gsize i = 0; i < addresses_length; i++)
{
addr.address = connection_to_address (&packet->Request.connections[i]);
if (addr.address)
@@ -429,11 +403,12 @@ choose_connection (XDMCPPacket *packet, GInetAddress *source_address)
g_array_sort_with_data (addresses, compare_addresses, source_address);
/* Use the best address */
+ gssize index = -1;
if (addresses->len)
index = g_array_index (addresses, AddrSortItem, 0).index;
/* Free the local sort array and items */
- for (i = 0; i < addresses->len; i++)
+ for (gsize i = 0; i < addresses->len; i++)
g_object_unref (g_array_index (addresses, AddrSortItem, i).address);
g_array_unref (addresses);
@@ -443,28 +418,22 @@ choose_connection (XDMCPPacket *packet, GInetAddress *source_address)
static gboolean
has_string (gchar **list, const gchar *text)
{
- gchar **i;
-
- for (i = list; *i; i++)
+ for (gchar **i = list; *i; i++)
if (strcmp (*i, text) == 0)
return TRUE;
-
+
return FALSE;
}
static void
handle_request (XDMCPServer *server, GSocket *socket, GSocketAddress *address, XDMCPPacket *packet)
{
- XDMCPPacket *response;
- XDMCPSession *session;
- gchar *authentication_name = NULL, *decline_status = NULL, *authorization_name;
- g_autofree gchar *display_number = NULL;
- guint8 *authentication_data = NULL, *authorization_data = NULL, *session_authorization_data = NULL;
- gsize authentication_data_length = 0, authorization_data_length = 0, session_authorization_data_length = 0;
- XDMCPConnection *connection;
- XdmAuthKeyRec rho;
-
/* Check authentication */
+ g_autofree gchar *authentication_name = NULL;
+ g_autofree guint8 *authentication_data = NULL;
+ gsize authentication_data_length = 0;
+ g_autofree gchar *decline_status = NULL;
+ XdmAuthKeyRec rho;
if (strcmp (packet->Request.authentication_name, "") == 0)
{
if (!server->priv->key)
@@ -490,7 +459,7 @@ handle_request (XDMCPServer *server, GSocket *socket, GSocketAddress *address, X
authentication_name = g_strdup ("XDM-AUTHENTICATION-1");
authentication_data = g_malloc (sizeof (guint8) * 8);
authentication_data_length = 8;
-
+
XdmcpUnwrap (input, key, rho.data, authentication_data_length);
XdmcpIncrementKey (&rho);
XdmcpWrap (rho.data, key, authentication_data, authentication_data_length);
@@ -512,7 +481,7 @@ handle_request (XDMCPServer *server, GSocket *socket, GSocketAddress *address, X
}
/* Choose an address to connect back on */
- connection = choose_connection (packet, g_inet_socket_address_get_address (G_INET_SOCKET_ADDRESS (address)));
+ XDMCPConnection *connection = choose_connection (packet, g_inet_socket_address_get_address (G_INET_SOCKET_ADDRESS (address)));
if (!connection && !decline_status)
decline_status = g_strdup ("No valid address found");
@@ -522,10 +491,10 @@ handle_request (XDMCPServer *server, GSocket *socket, GSocketAddress *address, X
/* Decline if request was not valid */
if (decline_status)
{
- response = xdmcp_packet_alloc (XDMCP_Decline);
- response->Decline.status = decline_status;
- response->Decline.authentication_name = authentication_name;
- response->Decline.authentication_data.data = authentication_data;
+ XDMCPPacket *response = xdmcp_packet_alloc (XDMCP_Decline);
+ response->Decline.status = g_steal_pointer (&decline_status);
+ response->Decline.authentication_name = g_steal_pointer (&authentication_name);
+ response->Decline.authentication_data.data = g_steal_pointer (&authentication_data);
response->Decline.authentication_data.length = authentication_data_length;
send_packet (socket, address, response);
xdmcp_packet_free (response);
@@ -533,18 +502,22 @@ handle_request (XDMCPServer *server, GSocket *socket, GSocketAddress *address, X
}
/* Generate authorization data */
+ g_autofree gchar *authorization_name = NULL;
+ g_autofree guint8 *authorization_data = NULL;
+ gsize authorization_data_length = 0;
+ g_autofree guint8 *session_authorization_data = NULL;
+ gsize session_authorization_data_length = 0;
if (server->priv->key)
{
- gint i;
- guint8 key[8], session_key[8];
-
/* Setup key */
+ guint8 key[8];
decode_key (server->priv->key, key);
/* Generate a private session key */
// FIXME: Pick a good DES key?
+ guint8 session_key[8];
session_key[0] = 0;
- for (i = 1; i < 8; i++)
+ for (gint i = 1; i < 8; i++)
session_key[i] = g_random_int () & 0xFF;
/* Encrypt the session key and send it to the server */
@@ -562,10 +535,8 @@ handle_request (XDMCPServer *server, GSocket *socket, GSocketAddress *address, X
}
else
{
- g_autoptr(XAuthority) auth = NULL;
-
/* Data is the cookie */
- auth = x_authority_new_cookie (XAUTH_FAMILY_WILD, NULL, 0, "");
+ g_autoptr(XAuthority) auth = x_authority_new_cookie (XAUTH_FAMILY_WILD, NULL, 0, "");
authorization_data = x_authority_copy_authorization_data (auth);
authorization_data_length = x_authority_get_authorization_data_length (auth);
authorization_name = g_strdup ("MIT-MAGIC-COOKIE-1");
@@ -573,10 +544,10 @@ handle_request (XDMCPServer *server, GSocket *socket, GSocketAddress *address, X
session_authorization_data_length = x_authority_get_authorization_data_length (auth);
}
- session = add_session (server);
+ XDMCPSession *session = add_session (server);
session->priv->address = connection_to_address (connection);
session->priv->display_number = packet->Request.display_number;
- display_number = g_strdup_printf ("%d", packet->Request.display_number);
+ g_autofree gchar *display_number = g_strdup_printf ("%d", packet->Request.display_number);
/* We need to check if this is the loopback address and set the authority
* for a local connection if this is so as XCB treats "127.0.0.1" as local
@@ -603,13 +574,13 @@ handle_request (XDMCPServer *server, GSocket *socket, GSocketAddress *address, X
session_authorization_data,
session_authorization_data_length);
- response = xdmcp_packet_alloc (XDMCP_Accept);
+ XDMCPPacket *response = xdmcp_packet_alloc (XDMCP_Accept);
response->Accept.session_id = xdmcp_session_get_id (session);
- response->Accept.authentication_name = authentication_name;
- response->Accept.authentication_data.data = authentication_data;
+ response->Accept.authentication_name = g_steal_pointer (&authentication_name);
+ response->Accept.authentication_data.data = g_steal_pointer (&authentication_data);
response->Accept.authentication_data.length = authentication_data_length;
- response->Accept.authorization_name = authorization_name;
- response->Accept.authorization_data.data = authorization_data;
+ response->Accept.authorization_name = g_steal_pointer (&authorization_name);
+ response->Accept.authorization_data.data = g_steal_pointer (&authorization_data);
response->Accept.authorization_data.length = authorization_data_length;
send_packet (socket, address, response);
xdmcp_packet_free (response);
@@ -618,19 +589,13 @@ handle_request (XDMCPServer *server, GSocket *socket, GSocketAddress *address, X
static void
handle_manage (XDMCPServer *server, GSocket *socket, GSocketAddress *address, XDMCPPacket *packet)
{
- XDMCPSession *session;
- gboolean result;
-
- session = get_session (server, packet->Manage.session_id);
+ XDMCPSession *session = get_session (server, packet->Manage.session_id);
if (!session)
{
- XDMCPPacket *response;
-
- response = xdmcp_packet_alloc (XDMCP_Refuse);
+ XDMCPPacket *response = xdmcp_packet_alloc (XDMCP_Refuse);
response->Refuse.session_id = packet->Manage.session_id;
send_packet (socket, address, response);
xdmcp_packet_free (response);
-
return;
}
@@ -657,6 +622,7 @@ handle_manage (XDMCPServer *server, GSocket *socket, GSocketAddress *address, XD
session->priv->display_class = g_strdup (packet->Manage.display_class);
+ gboolean result = FALSE;
g_signal_emit (server, signals[NEW_SESSION], 0, session, &result);
if (result)
{
@@ -764,7 +730,7 @@ open_udp_socket (GSocketFamily family, guint port, const gchar *listen_address,
if (!socket)
return NULL;
- if (listen_address)
+ if (listen_address)
{
GList *addresses;
@@ -786,30 +752,28 @@ open_udp_socket (GSocketFamily family, guint port, const gchar *listen_address,
gboolean
xdmcp_server_start (XDMCPServer *server)
{
- GSource *source;
- g_autoptr(GError) ipv4_error = NULL;
- g_autoptr(GError) ipv6_error = NULL;
-
g_return_val_if_fail (server != NULL, FALSE);
+ g_autoptr(GError) ipv4_error = NULL;
server->priv->socket = open_udp_socket (G_SOCKET_FAMILY_IPV4, server->priv->port, server->priv->listen_address, &ipv4_error);
if (ipv4_error)
g_warning ("Failed to create IPv4 XDMCP socket: %s", ipv4_error->message);
if (server->priv->socket)
{
- source = g_socket_create_source (server->priv->socket, G_IO_IN, NULL);
+ GSource *source = g_socket_create_source (server->priv->socket, G_IO_IN, NULL);
g_source_set_callback (source, (GSourceFunc) read_cb, server, NULL);
g_source_attach (source, NULL);
}
+ g_autoptr(GError) ipv6_error = NULL;
server->priv->socket6 = open_udp_socket (G_SOCKET_FAMILY_IPV6, server->priv->port, server->priv->listen_address, &ipv6_error);
if (ipv6_error)
g_warning ("Failed to create IPv6 XDMCP socket: %s", ipv6_error->message);
if (server->priv->socket6)
{
- source = g_socket_create_source (server->priv->socket6, G_IO_IN, NULL);
+ GSource *source = g_socket_create_source (server->priv->socket6, G_IO_IN, NULL);
g_source_set_callback (source, (GSourceFunc) read_cb, server, NULL);
g_source_attach (source, NULL);
}