summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRoger Planas <roger.planas@isode.com>2017-07-04 11:03:55 (GMT)
committerRoger Planas <roger.planas@isode.com>2017-10-30 12:25:43 (GMT)
commitc29df10f0ab47db63509634fb1661ff55b8b47b3 (patch)
treeebf7486b653b554e3122c3509da17e17ef25f312 /Sluift/client.cpp
parented25c7d2fe46dca4edecd359755b15e16620056e (diff)
downloadswift-c29df10f0ab47db63509634fb1661ff55b8b47b3.zip
swift-c29df10f0ab47db63509634fb1661ff55b8b47b3.tar.bz2
Sluift: Add support for Lua 5.3
This patch adds support for Lua 5.3, while keeping support for Lua 5.1 (a build with the bundled Lua succeeds) Test-information: Builds cleanly on Lua 5.1, 5.2 and Lua 5.3. Tests that make use of Sluift work with both Lua 5.2 and Lua 5.3 Change-Id: I4cbe2eb09ec8c753d8624047f5456be1de72c679
Diffstat (limited to 'Sluift/client.cpp')
-rw-r--r--Sluift/client.cpp2
1 files changed, 1 insertions, 1 deletions
diff --git a/Sluift/client.cpp b/Sluift/client.cpp
index 75f675d..ae2f610 100644
--- a/Sluift/client.cpp
+++ b/Sluift/client.cpp
@@ -674,61 +674,61 @@ SLUIFT_LUA_FUNCTION(Client, get_next_event) {
return 1;
}
SLUIFT_LUA_FUNCTION_WITH_HELP(
Client, add_contact,
"Add a contact to the contact list.",
"self\n",
"jid The JID of the contact to add\n"
"name The name to use in the contact list\n"
"groups An array of group names to add the contact to\n") {
Sluift::globals.eventLoop.runOnce();
SluiftClient* client = getClient(L);
RosterItemPayload item;
int timeout = getGlobalTimeout(L);
if (lua_type(L, 2) == LUA_TTABLE) {
lua_getfield(L, 2, "jid");
const char* rawJID = lua_tostring(L, -1);
if (rawJID) {
item.setJID(std::string(rawJID));
}
lua_getfield(L, 2, "name");
const char* rawName = lua_tostring(L, -1);
if (rawName) {
item.setName(rawName);
}
lua_getfield(L, 2, "groups");
if (!lua_isnil(L, -1)) {
if (lua_type(L, -1) == LUA_TTABLE) {
- for (size_t i = 1; i <= lua_objlen(L, -1); ++i) {
+ for (size_t i = 1; i <= lua_rawlen(L, -1); ++i) {
lua_rawgeti(L, -1, boost::numeric_cast<int>(i));
const char* rawGroup = lua_tostring(L, -1);
if (rawGroup) {
item.addGroup(rawGroup);
}
lua_pop(L, 1);
}
}
else {
throw Lua::Exception("Groups should be a table");
}
}
}
else {
item.setJID(Lua::checkString(L, 2));
}
client->getRoster(timeout);
if (!client->getClient()->getRoster()->containsJID(item.getJID())) {
RosterPayload::ref roster = std::make_shared<RosterPayload>();
roster->addItem(item);
Sluift::Response response = client->sendVoidRequest(
SetRosterRequest::create(roster, client->getClient()->getIQRouter()), timeout);
if (response.error) {
return response.convertToLuaResult(L);
}
}
client->getClient()->getSubscriptionManager()->requestSubscription(item.getJID());
lua_pushboolean(L, true);