37 static void _status_os_replace(storage_t st,
const unsigned char *jid,
char *status,
char *show, time_t *lastlogin, time_t *lastlogout,
nad_t nad) {
39 os_object_t o = os_object_new(os);
40 os_object_put(o,
"status", status, os_type_STRING);
41 os_object_put(o,
"show", show, os_type_STRING);
42 os_object_put(o,
"last-login", (
void **) lastlogin, os_type_INTEGER);
43 os_object_put(o,
"last-logout", (
void **) lastlogout, os_type_INTEGER);
44 if(nad != NULL) os_object_put(o,
"xml", nad, os_type_NAD);
45 storage_replace(st,
"status", jid, NULL, os);
49 static void _status_store(storage_t st,
const unsigned char *jid,
pkt_t pkt, time_t *lastlogin, time_t *lastlogout) {
78 if(show_free) free(show);
93 if (ret == st_SUCCESS)
95 if (os_iter_first(os))
97 o = os_iter_object(os);
98 os_object_get_time(os, o,
"last-logout", &lastlogout);
99 os_object_get_nad(os, o,
"xml", &nad);
106 lastlogout = (time_t) 0;
130 if (ret == st_SUCCESS)
132 if (os_iter_first(os))
134 o = os_iter_object(os);
135 os_object_get_time(os, o,
"last-login", &lastlogin);
136 os_object_get_nad(os, o,
"xml", &nad);
143 lastlogin = (time_t) 0;
154 time_t lastlogin, lastlogout;
164 if (ret == st_SUCCESS)
166 if (os_iter_first(os))
168 o = os_iter_object(os);
169 os_object_get_time(os, o,
"last-login", &lastlogin);
170 os_object_get_time(os, o,
"last-logout", &lastlogout);
176 lastlogin = (time_t) 0;
177 lastlogout = (time_t) 0;
222 storage_delete(mi->
sm->
st,
"status",
jid_user(jid), NULL);
234 if (mod->
init)
return 0;