+static int madmutt_assign(lua_State *L)
+{
+ const char *idx = luaL_checkstring(L, 2);
+ const char *val = luaL_checkstring(L, 3);
+
+ switch (lua_which_token(idx, -1)) {
+ default:
+ luaL_error(L, "bad subscript to madmutt: %s", val);
+ return 0;
+
+ case LTK_SENDMAIL:
+ case LTK_SHELL:
+ break;
+ }
+
+ lua_getmetatable(L, 1);
+ lua_pushstring(L, idx);
+ lua_pushstring(L, val);
+ lua_rawset(L, -3);
+
+ return 0;
+}
+