summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Hughes <richard@hughsie.com>2017-07-20 13:47:01 +0100
committerRichard Hughes <richard@hughsie.com>2017-07-20 15:02:43 +0100
commit218842af1c697f3adcf512a7646015cdf2866467 (patch)
tree3599964a59b1326c680c2639f358d97bdec02ebf
parentab5108521b88990c1dc26afa9648b1113ce2d475 (diff)
downloadcolord-218842af1c697f3adcf512a7646015cdf2866467.tar.gz
Do not use /tmp to create profiles
This fails when we're building in parallel.
-rw-r--r--client/cd-create-profile.c19
1 files changed, 15 insertions, 4 deletions
diff --git a/client/cd-create-profile.c b/client/cd-create-profile.c
index ca37bf7..e4f0f4a 100644
--- a/client/cd-create-profile.c
+++ b/client/cd-create-profile.c
@@ -97,8 +97,10 @@ cd_util_create_colprof (CdUtilPrivate *priv,
g_autofree gchar *debug_stdout = NULL;
g_autofree gchar *output_fn = NULL;
g_autofree gchar *ti3_fn = NULL;
+ g_autofree gchar *tmpdir = NULL;
g_autoptr(GFile) output_file = NULL;
g_autoptr(GFile) ti3_file = NULL;
+ g_autoptr(GFile) tmpdir_file = NULL;
g_autoptr(GPtrArray) argv = NULL;
#ifndef TOOL_COLPROF
@@ -189,8 +191,15 @@ cd_util_create_colprof (CdUtilPrivate *priv,
"XML error: no data_ti3");
return FALSE;
}
+
+ /* create temp location */
+ tmpdir = g_dir_make_tmp ("cd-create-profile-XXXXXX", error);
+ if (tmpdir == NULL)
+ return FALSE;
+ tmpdir_file = g_file_new_for_path (tmpdir);
+
data_ti3 = cd_dom_get_node_data (tmp);
- ti3_fn = g_strdup_printf ("/tmp/%s.ti3", basename);
+ ti3_fn = g_strdup_printf ("%s/%s.ti3", tmpdir, basename);
ti3_file = g_file_new_for_path (ti3_fn);
ret = g_file_replace_contents (ti3_file,
data_ti3,
@@ -205,7 +214,7 @@ cd_util_create_colprof (CdUtilPrivate *priv,
return FALSE;
/* ensure temporary icc profile does not already exist */
- output_fn = g_strdup_printf ("/tmp/%s.icc", basename);
+ output_fn = g_strdup_printf ("%s/%s.icc", tmpdir, basename);
output_file = g_file_new_for_path (output_fn);
if (g_file_query_exists (output_file, NULL)) {
if (!g_file_delete (output_file, NULL, error))
@@ -216,7 +225,7 @@ cd_util_create_colprof (CdUtilPrivate *priv,
g_ptr_array_add (argv, g_strdup_printf ("-O%s.icc", basename));
g_ptr_array_add (argv, g_strdup (basename));
g_ptr_array_add (argv, NULL);
- ret = g_spawn_sync ("/tmp",
+ ret = g_spawn_sync (tmpdir,
(gchar **) argv->pdata,
NULL,
0,
@@ -241,7 +250,7 @@ cd_util_create_colprof (CdUtilPrivate *priv,
if (!g_file_load_contents (output_file, NULL, &data, &len, NULL, error))
return FALSE;
- /* open /tmp/$basename.icc as hProfile */
+ /* open $tmpdir/$basename.icc as hProfile */
priv->lcms_profile = cmsOpenProfileFromMemTHR (cd_icc_get_context (priv->icc),
data, len);
if (priv->lcms_profile == NULL) {
@@ -256,6 +265,8 @@ cd_util_create_colprof (CdUtilPrivate *priv,
return FALSE;
if (!g_file_delete (ti3_file, NULL, error))
return FALSE;
+ if (!g_file_delete (tmpdir_file, NULL, error))
+ return FALSE;
return TRUE;
}