[gnome-initial-setup] summary: Don't copy files to the tmpfs
- From: Jasper St. Pierre <jstpierre src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-initial-setup] summary: Don't copy files to the tmpfs
- Date: Thu, 8 Nov 2012 23:13:24 +0000 (UTC)
commit 4e122e6b3f03f68d7232b4bb6d36b1d51f7a252b
Author: Jasper St. Pierre <jstpierre mecheye net>
Date: Thu Nov 8 16:29:06 2012 -0500
summary: Don't copy files to the tmpfs
We're guaranteed a static homedir in a tmpfs where we'll copy the
files from.
.../gnome-initial-setup-copy-worker.c | 22 +++++--
.../pages/summary/gis-summary-page.c | 71 --------------------
2 files changed, 17 insertions(+), 76 deletions(-)
---
diff --git a/gnome-initial-setup/gnome-initial-setup-copy-worker.c b/gnome-initial-setup/gnome-initial-setup-copy-worker.c
index 9c03991..983a673 100644
--- a/gnome-initial-setup/gnome-initial-setup-copy-worker.c
+++ b/gnome-initial-setup/gnome-initial-setup-copy-worker.c
@@ -3,15 +3,27 @@
/* Copies settings installed from gnome-initial-setup and
* sticks them in the user's profile */
+#include <pwd.h>
+#include <string.h>
#include <gio/gio.h>
#include <stdlib.h>
-#define SKELETON_PATH "gnome-initial-setup/skeleton"
-
static char *
-get_skeleton_dir (void)
+get_gnome_initial_setup_home_dir (void)
{
- return g_build_filename (g_get_user_runtime_dir (), SKELETON_PATH, NULL);
+ struct passwd pw, *pwp;
+ char buf[4096];
+
+ setpwent();
+ while (TRUE) {
+ if (getpwent_r (&pw, buf, sizeof (buf), &pwp))
+ break;
+
+ if (strcmp (pwp->pw_name, "gnome-initial-setup") == 0)
+ return g_strdup (pwp->pw_dir);
+ }
+
+ g_error ("Could not find homedir for gnome-initial-setup");
}
static void
@@ -46,7 +58,7 @@ main (int argc,
g_type_init ();
- src = g_file_new_for_path (get_skeleton_dir ());
+ src = g_file_new_for_path (get_gnome_initial_setup_home_dir ());
if (!g_file_query_exists (src, NULL))
exit (EXIT_SUCCESS);
diff --git a/gnome-initial-setup/pages/summary/gis-summary-page.c b/gnome-initial-setup/pages/summary/gis-summary-page.c
index eb969c9..d2dbe80 100644
--- a/gnome-initial-setup/pages/summary/gis-summary-page.c
+++ b/gnome-initial-setup/pages/summary/gis-summary-page.c
@@ -41,8 +41,6 @@
#define SERVICE_NAME "gdm-password"
-#define SKELETON_PATH "/gnome-initial-setup/skeleton"
-
typedef struct _SummaryData SummaryData;
struct _SummaryData {
@@ -84,74 +82,6 @@ connect_to_gdm (GdmGreeter **greeter,
return res;
}
-static gboolean
-pkinstall(const char *user, char *one, char *two, GError **error)
-{
- char *argv[] = { "/usr/bin/pkexec",
- "install",
- "--owner", (char *) user,
- "--group", (char *) user,
- "--mode", "755",
- one, two, NULL };
-
- return g_spawn_sync (NULL, argv, NULL, 0, NULL, NULL, NULL, NULL, NULL, error);
-}
-
-static void
-copy_file_to_tmpfs (const char *dest_base,
- const char *dir,
- const char *path,
- const char *user)
-{
- char *src = g_build_filename (dir, path, NULL);
- char *basename = g_path_get_basename (src);
- char *dest = g_build_filename (dest_base, basename, NULL);
- GError *error = NULL;
-
- if (!pkinstall (user, src, dest, &error)) {
- g_warning ("Unable to copy %s to %s: %s",
- src, dest, error->message);
- g_error_free (error);
- }
-
- g_free (src);
- g_free (basename);
- g_free (dest);
-}
-
-static char *
-get_skeleton_dir (SummaryData *data)
-{
- uid_t uid = act_user_get_uid (data->user_account);
- return g_strdup_printf ("/run/user/%d" SKELETON_PATH, uid);
-}
-
-static void
-copy_files_to_tmpfs (SummaryData *data)
-{
- const char *user = act_user_get_user_name (data->user_account);
- char *dest = get_skeleton_dir (data);
- GError *error = NULL;
-
- if (!pkinstall (user, "--directory", dest, &error)) {
- g_warning ("Unable to make directory %s: %s",
- dest, error->message);
- goto out;
- }
-
-#define FILE(d, x) \
- copy_file_to_tmpfs (dest, g_get_user_##d##_dir (), x, user); \
-
- FILE (config, "run-welcome-tour");
- FILE (config, "dconf/user");
- FILE (config, "goa-1.0/accounts.conf");
- FILE (data, "keyrings/Default.keyring");
-
- out:
- g_free (dest);
- g_clear_error (&error);
-}
-
static void
request_info_query (SummaryData *data,
GdmUserVerifier *user_verifier,
@@ -217,7 +147,6 @@ on_session_opened (GdmGreeter *greeter,
const char *service_name,
SummaryData *data)
{
- copy_files_to_tmpfs (data);
gdm_greeter_call_start_session_when_ready_sync (greeter, service_name,
TRUE, NULL, NULL);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]