diff options
author | Richard Hughes <richard@hughsie.com> | 2017-07-20 13:47:01 +0100 |
---|---|---|
committer | Richard Hughes <richard@hughsie.com> | 2017-07-26 13:09:05 +0100 |
commit | 79d19adf91f4d3823fc75364cc7530678c13f8a7 (patch) | |
tree | d6e8c19d331304cb7cba5ed78bf52ee5e80cd409 | |
parent | 71c8a6a8096cebc029493f07264558be0b3acb65 (diff) | |
download | colord-79d19adf91f4d3823fc75364cc7530678c13f8a7.tar.gz |
Do not use /tmp to create profiles
This fails when we're building in parallel.
-rw-r--r-- | client/cd-create-profile.c | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/client/cd-create-profile.c b/client/cd-create-profile.c index d9159a3..b4ef3b7 100644 --- a/client/cd-create-profile.c +++ b/client/cd-create-profile.c @@ -100,8 +100,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 @@ -192,8 +194,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, @@ -208,7 +217,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)) @@ -219,7 +228,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, @@ -244,7 +253,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) { @@ -259,6 +268,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; } |