elua: popenv fix (read proper stack items as args), getopt fix (fixed array append), xgettext: use cutil.popenv

This commit is contained in:
Daniel Kolesa 2014-05-21 16:02:51 +01:00 committed by Daniel Kolesa
parent e9b555c57b
commit 9c42595225
3 changed files with 13 additions and 12 deletions

View File

@ -239,33 +239,34 @@ for i, v in ipairs(args) do
input_files[#input_files + 1] = v
end
local args_nolua = { hasxgettext }
local args_nolua = {}
for i, opt in ipairs(opts_nolua) do
args_nolua[#args_nolua + 1] = build_opt(opt)
end
args_nolua[#args_nolua + 1] = "--omit-header"
args_nolua[#args_nolua + 1] = "--output=-"
args_nolua = cutil.build_args(unpack(args_nolua))
args_nolua[#args_nolua + 1] = false
local parsed_files = {}
for i, fname in ipairs(input_files) do
if onlylua or (not neverlua and fname:lower():match("^.+%.lua$")) then
-- parse lua files here
else
local f = assert(io.popen(args_nolua .. " '" .. fname .. "'", "r"))
parsed_files[#parsed_files + 1] = f:read("*all")
args_nolua[#args_nolua] = fname
local f = assert(cutil.popenv(hasxgettext, "r", unpack(args_nolua)))
local s = f:read("*all")
parsed_files[#parsed_files + 1] = s
f:close()
end
end
local args_final = { hasxgettext }
local args_final = {}
for i, opt in ipairs(opts_final) do
args_final[#args_final + 1] = build_opt(opt)
end
args_final[#args_final + 1] = "--language=PO"
args_final[#args_final + 1] = "-"
local f = assert(io.popen(cutil.build_args(unpack(args_final)), "w"))
local f = assert(cutil.popenv(hasxgettext, "w", unpack(args_final)))
f:write(table.concat(parsed_files, "\n\n"))
f:close()

View File

@ -168,7 +168,7 @@ static int elua_read(lua_State *L) {
} else {
luaL_checkstack(L, nargs + LUA_MINSTACK, "too many arguments");
success = 1;
for (n = first; --nargs && success; ++n) {
for (n = first; nargs-- && success; ++n) {
if (lua_type(L, n) == LUA_TNUMBER) {
size_t l = (size_t)lua_tointeger(L, n);
success = (l == 0) ? test_eof(L, f) : read_chars(L, f, l);
@ -206,7 +206,7 @@ static int elua_write(lua_State *L) {
FILE *f = tofile(L);
int nargs = lua_gettop(L) - 1;
int status = 1, arg = 2;
for (; --nargs; ++arg) {
for (; nargs--; ++arg) {
if (lua_type(L, arg) == LUA_TNUMBER) {
status = status && (fprintf(f, LUA_NUMBER_FMT,
lua_tonumber(L, arg)) > 0);
@ -270,7 +270,7 @@ int elua_popen(lua_State *L) {
const char **argv = (const char**)alloca((nargs + 2) * sizeof(char*));
memset(argv, 0, (nargs + 2) * sizeof(char*));
for (; nargs; --nargs) {
argv[nargs] = lua_tostring(L, nargs);
argv[nargs] = lua_tostring(L, nargs + 2);
}
argv[0] = fname;
*pf = elua_popen_c(fname, argv, mode);

View File

@ -62,8 +62,8 @@ local parse_l = function(opts, opt, descs, args, parser)
end
local dopts = desc.opts
if dopts then
dopts[#opts + 1] = opts[#opts]
dopts[optn] = opts[optn ]
dopts[#dopts + 1] = opts[#opts]
dopts[optn] = opts[optn ]
end
end