mirror of
https://github.com/radio95-rnt/rds95.git
synced 2026-02-27 04:43:52 +01:00
better error handling
This commit is contained in:
@@ -57,17 +57,15 @@ end
|
|||||||
function rds2_group(stream)
|
function rds2_group(stream)
|
||||||
if #_RDS2_ODAs == 0 then return false, 0, 0, 0, 0 end
|
if #_RDS2_ODAs == 0 then return false, 0, 0, 0, 0 end
|
||||||
|
|
||||||
|
if _RDS2_ODA_pointer > #_RDS2_ODAs then _RDS2_ODA_pointer = 1 end
|
||||||
local checked = 0
|
local checked = 0
|
||||||
while checked < #_RDS2_ODAs and _RDS2_ODAs[_RDS2_ODA_pointer] == false do
|
while checked < #_RDS2_ODAs and _RDS2_ODAs[_RDS2_ODA_pointer] == false do
|
||||||
_RDS2_ODA_pointer = _RDS2_ODA_pointer + 1
|
_RDS2_ODA_pointer = _RDS2_ODA_pointer + 1
|
||||||
if _RDS2_ODA_pointer > #_RDS2_ODAs then _RDS2_ODA_pointer = 1 end
|
if _RDS2_ODA_pointer > #_RDS2_ODAs then _RDS2_ODA_pointer = 1 end
|
||||||
checked = checked + 1
|
checked = checked + 1
|
||||||
end
|
end
|
||||||
|
|
||||||
if checked == #_RDS2_ODAs then return false, 0, 0, 0, 0 end
|
if checked == #_RDS2_ODAs then return false, 0, 0, 0, 0 end
|
||||||
|
|
||||||
if _RDS2_ODA_pointer > #_RDS2_ODAs then _RDS2_ODA_pointer = 1 end
|
|
||||||
|
|
||||||
local oda = _RDS2_ODAs[_RDS2_ODA_pointer]
|
local oda = _RDS2_ODAs[_RDS2_ODA_pointer]
|
||||||
local channel_offset = 16 * ((not oda.file_related) and 1 or 0)
|
local channel_offset = 16 * ((not oda.file_related) and 1 or 0)
|
||||||
local channel = ((_RDS2_ODA_pointer - 1 + channel_offset) & 0x3F)
|
local channel = ((_RDS2_ODA_pointer - 1 + channel_offset) & 0x3F)
|
||||||
|
|||||||
@@ -2,13 +2,21 @@ function data_handle(data)
|
|||||||
if string.sub(data, 1, 4):lower() == "lua=" then
|
if string.sub(data, 1, 4):lower() == "lua=" then
|
||||||
local chunk, err = load("return " .. string.sub(data, 5), "udp_chunk") -- skip "lua="
|
local chunk, err = load("return " .. string.sub(data, 5), "udp_chunk") -- skip "lua="
|
||||||
if not chunk then return string.format("-\r\n%s\r\n", err) end
|
if not chunk then return string.format("-\r\n%s\r\n", err) end
|
||||||
local results = { chunk() }
|
local results = {}
|
||||||
|
local stat, err = pcall(function ()
|
||||||
|
results = { chunk() }
|
||||||
|
end)
|
||||||
|
if not stat then return tostring(err) end
|
||||||
for i = 1, #results do results[i] = tostring(results[i]) end
|
for i = 1, #results do results[i] = tostring(results[i]) end
|
||||||
return table.concat(results, ", ") .. "\r\n"
|
return table.concat(results, ", ") .. "\r\n"
|
||||||
elseif string.sub(data, 1, 5):lower() == "file=" then
|
elseif string.sub(data, 1, 5):lower() == "file=" then
|
||||||
local chunk, err = loadfile(data:sub(6)) -- skip "file="
|
local chunk, err = loadfile(data:sub(6)) -- skip "file="
|
||||||
if not chunk then return string.format("-\r\n%s\r\n", err) end
|
if not chunk then return string.format("-\r\n%s\r\n", err) end
|
||||||
local results = { chunk() }
|
local results = {}
|
||||||
|
local stat, err = pcall(function ()
|
||||||
|
results = { chunk() }
|
||||||
|
end)
|
||||||
|
if not stat then return tostring(err) end
|
||||||
for i = 1, #results do results[i] = tostring(results[i]) end
|
for i = 1, #results do results[i] = tostring(results[i]) end
|
||||||
return table.concat(results, ", ") .. "\r\n"
|
return table.concat(results, ", ") .. "\r\n"
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user