Skip to content

shell expansion and parameters with spaces in ts-exec:, mkv-exec, JPEG, etc.

Eli Mallon requested to merge github/fork/m1tk4/m1/shell-fix-3.2 into development

Created by: m1tk4

(replaces https://github.com/DDVTECH/mistserver/pull/156 due to merge conflict in input_ts.cpp)

In many instances, a shell command entered by user to supply a ts-exec: / mkv-exec: source or destination is not being treated as a shell expression but rather split by spaces.

This represents a problem when you need ffmpeg to play a file containing a space in ints file name or overlay a string of text with spaces. For example, the line:

ts-exec: ffmpeg -i "My File With Spaces.mpg" -c:v copy -mpegts - will be split like this before invoking ffmpeg

ffmpeg|-i|"My|File|With|Spaces.mpg"|-c:v|copy|-mpegts -Other shell escaping characters like, \ , ' also do not work.

The proposed PR solves this by actually invoking shell to interpret the entire command supplied by the user. (Inspired by https://github.com/php/php-src/blob/master/ext/standard/proc_open.c#L1211).

Note: WIN32 is implemented via CMD /C but untested.

Merge request reports