]> git.sesse.net Git - vlc/commitdiff
Add error handling to luac intf.
authorAntoine Cellerier <dionoea@videolan.org>
Sat, 27 Feb 2010 23:39:53 +0000 (00:39 +0100)
committerAntoine Cellerier <dionoea@videolan.org>
Sat, 27 Feb 2010 23:41:54 +0000 (00:41 +0100)
share/lua/intf/luac.lua

index 9cb39cad9b6b3e2894dc2f32b921bf528fa3c460..4c6beb5df2ea27331a36bccbbe1bdff9c790467e 100644 (file)
@@ -1,7 +1,7 @@
 --[==========================================================================[
  luac.lua: lua compilation module for VLC (duplicates luac)
 --[==========================================================================[
- Copyright (C) 2010 the VideoLAN team
+ Copyright (C) 2010 Antoine Cellerier
  $Id$
 
  Authors: Antoine Cellerier <dionoea at videolan dot org>
 --]==========================================================================]
 
 usage = 
-[[ To compile a lua script to luac run:
- vlc -I lua --lua-intf --lua-config 'luac={input="file.lua",output="file.luac"}'
+[[
+To compile a lua script to bytecode (luac) run:
+  vlc -I lua --lua-intf --lua-config 'luac={input="file.lua",output="file.luac"}'
+Output will be similar to that of the luac command line tool provided with lua with the following arguments:
+  luac -o file.luac file.lua
 ]]
 
 require "string"
 require "io"
 
-vlc.msg.info("About to compile lua file")
-vlc.msg.info("  Input is '"..tostring(config.input).."'")
-vlc.msg.info("  Output is '"..tostring(config.output).."'")
+function compile()
+    vlc.msg.info("About to compile lua file")
+    vlc.msg.info("  Input is '"..tostring(config.input).."'")
+    vlc.msg.info("  Output is '"..tostring(config.output).."'")
+    if not config.input or not config.output then
+        vlc.msg.err("Input and output config options must be set")
+        return false
+    end
+
+    local bytecode, msg = loadfile(config.input)
+    if not bytecode then
+        vlc.msg.err("Error while loading file '"..config.input.."': "..msg)
+        return false
+    end
+
+    local output, msg = io.open(config.output, "wb")
+    if not output then
+        vlc.msg.err("Error while opening file '"..config.output.."' for output: "..msg)
+        return false
+    else
+        output:write(string.dump(bytecode))
+        return true
+    end
+end
 
-if not config.input or not config.output then
-    vlc.msg.err("Input and output config options must be set")
+
+if not compile() then
     for line in string.gmatch(usage,"([^\n]+)\n*") do
         vlc.msg.err(line)
     end
-else
-    local bytecode = loadfile(config.input)
-    local output = io.open(config.output, "wb")
-    output:write(string.dump(bytecode))
 end
-
 vlc.misc.quit()