pactl: Fix relative volume parsing
authorTanu Kaskinen <tanu.kaskinen@linux.intel.com>
Wed, 1 Apr 2015 16:40:28 +0000 (19:40 +0300)
committerTanu Kaskinen <tanu.kaskinen@linux.intel.com>
Fri, 10 Apr 2015 08:19:18 +0000 (11:19 +0300)
The recent change to reject leading '+' in pa_atod() broke the
relative volume parsing in pactl. This fixes that.

src/utils/pactl.c

index 1dc8c3f..a13c7fb 100644 (file)
@@ -1456,6 +1456,7 @@ static void exit_signal_callback(pa_mainloop_api *m, pa_signal_event *e, int sig
 static int parse_volume(const char *vol_spec, pa_volume_t *vol, enum volume_flags *vol_flags) {
     double v;
     char *vs;
+    const char *atod_input;
 
     pa_assert(vol_spec);
     pa_assert(vol);
@@ -1475,7 +1476,12 @@ static int parse_volume(const char *vol_spec, pa_volume_t *vol, enum volume_flag
         vs[strlen(vs)-2] = 0;
     }
 
-    if (pa_atod(vs, &v) < 0) {
+    atod_input = vs;
+
+    if (atod_input[0] == '+')
+        atod_input++; /* pa_atod() doesn't accept leading '+', so skip it. */
+
+    if (pa_atod(atod_input, &v) < 0) {
         pa_log(_("Invalid volume specification"));
         pa_xfree(vs);
         return -1;