From 5e895b28c7b0facdfdd8a8a07eff50a464bf9315 Mon Sep 17 00:00:00 2001 From: Andrew Siplas Date: Sat, 6 Oct 2018 22:53:49 -0400 Subject: [PATCH] FS-11444: Capture return code from `os.execute()`; stop attempting to concat boolean/nil to error string. os.execute() returns [3 variables](https://github.com/lua/lua/blob/f59e6a93c0ad38a27a420e51abf8f13d962446b5/lauxlib.c#L286). Capture the 2nd (e.g. "exit") and 3rd (e.g. 0) in addition to the first which would be merely `true` on success or `nil` on error. --- scripts/lua/sound_test.lua | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/scripts/lua/sound_test.lua b/scripts/lua/sound_test.lua index e29c2f9ca7..ee169f88f2 100644 --- a/scripts/lua/sound_test.lua +++ b/scripts/lua/sound_test.lua @@ -60,15 +60,15 @@ else -- Looks good, let's play some sound files sound_base = session:getVariable('sounds_dir') .. '/en/us/callie/' .. stype .. '/' .. srate; input_file = '/tmp/filez.txt'; - res = os.execute('ls -1 ' .. sound_base .. ' > ' .. input_file); - freeswitch.consoleLog("INFO","Result of system call: " .. res .. "\n"); - if ( res == 0 ) then + res, what, code = os.execute('ls -1 ' .. sound_base .. ' > ' .. input_file); + freeswitch.consoleLog("INFO","Result of system call: " .. what .. " " .. code .. "\n"); + if ( res == true and what == 'exit' and code == 0 ) then for fname in io.lines(input_file) do freeswitch.consoleLog("NOTICE","Playing file: " .. fname .. "\n"); session:streamFile(sound_base .. '/' .. fname); session:sleep(100); end else - freeswitch.consoleLog("ERR","Result of system call: " .. res .. "\n"); + freeswitch.consoleLog("ERR","Result of system call: " .. what .. " " .. code .. "\n"); end end \ No newline at end of file