summaryrefslogtreecommitdiff
path: root/posix
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2015-01-13 22:40:14 +0100
committerRobin Gareus <robin@gareus.org>2015-01-13 22:41:00 +0100
commit886a64e02a0f7ce192c318f74cff1f16d5e15bfb (patch)
tree750d0ee55d85d676139de81f85b432bc5888b964 /posix
parent81c129c1dd9555a9b982e8980683cd49c29988b8 (diff)
downloadjack2-886a64e02a0f7ce192c318f74cff1f16d5e15bfb.tar.gz
support [unescaped] double-quotes in jackdrc
allow autostart of jackd on OSX where device-names can contain spaces.
Diffstat (limited to 'posix')
-rw-r--r--posix/JackPosixServerLaunch.cpp26
1 files changed, 23 insertions, 3 deletions
diff --git a/posix/JackPosixServerLaunch.cpp b/posix/JackPosixServerLaunch.cpp
index e4d3985c..f1e94c1f 100644
--- a/posix/JackPosixServerLaunch.cpp
+++ b/posix/JackPosixServerLaunch.cpp
@@ -148,16 +148,36 @@ static void start_server_classic_aux(const char* server_name)
}
}
- result = strcspn(arguments + pos, " ");
- if (result == 0) {
+ /* skip whitespace */
+ while (pos < strlen(arguments) && arguments[pos] && arguments[pos] == ' ') {
+ ++pos;
+ }
+
+ if (pos >= strlen(arguments)) {
+ break;
+ }
+
+ if (arguments[pos] == '\"') {
+ ++pos;
+ result = strcspn(arguments + pos, "\"");
+ } else {
+ result = strcspn(arguments + pos, " ");
+ }
+
+ if (0 == result) {
break;
}
+
argv[i] = (char*)malloc(result + 1);
strncpy(argv[i], arguments + pos, result);
argv[i][result] = '\0';
pos += result + 1;
- ++i;
+
+ if (++i > 253) {
+ break;
+ }
}
+
argv[i] = 0;
execv(command, argv);