make luaM_checkquadopt accept some string arguments. ("yes", "no", "ask-yes", "ask...
[apps/madmutt.git] / lib-lua / runtime.c
index ac724af..f7401e2 100644 (file)
@@ -75,8 +75,21 @@ int luaM_wrap(void (*errfun)(const char *fmt, ...), int status)
 quadopt_t luaM_checkquadopt(lua_State *Ls, int narg)
 {
     const char *s;
 quadopt_t luaM_checkquadopt(lua_State *Ls, int narg)
 {
     const char *s;
-    int i = luaL_checkinteger(Ls, narg);
+    int i;
+
+    if (lua_type(Ls, narg) == LUA_TSTRING) {
+        s = lua_tostring(Ls, narg);
+        switch (mlua_which_token(s, -1)) {
+          case LTK_YES:     return M_YES;
+          case LTK_NO:      return M_NO;
+          case LTK_ASK_YES: return M_ASKYES;
+          case LTK_ASK_NO:  return M_ASKNO;
+          default:
+            break;
+        }
+    }
 
 
+    i = luaL_checkinteger(Ls, narg);
     if (i & ~3) {
         s = lua_pushfstring(Ls, "int in [0-3] expected, got %d", i);
         return luaL_argerror(Ls, narg, s);
     if (i & ~3) {
         s = lua_pushfstring(Ls, "int in [0-3] expected, got %d", i);
         return luaL_argerror(Ls, narg, s);