lm_message.c
changeset 12 63f06a23c235
parent 11 a8c6460d612b
child 16 09b375e9ce32
--- a/lm_message.c	Sun Mar 08 00:48:19 2009 +0200
+++ b/lm_message.c	Sat Mar 14 02:41:26 2009 +0200
@@ -69,13 +69,17 @@
 
 /// lm.message.new
 /// Creates new message object.
+/// Note: you can specify nil as to argument to send message to server.
 /// A: string (to), message type, message sub type (optional)
 /// R: lm message object
 static int new_lm_message (lua_State *L)
 {
-	const char *to   = luaL_checkstring (L, 1);
+	const char *to   = NULL;
 	int         type = luaL_checkenum (L, 2, type_lm_message);
 	LmMessage *message;
+
+	if (lua_type (L, 1) != LUA_TNIL)
+		to = luaL_checkstring (L, 1);
 	if (lua_gettop (L) > 2)
 		message = lm_message_new_with_sub_type (to, type,
 						luaL_checkenum (L, 3, sub_type_lm_message));
@@ -142,12 +146,12 @@
 static const luaL_Reg reg_f_lm_message[] = {
 	{ "new",   new_lm_message       },
 	{ "bless", bless_lua_lm_message },
-	{ NULL,    NULL                  },
+	{ NULL,    NULL                 },
 };
 
 static const luaL_Reg reg_m_lm_message[] = {
-	{ "node",       node_lm_message            },
-	{ "type",       kind_lm_message            },
+	{ "node",       node_lm_message    },
+	{ "type",       kind_lm_message    },
 	// These methods are common for message and message node
 	{ "next",       next_lm_node       },
 	{ "prev",       prev_lm_node       },
@@ -161,9 +165,9 @@
 	{ "xml",        xml_lm_node        },
 	{ "path",       path_lm_node       },
 	// End common methods
-	{ "pointer",    pointer_lm_message         },
-	{ "__gc",       gc_lm_message              },
-	{ NULL,         NULL                        },
+	{ "pointer",    pointer_lm_message },
+	{ "__gc",       gc_lm_message      },
+	{ NULL,         NULL               },
 };
 
 int luaopen_lm_message (lua_State *L)