[gnome-initial-setup] summary: Install files with the right permissions
- From: Jasper St. Pierre <jstpierre src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-initial-setup] summary: Install files with the right permissions
- Date: Thu, 4 Oct 2012 21:43:59 +0000 (UTC)
commit 421764ef34f439b2a0df11ad4adabc864dfc3449
Author: Jasper St. Pierre <jstpierre mecheye net>
Date: Thu Oct 4 18:33:49 2012 -0300
summary: Install files with the right permissions
.../pages/summary/gis-summary-page.c | 46 +++++++++-----------
1 files changed, 21 insertions(+), 25 deletions(-)
---
diff --git a/gnome-initial-setup/pages/summary/gis-summary-page.c b/gnome-initial-setup/pages/summary/gis-summary-page.c
index c0ed457..f4461ad 100644
--- a/gnome-initial-setup/pages/summary/gis-summary-page.c
+++ b/gnome-initial-setup/pages/summary/gis-summary-page.c
@@ -107,31 +107,26 @@ recursively_delete (GFile *file,
static void
copy_file_to_tmpfs (GFile *dest_base,
- const gchar *dir,
- const gchar *path)
+ const char *dir,
+ const char *path,
+ const char *user)
{
- GFile *src_dir = g_file_new_for_path (dir);
- GFile *src = g_file_get_child (src_dir, path);
- gchar *basename = g_file_get_basename (src);
- GFile *dest = g_file_get_child (dest_base, basename);
-
+ char *src = g_build_filename (dir, path, NULL);
+ char *basename = g_path_get_basename (src);
+ char *dest = g_build_filename (g_file_get_path (dest_base), basename, NULL);
+ char *argv[] = { "/usr/bin/pkexec",
+ "install",
+ "--owner", (char *) user,
+ "--group", (char *) user,
+ "--mode", "755",
+ src, dest };
GError *error = NULL;
- if (!g_file_copy (src, dest, G_FILE_COPY_NONE,
- NULL, NULL, NULL, &error)) {
+ if (!g_spawn_sync (NULL, argv, NULL, 0, NULL, NULL, NULL, NULL, NULL, &error)) {
g_warning ("Unable to copy %s to %s: %s",
- g_file_get_path (src),
- g_file_get_path (dest),
- error->message);
- goto out;
+ src, dest, error->message);
+ g_error_free (error);
}
-
- out:
- g_object_unref (src_dir);
- g_object_unref (src);
- g_object_unref (dest);
- g_free (basename);
- g_clear_error (&error);
}
static char *
@@ -145,6 +140,7 @@ static void
copy_files_to_tmpfs (SummaryData *data)
{
GFile *dest = g_file_new_for_path (get_skeleton_dir (data));
+ const char *user = act_user_get_user_name (data->user_account);
GError *error = NULL;
if (!recursively_delete (dest, &error)) {
@@ -152,19 +148,19 @@ copy_files_to_tmpfs (SummaryData *data)
error->message);
goto out;
}
-
+
if (!g_file_make_directory_with_parents (dest, NULL, &error)) {
g_warning ("Unable to make new skeleton folder: %s",
error->message);
goto out;
}
- copy_file_to_tmpfs (dest, g_get_user_config_dir (), "dconf/user");
- copy_file_to_tmpfs (dest, g_get_user_config_dir (), "goa-1.0/accounts.conf");
- copy_file_to_tmpfs (dest, g_get_user_data_dir (), "keyrings/Default.keyring");
+ copy_file_to_tmpfs (dest, g_get_user_config_dir (), "dconf/user", user);
+ copy_file_to_tmpfs (dest, g_get_user_config_dir (), "goa-1.0/accounts.conf", user);
+ copy_file_to_tmpfs (dest, g_get_user_data_dir (), "keyrings/Default.keyring", user);
out:
- g_object_unref (dest);
+ g_free (dest);
g_clear_error (&error);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]