[ostree] core: Switch to using mkdtemp() so we only depend on GLib 2.28
- From: Colin Walters <walters src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [ostree] core: Switch to using mkdtemp() so we only depend on GLib 2.28
- Date: Wed, 30 May 2012 02:41:32 +0000 (UTC)
commit cbd4ade053b7bee04be339ba5a3937a98804d910
Author: Colin Walters <walters verbum org>
Date: Tue May 29 22:34:11 2012 -0400
core: Switch to using mkdtemp() so we only depend on GLib 2.28
We claim to build against 2.28, let's actually make it work.
Makefile-ostadmin.am | 4 +-
src/libostree/ostree-core.c | 39 ++++++++++++++++++++++++++++++++
src/libostree/ostree-core.h | 7 +++++
src/ostadmin/ot-admin-builtin-deploy.c | 22 ++++++++---------
4 files changed, 58 insertions(+), 14 deletions(-)
---
diff --git a/Makefile-ostadmin.am b/Makefile-ostadmin.am
index d8305dc..6872a21 100644
--- a/Makefile-ostadmin.am
+++ b/Makefile-ostadmin.am
@@ -25,5 +25,5 @@ ostadmin_SOURCES = src/ostadmin/main.c \
src/ostadmin/ot-admin-main.c \
$(NULL)
-ostadmin_CFLAGS = $(AM_CFLAGS) -I$(srcdir)/src/libotutil -I$(srcdir)/src/ostadmin -DLOCALEDIR=\"$(datadir)/locale\" $(OT_DEP_GIO_UNIX_CFLAGS)
-ostadmin_LDADD = libotutil.la $(OT_DEP_GIO_UNIX_LIBS)
+ostadmin_CFLAGS = $(AM_CFLAGS) -I$(srcdir)/src/libotutil -I$(srcdir)/src/libostree -I$(srcdir)/src/ostadmin -DLOCALEDIR=\"$(datadir)/locale\" $(OT_DEP_GIO_UNIX_CFLAGS)
+ostadmin_LDADD = libotutil.la libostree.la $(OT_DEP_GIO_UNIX_LIBS)
diff --git a/src/libostree/ostree-core.c b/src/libostree/ostree-core.c
index 61718d5..5d2b07e 100644
--- a/src/libostree/ostree-core.c
+++ b/src/libostree/ostree-core.c
@@ -20,12 +20,17 @@
* Author: Colin Walters <walters verbum org>
*/
+/* for mkdtemp */
+#define _GNU_SOURCE
+
#include "config.h"
#include "ostree.h"
#include "otutil.h"
#include <sys/types.h>
+#include <stdio.h>
+#include <stdlib.h>
#include <attr/xattr.h>
#define ALIGN_VALUE(this, boundary) \
@@ -1304,6 +1309,40 @@ ostree_create_temp_regular_file (GFile *dir,
}
gboolean
+ostree_create_temp_dir (GFile *dir,
+ const char *prefix,
+ const char *suffix,
+ GFile **out_file,
+ GCancellable *cancellable,
+ GError **error)
+{
+ gboolean ret = FALSE;
+ ot_lfree char *template = NULL;
+ ot_lobj GFile *ret_file = NULL;
+
+ if (dir == NULL)
+ dir = g_file_new_for_path (g_get_tmp_dir ());
+
+ template = g_strdup_printf ("%s/%s-XXXXXX-%s",
+ ot_gfile_get_path_cached (dir),
+ prefix ? prefix : "tmp",
+ suffix ? suffix : "tmp");
+
+ if (mkdtemp (template) == NULL)
+ {
+ ot_util_set_error_from_errno (error, errno);
+ goto out;
+ }
+
+ ret_file = g_file_new_for_path (template);
+
+ ret = TRUE;
+ ot_transfer_out_value (out_file, &ret_file);
+ out:
+ return ret;
+}
+
+gboolean
ostree_read_pack_entry_raw (guchar *pack_data,
guint64 pack_len,
guint64 offset,
diff --git a/src/libostree/ostree-core.h b/src/libostree/ostree-core.h
index bc08d38..3617b01 100644
--- a/src/libostree/ostree-core.h
+++ b/src/libostree/ostree-core.h
@@ -297,6 +297,13 @@ gboolean ostree_create_temp_regular_file (GFile *dir,
GCancellable *cancellable,
GError **error);
+gboolean ostree_create_temp_dir (GFile *dir,
+ const char *prefix,
+ const char *suffix,
+ GFile **out_file,
+ GCancellable *cancellable,
+ GError **error);
+
gboolean ostree_read_pack_entry_raw (guchar *pack_data,
guint64 pack_len,
guint64 object_offset,
diff --git a/src/ostadmin/ot-admin-builtin-deploy.c b/src/ostadmin/ot-admin-builtin-deploy.c
index 64549e4..509cb14 100644
--- a/src/ostadmin/ot-admin-builtin-deploy.c
+++ b/src/ostadmin/ot-admin-builtin-deploy.c
@@ -23,7 +23,7 @@
#include "config.h"
#include "ot-admin-builtins.h"
-#include "otutil.h"
+#include "ostree.h"
#include <glib/gi18n.h>
#include <sys/utsname.h>
@@ -74,12 +74,14 @@ update_initramfs (const char *release,
if (!g_file_query_exists (initramfs_file, NULL))
{
ot_lptrarray GPtrArray *mkinitramfs_args = NULL;
- ot_lfree char *tmpdir = NULL;
+ ot_lobj GFile *tmpdir = NULL;
ot_lfree char *initramfs_tmp_path = NULL;
ot_lobj GFile *initramfs_tmp_file = NULL;
ot_lobj GFileInfo *initramfs_tmp_info = NULL;
- if ((tmpdir = g_dir_make_tmp ("ostree-initramfs.XXXXXX", error)) == NULL)
+
+ if (!ostree_create_temp_dir (NULL, "ostree-initramfs", NULL, &tmpdir,
+ cancellable, error))
goto out;
last_deploy_path = g_build_filename ("/ostree", last_deploy_target, NULL);
@@ -95,7 +97,7 @@ update_initramfs (const char *release,
"--mount-proc", "/proc",
"--mount-bind", "/dev", "/dev",
"--mount-bind", "/ostree/var", "/var",
- "--mount-bind", tmpdir, "/tmp",
+ "--mount-bind", ot_gfile_get_path_cached (tmpdir), "/tmp",
"--mount-bind", "/ostree/modules", "/lib/modules",
last_deploy_path,
"dracut", "-f", "/tmp/initramfs-ostree.img", release,
@@ -106,13 +108,9 @@ update_initramfs (const char *release,
if (!ot_spawn_sync_checked (NULL, (char**)mkinitramfs_args->pdata, NULL,
G_SPAWN_SEARCH_PATH,
NULL, NULL, NULL, NULL, error))
- {
- (void) unlink (initramfs_tmp_path);
- goto out;
- }
+ goto out;
- initramfs_tmp_path = g_build_filename (tmpdir, "initramfs-ostree.img", NULL);
- initramfs_tmp_file = g_file_new_for_path (initramfs_tmp_path);
+ initramfs_tmp_file = g_file_get_child (tmpdir, "initramfs-ostree.img");
initramfs_tmp_info = g_file_query_info (initramfs_tmp_file, OSTREE_GIO_FAST_QUERYINFO,
G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS,
cancellable, error);
@@ -131,8 +129,8 @@ update_initramfs (const char *release,
g_print ("Created: %s\n", ot_gfile_get_path_cached (initramfs_file));
- (void) unlink (initramfs_tmp_path);
- (void) rmdir (tmpdir);
+ (void) ot_gfile_unlink (initramfs_tmp_file, NULL, NULL);
+ (void) rmdir (ot_gfile_get_path_cached (tmpdir));
}
ret = TRUE;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]