On Tue, 2009-12-01 at 23:06 +0100, f...@kokkinizita.net wrote: > Hello all, > > Updates of jconv, now called jconvolver, and the zita-convolver > library are available on the usual place: > <http://www.kokkinizita.net/linuxaudio/downloads>/ > > The new zita-convolver is API-compatible to the previous > release but not binary compatible. If you have any code > using it please recompile. > > Release notes for jconvolver and fconvolver 0.8.4 > -------------------------------------------------
Hi, The attached patch allows paths and filenames to contain spaces. It's not particularly efficient, compact or generic, but it works for the purpose.
diff -ur jconvolver-0.8.4/source/config.cc jconvolver-0.8.4-mod/source/config.cc --- jconvolver-0.8.4/source/config.cc 2009-12-01 21:00:34.000000000 +0000 +++ jconvolver-0.8.4-mod/source/config.cc 2010-01-01 12:23:10.000000000 +0000 @@ -41,6 +41,51 @@ } +static int readstring (const char *line, int skip_spaces, char *output) +{ + const char *output_start = output; + + // Skip parameters at start of line + while (skip_spaces > 0) { + int space = 0; + + do { + line++; + if (*line == ' ' || *line == '\t') { + if (space == 0) skip_spaces--; + space = 1; + } else { + space = 0; + } + } while (space == 1); + } + + int quoted = 0; + int escaped = 0; + while (*line != '\0') { + if (*line == '\\' && !escaped) { + escaped = 1; + } else if (*line == '"' && !escaped) { + quoted = !quoted; + } else { + if (!quoted && !escaped) { + if (*line == ' ' || *line == '\t' || *line == '\n') break; + } + + escaped = 0; + + *output = *line; + output++; + } + line++; + } + + *output = '\0'; + + return output_start != output; +} + + static int read_sndfile (const char *line, int lnum, const char *cdir, unsigned int latency) { unsigned int ip1, op1; @@ -55,8 +100,9 @@ Audiofile audio; float *buff, *p; - if (sscanf (line, "%u %u %f %u %u %u %u %s", - &ip1, &op1, &gain, &delay, &offset, &length, &ichan, file) != 8) return ERR_PARAM; + if (sscanf (line, "%u %u %f %u %u %u %u", + &ip1, &op1, &gain, &delay, &offset, &length, &ichan) != 7) return ERR_PARAM; + if (readstring (line, 7, file) != 1) return ERR_PARAM; if (latency) { @@ -248,7 +294,7 @@ if (! strcmp (p, "/cd")) { - if (sscanf (q, "%s", cdir) != 1) stat = ERR_PARAM; + if (readstring (q, 0, cdir) != 1) stat = ERR_PARAM; } else if (! strcmp (p, "/convolver/new")) stat = convnew (q); else if (! strcmp (p, "/impulse/read")) stat = read_sndfile (q, lnum, cdir, latency);
_______________________________________________ Linux-audio-dev mailing list Linux-audio-dev@lists.linuxaudio.org http://lists.linuxaudio.org/listinfo/linux-audio-dev