[gnome-color-manager] Make it work with dispcal using stderr
- From: Richard Hughes <rhughes src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-color-manager] Make it work with dispcal using stderr
- Date: Thu, 5 Dec 2013 15:51:30 +0000 (UTC)
commit 73af18cf61ac060a12450b7dab693783a0cdc6af
Author: Patryk Zawadzki <patrys room-303 com>
Date: Thu Dec 5 16:41:41 2013 +0100
Make it work with dispcal using stderr
Signed-off-by: Richard Hughes <richard hughsie com>
src/gcm-calibrate-argyll.c | 26 +++++++++++++++++++++-----
1 files changed, 21 insertions(+), 5 deletions(-)
---
diff --git a/src/gcm-calibrate-argyll.c b/src/gcm-calibrate-argyll.c
index 52a4b64..52b8eeb 100644
--- a/src/gcm-calibrate-argyll.c
+++ b/src/gcm-calibrate-argyll.c
@@ -160,7 +160,9 @@ gcm_calibrate_argyll_get_display (const gchar *output_name,
{
gboolean ret = FALSE;
gchar *command = NULL;
- gchar *data = NULL;
+ const gchar *data;
+ gchar *data_stderr = NULL;
+ gchar *data_stdout = NULL;
gchar *name;
gchar **split = NULL;
gint exit_status;
@@ -178,15 +180,28 @@ gcm_calibrate_argyll_get_display (const gchar *output_name,
ret = g_spawn_sync (NULL,
(gchar **) argv,
NULL,
- G_SPAWN_STDERR_TO_DEV_NULL,
+ 0,
NULL, NULL,
- &data,
- NULL,
+ &data_stdout,
+ &data_stderr,
&exit_status,
error);
if (!ret)
goto out;
+ /* recent versions of dispcal switched to stderr output */
+ if (data_stdout != NULL && data_stdout[0] != '\0') {
+ data = data_stdout;
+ } else if (data_stderr != NULL && data_stderr[0] != '\0') {
+ data = data_stderr;
+ } else {
+ g_set_error_literal (error,
+ GCM_CALIBRATE_ERROR,
+ GCM_CALIBRATE_ERROR_INTERNAL,
+ "no sensible output from dispcal");
+ goto out;
+ }
+
/* split it into lines */
split = g_strsplit (data, "\n", -1);
for (i=0; split[i] != NULL; i++) {
@@ -216,7 +231,8 @@ gcm_calibrate_argyll_get_display (const gchar *output_name,
}
out:
g_free (command);
- g_free (data);
+ g_free (data_stdout);
+ g_free (data_stderr);
g_strfreev (split);
return display;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]