]> rtime.felk.cvut.cz Git - sojka/lightdm.git/commitdiff
Make new shared dir code match existing coding style. Add some debugging messages...
authorRobert Ancell <robert.ancell@canonical.com>
Fri, 21 Feb 2014 04:37:50 +0000 (17:37 +1300)
committerRobert Ancell <robert.ancell@canonical.com>
Fri, 21 Feb 2014 04:37:50 +0000 (17:37 +1300)
liblightdm-gobject/greeter.c
src/greeter.c
src/shared-data-manager.c

index 7f174bed8ffc7766869c14db35f07af070aa7ea0..28c32baedca68c8707bcc1541781010e79ea0d43 100644 (file)
@@ -415,7 +415,7 @@ read_message (LightDMGreeter *greeter, gsize *length, gboolean block)
 
     /* Stop if haven't got all the data we want */
     if (priv->n_read != n_to_read)
-        return FALSE;
+        return NULL;
 
     /* If have header, rerun for content */
     if (priv->n_read == HEADER_SIZE)
@@ -1142,6 +1142,8 @@ lightdm_greeter_ensure_shared_data_dir_sync (LightDMGreeter *greeter, const gcha
 
     g_return_val_if_fail (priv->connected, NULL);
 
+    g_debug ("Ensuring data directory for user %s", username);
+
     write_header (message, MAX_MESSAGE_LENGTH, GREETER_MESSAGE_ENSURE_SHARED_DIR, string_length (username), &offset);
     write_string (message, MAX_MESSAGE_LENGTH, username, &offset);
     write_message (greeter, message, offset);
@@ -1150,7 +1152,6 @@ lightdm_greeter_ensure_shared_data_dir_sync (LightDMGreeter *greeter, const gcha
     if (!response)
         return NULL;
 
-    offset = 0;
     id = read_int (response, response_length, &offset);
     read_int (response, response_length, &offset);
     if (id == SERVER_MESSAGE_SHARED_DIR_RESULT)
index 04b59fbbed89bc56121ac4f26f99912580ef443e..9c68556a3771415dd6bdb1dbfac305c1ce62d2de 100644 (file)
@@ -633,17 +633,19 @@ handle_set_language (Greeter *greeter, const gchar *language)
 static void
 handle_ensure_shared_dir (Greeter *greeter, const gchar *username)
 {
-    gchar *result;
+    gchar *dir;
     guint8 message[MAX_MESSAGE_LENGTH];
     gsize offset = 0;
 
-    result = shared_data_manager_ensure_user_dir (shared_data_manager_get_instance (), username);
+    l_debug (greeter, "Greeter requests data directory for user %s", username);
 
-    write_header (message, MAX_MESSAGE_LENGTH, SERVER_MESSAGE_SHARED_DIR_RESULT, string_length (result), &offset);
-    write_string (message, MAX_MESSAGE_LENGTH, result, &offset);
+    dir = shared_data_manager_ensure_user_dir (shared_data_manager_get_instance (), username);
+
+    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);
 
-    g_free (result);
+    g_free (dir);
 }
 
 static guint32
index 67971fffddc1c30aafabb5ca93e7de6d91596ee6..5103dc0e97ed7cac51bc0d0855405d58484e83f0 100644 (file)
@@ -70,11 +70,10 @@ delete_unused_user (gpointer key, gpointer value, gpointer user_data)
     gchar *quoted_path = g_shell_quote (path);
     gchar *cmd = g_strdup_printf ("/bin/rm -rf %s", quoted_path);
 
-    if (!g_spawn_command_line_async (cmd, &error))
-    {
+    g_spawn_command_line_async (cmd, &error);
+    if (error)
         g_warning ("Could not delete unused user data directory %s: %s", path, error->message);
-        g_error_free (error);
-    }
+    g_clear_error (&error);
 
     g_free (cmd);
     g_free (quoted_path);
@@ -84,53 +83,51 @@ 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 = getpwnam (user);
+    struct passwd *entry;
+    gchar *path;
+    GFile *file;
+    gboolean result;
+    GFileInfo *info;
+    GError *error = NULL;
+
+    entry = getpwnam (user);
     if (!entry)
         return NULL;
+  
+    path = g_build_filename (USERS_DIR, user, NULL);
+    file = g_file_new_for_path (path);
 
-    GError *error = NULL;
+    g_debug ("Creating shared data directory %s", path);
 
-    gchar *path = g_build_filename (USERS_DIR, user, NULL);
-    GFile *file = g_file_new_for_path (path);
-
-    if (!g_file_make_directory (file, NULL, &error))
+    result = g_file_make_directory (file, NULL, &error);
+    if (error && !g_error_matches (error, G_IO_ERROR, G_IO_ERROR_EXISTS))
+        g_warning ("Could not create user data directory %s: %s", path, error->message);
+    g_clear_error (&error);  
+    if (!result)
     {
-        if (!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_EXISTS))
-        {
-            g_warning ("Could not create user data directory %s: %s",
-                       path, error->message);
-            g_error_free (error);
-            g_object_unref (file);
-            g_free (path);
-            return NULL;
-        }
-        g_error_free (error);
-        error = NULL;
+        g_object_unref (file);
+        g_free (path);
+        return NULL;
     }
 
     /* 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. */
