summaryrefslogtreecommitdiff
blob: f283337b02f3341687a7bbde11cd76a40b3f69fa (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
diff -Naur /var/tmp/portage/graveman-0.3.12_p5/work/graveman-0.3.12-5/src/sox.c ./src/sox.c
--- a/graveman-0.3.12-5/src/sox.c	2005-05-28 02:37:14.000000000 +0200
+++ b/graveman-0.3.12-5/src/sox.c	2007-01-27 18:22:11.000000000 +0100
@@ -37,7 +37,7 @@
 gboolean check_sox()
 {
   gchar *Lsox = conf_get_string("sox");
-  gchar *Lcommandline, *Lerr = NULL;
+  gchar *Lcommandline, *Lerr = NULL, *Lstdout = NULL;
   gboolean Lstatus;
   gint Lexit = 0;
 
@@ -47,12 +47,22 @@
   if (!Lsox || !*Lsox) return FALSE;
 
   Lcommandline = g_strdup_printf("%s -help", conf_get_string("sox"));
-  Lstatus = g_spawn_command_line_sync(Lcommandline, NULL, &Lerr, &Lexit, NULL);
+  Lstatus = g_spawn_command_line_sync(Lcommandline, &Lstdout, &Lerr, &Lexit, NULL);
   g_free(Lcommandline);
 
-  GsupportMp3 = (Lstatus == TRUE && Lerr && ((strstr(Lerr, SOX_MP3))));
-  GsupportOgg = (Lstatus == TRUE && Lerr && ((strstr(Lerr, SOX_OGG))));
+  /* sox 12.17 outputs -help to stderr */ 
+  if (Lerr && strstr(Lerr, "12.17")) {
+	GsupportMp3 = (Lstatus == TRUE && Lerr && ((strstr(Lerr, SOX_MP3))));
+	GsupportOgg = (Lstatus == TRUE && Lerr && ((strstr(Lerr, SOX_OGG))));
+  }
+
+  /* sox 12.18 outputs -help to stdout */
+  else {
+	GsupportMp3 = (Lstatus == TRUE && Lstdout && ((strstr(Lstdout, SOX_MP3))));
+	GsupportOgg = (Lstatus == TRUE && Lstdout && ((strstr(Lstdout, SOX_OGG))));
+  }
   
+  g_free(Lstdout);
   g_free(Lerr);
 
   return Lstatus;