static JSValueRef get_users_cb(JSContextRef context, JSObjectRef thisObject, JSStringRef propertyName, JSValueRef *exception) { JSObjectRef array; const GList *users, *link; guint i, n_users = 0; JSValueRef *args; users = lightdm_user_list_get_users(lightdm_user_list_get_instance()); n_users = g_list_length((GList *) users); args = g_malloc(sizeof(JSValueRef) * ( n_users + 1 )); for (i = 0, link = users; link; i++, link = link->next) { LightDMUser *user = link->data; g_object_ref(user); args[i] = JSObjectMake(context, lightdm_user_class, user); } array = JSObjectMakeArray(context, n_users, args, exception); g_free(args); if (array == NULL) { return JSValueMakeNull(context); } else { return array; } }
JS_EXPORT_API JSObjectRef greeter_get_users () { JSObjectRef array = json_array_create (); LightDMUser *user = NULL; guint i; if (users == NULL) { LightDMUserList *user_list = lightdm_user_list_get_instance (); if (user_list == NULL) { g_warning ("get users:user list is NULL\n"); return array; } users = lightdm_user_list_get_users (user_list); } for (i = 0; i < g_list_length (users); ++i) { gchar *username = NULL; user = (LightDMUser *) g_list_nth_data (users, i); username = g_strdup (lightdm_user_get_name (user)); json_array_insert (array, i, jsvalue_from_cstr (get_global_context (), g_strdup (username))); g_free (username); } return array; }
static JSValueRef get_num_users_cb(JSContextRef context, JSObjectRef thisObject, JSStringRef propertyName, JSValueRef *exception) { return JSValueMakeNumber( context, g_list_length(lightdm_user_list_get_users(lightdm_user_list_get_instance())) ); }
static void lightdm_user_list_init(LightdmUserList *lightdm_user_list) { const GList *items, *item; LightDMUser *user; items = lightdm_user_list_get_users (lightdm_user_list_get_instance ()); for (item = items; item; item = item->next) { user = item->data; lightdm_user_list_append_lightdm_user(lightdm_user_list, user); } if (lightdm_greeter_get_has_guest_account_hint (lightdm_user_list->xfce4_greeter->greeter)) lightdm_user_list_append_user(lightdm_user_list, "*guest", _("Guest Account")); lightdm_user_list_append_user(lightdm_user_list, "*other", _("Other...")); }