--[[
User error handling for Alpine Wall
Copyright (C) 2012-2013 Kaarle Ritvanen
See LICENSE file for license details
]]--

module(..., package.seeall)

local prefix = 'awall user error: '

function raise(msg) error(prefix..msg) end

function call(f, ...)
   return xpcall(
      function() f(unpack(arg)) end,
      function(msg)
	 local si, ei = string.find(msg, prefix, 1, true)
   	 if si then msg = 'awall: '..string.sub(msg, ei + 1, -1) end
   	 io.stderr:write(msg..'\n')
   	 if not si then io.stderr:write(debug.traceback()..'\n') end
      end
   )
end