-    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);
+    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);
-    if (!g_file_set_attributes_from_info (file, info, G_FILE_QUERY_INFO_NONE,
-                                          NULL, &error))
+    result = g_file_set_attributes_from_info (file, info, G_FILE_QUERY_INFO_NONE, NULL, &error);
+    g_object_unref (info);
+    g_object_unref (file);
+    if (error)
+        g_warning ("Could not chown user data directory %s: %s", path, error->message);
+    if (!result)
     {
-        g_warning ("Could not chown user data directory %s: %s",
-                   path, error->message);
-        g_error_free (error);
-        g_object_unref (info);
-        g_object_unref (file);
         g_free (path);
         return NULL;
     }
 
-    g_object_unref (info);
-    g_object_unref (file);
     return path;
 }
 
@@ -142,13 +139,11 @@ next_user_dirs_cb (GObject *object, GAsyncResult *res, gpointer user_data)
     GList *link;
     GError *error = NULL;
 
-    GList *files = g_file_enumerator_next_files_finish (enumerator, res,
-                                                        &error);
-    if (error != NULL)
+    GList *files = g_file_enumerator_next_files_finish (enumerator, res, &error);
+    if (error)
     {
-        g_warning ("Could not enumerate user data directory %s: %s",
-                   USERS_DIR, error->message);
-        g_error_free (error);
+        g_warning ("Could not enumerate user data directory %s: %s", USERS_DIR, error->message);
+        g_clear_error (&error);
         g_object_unref (manager);
         return;
     }
@@ -156,16 +151,13 @@ next_user_dirs_cb (GObject *object, GAsyncResult *res, gpointer user_data)
     for (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);
+        g_hash_table_insert (manager->priv->starting_dirs, g_strdup (g_file_info_get_name (info)), NULL);
     }
 
     if (files != NULL)
     {
         g_list_free_full (files, g_object_unref);
-        g_file_enumerator_next_files_async (enumerator, NUM_ENUMERATION_FILES,
-                                            G_PRIORITY_DEFAULT, NULL,
-                                            next_user_dirs_cb, manager);
+        g_file_enumerator_next_files_async (enumerator, NUM_ENUMERATION_FILES, G_PRIORITY_DEFAULT, NULL, next_user_dirs_cb, manager);
     }
     else
     {
@@ -195,36 +187,34 @@ list_user_dirs_cb (GObject *object, GAsyncResult *res, gpointer user_data)
     GError *error = NULL;
 
     enumerator = g_file_enumerate_children_finish (file, res, &error);
-    if (enumerator == NULL)
+    if (error)
+        g_warning ("Could not enumerate user data directory %s: %s", USERS_DIR, error->message);
+    g_clear_error (&error);
+    if (!enumerator)
     {
-        g_warning ("Could not enumerate user data directory %s: %s",
-                   USERS_DIR, error->message);
-        g_error_free (error);
         g_object_unref (manager);
         return;
     }
 
-    manager->priv->starting_dirs = g_hash_table_new_full (g_str_hash,
-                                                          g_str_equal,
-                                                          g_free, NULL);
+    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);
 }
 
 static void
-user_removed_cb (CommonUserList *list, CommonUser *user,
-                 SharedDataManager *manager)
+user_removed_cb (CommonUserList *list, CommonUser *user, SharedDataManager *manager)
 {
-    delete_unused_user ((gpointer)common_user_get_name (user), NULL, manager);
+    delete_unused_user ((gpointer) common_user_get_name (user), NULL, manager);
 }
 
 void
 shared_data_manager_start (SharedDataManager *manager)
 {
-    /* Grab list of all current directories, so we know if any exist that we
-       no longer need. */
-    GFile *file = g_file_new_for_path (USERS_DIR);
+    GFile *file;
+
+    /* 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_file_enumerate_children_async (file, G_FILE_ATTRIBUTE_STANDARD_NAME,
                                      G_FILE_QUERY_INFO_NONE,
                                      G_PRIORITY_DEFAULT, NULL,
@@ -232,17 +222,17 @@ shared_data_manager_start (SharedDataManager *manager)
     g_object_unref (file);
 
     /* And listen for user removals. */
-    g_signal_connect (common_user_list_get_instance (), "user-removed",
-                      G_CALLBACK (user_removed_cb), manager);
+    g_signal_connect (common_user_list_get_instance (), "user-removed", G_CALLBACK (user_removed_cb), 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
-    struct passwd *greeter_entry;
+    /* 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);
     if (greeter_entry)
@@ -254,11 +244,9 @@ shared_data_manager_dispose (GObject *object)
 {
     SharedDataManager *self = SHARED_DATA_MANAGER (object);
 
-    /* Should also cancel outstanding GIO operations, but whatever, let them
-       do their thing. */
+    /* 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);
+    g_signal_handlers_disconnect_by_data (common_user_list_get_instance (), self);
 
     G_OBJECT_CLASS (shared_data_manager_parent_class)->dispose (object);
 }