From 8cd3ec0f6d120741683070fab1adcdded50dcc81 Mon Sep 17 00:00:00 2001 From: Daouda Lo Date: Thu, 19 Jun 2003 08:45:29 +0000 Subject: - unlock , islocked and lock implementations --- USER/USER.xs | 126 +++++++++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 96 insertions(+), 30 deletions(-) (limited to 'USER') diff --git a/USER/USER.xs b/USER/USER.xs index 2177f8a..8249708 100644 --- a/USER/USER.xs +++ b/USER/USER.xs @@ -536,14 +536,50 @@ Admin_UserAdd(self, ent, is_system, dont_create_home) OUTPUT: RETVAL +int +Admin_IsLocked(self, ent) + USER::ADMIN *self + USER::ENT *ent + CODE: + USER__ERR *error = NULL; + if (lu_user_islocked(self, ent, &error)) + RETVAL = 1 + else RETVAL = 0; + OUPUT: + RETVAL + +int +Admin_Lock(self, ent) + USER::ADMIN *self + USER::ENT *ent + CODE: + USER__ERR *error = NULL; + if (lu_user_lock(self, ent, &error) == FALSE) + RETVAL = 0 + else RETVAL = 1 + OUTPUT: + RETVAL + +int +Admin_UnLock(self, ent) + USER::ADMIN *self + USER::ENT *ent + CODE: + USER__ERR *error = NULL; + if (lu_user_unlock(self, ent, &error) == FALSE) + RETVAL = 0 + else RETVAL = 1 + OUTPUT: + RETVAL + void Admin_UserModify(self, ent) USER::ADMIN *self USER::ENT *ent PPCODE: - struct lu_error *error = NULL; + USER__ERR *error = NULL; if (lu_user_modify(self, ent, &error) == FALSE) { - croak("Group could not be modified %s.\n", error ? error->string : "Unknown error"); + croak("User could not be modified %s.\n", error ? error->string : "Unknown error"); } int @@ -559,11 +595,6 @@ Admin_UserDel(self, ent) OUTPUT: RETVAL -void -Admin_UserEdit(self, ent) - USER::ADMIN *self - USER::ENT *ent - void Admin_InitUser(self, name, is_system) USER::ADMIN *self @@ -582,7 +613,7 @@ Admin_UserSetPass(self, ent, userPasswd) char *userPasswd PPCODE: USER__ERR *error = NULL; - gboolean crypted = FALSE; + gboolean crypted = TRUE; if (lu_user_setpass(self, ent, userPasswd, crypted, &error) == FALSE) { croak("Failed to set password %s.\n", error ? error->string : _("unknown error")); if (error) { lu_error_free(&error); } @@ -649,7 +680,7 @@ Admin_GroupAdd(self, ent) USER::ADMIN *self USER::ENT *ent PPCODE: - struct lu_error *error = NULL; + USER__ERR *error = NULL; if (lu_group_add(self, ent, &error) == FALSE) { warn("Group creation failed.\n"); } @@ -659,7 +690,7 @@ Admin_GroupModify(self, ent) USER::ADMIN *self USER::ENT *ent PPCODE: - struct lu_error *error = NULL; + USER__ERR *error = NULL; if (lu_group_modify(self, ent, &error) == FALSE) { croak("Group could not be modified %s.\n", error ? error->string : "Unknown error"); } @@ -669,7 +700,7 @@ Admin_GroupDel(self, ent) USER::ADMIN *self USER::ENT *ent CODE: - USER__ERR *error; + USER__ERR *error = NULL; if (lu_group_delete(self, ent, &error) == FALSE) { croak("Group could not be deleted: %s.\n", error ? error->string : "Unknown error"); RETVAL = 0; @@ -677,11 +708,6 @@ Admin_GroupDel(self, ent) OUTPUT: RETVAL -void -Admin_GroupEdit(self, ent) - USER::ADMIN *self - USER::ENT *ent - void Admin_InitGroup(self, name, is_system) USER::ADMIN *self @@ -731,6 +757,44 @@ Admin_EnumerateGroupsByUser(self, name) OUTPUT: RETVAL +AV * +Admin_UsersEnumerate(self) + USER::ADMIN *self + CODE: + int c; + USER__ERR *error = NULL; + const char *pattern = NULL; + RETVAL = (AV*)sv_2mortal((SV*)newAV()); + GValueArray *users; + users = lu_users_enumerate(self, pattern, &error); + for (c = 0; ( users != NULL) && (c < users->n_values); c++) { + if( av_store(RETVAL, c, newSVpv(g_value_get_string(g_value_array_get_nth(users, c)), 0)) == NULL ){ + warn("XS_UserEnumerate: failed to store elements of array"); + } + } + g_value_array_free(users); + OUTPUT: + RETVAL + +AV * +Admin_GroupsEnumerate(self) + USER::ADMIN *self + CODE: + int c; + USER__ERR *error = NULL; + const char *pattern = NULL; + RETVAL = (AV*)sv_2mortal((SV*)newAV()); + GValueArray *groups; + groups = lu_groups_enumerate(self, pattern, &error); + for (c = 0; (groups != NULL) && (c < groups->n_values); c++) { + if( av_store(RETVAL, c, newSVpv(g_value_get_string(g_value_array_get_nth(groups, c)), 0)) == NULL ){ + warn("XS_GroupEnumerate: failed to store elements of array"); + } + } + g_value_array_free(groups); + OUTPUT: + RETVAL + AV * Admin_UsersEnumerateFull(self) USER::ADMIN *self @@ -1127,22 +1191,24 @@ Ent_ShadowWarn(self, ssv) PPCODE: GValueArray *values; GValue *value, val; - if ( SvIOK(ssv) && SvIV(ssv) == -65533) { - values = lu_ent_get(self, LU_SHADOWWARNING); - if (values != NULL) { - value = g_value_array_get_nth(values, 0); - if (G_VALUE_HOLDS_STRING(value)) { - XPUSHs(sv_2mortal(newSVpv(g_value_get_string(value), 0))); - } else if (G_VALUE_HOLDS_LONG(value)) { - XPUSHs(sv_2mortal(newSVpv(g_strdup_printf("%ld", g_value_get_long(value)), 0))); + if ( SvIOK(ssv) ) { + if (SvIV(ssv) == -65533) { + values = lu_ent_get(self, LU_SHADOWWARNING); + if (values != NULL) { + value = g_value_array_get_nth(values, 0); + if (G_VALUE_HOLDS_LONG(value)) { + XPUSHs(sv_2mortal(newSViv(g_value_get_long(value)))); + } else if (G_VALUE_HOLDS_STRING(value)) { + XPUSHs(sv_2mortal(newSViv(atol(g_value_get_string(value))))); + } } + } else { + memset(&val, 0, sizeof(val)); + g_value_init(&val, G_TYPE_LONG); + g_value_set_long(&val, (long)SvIV( ssv )); + lu_ent_clear(self, LU_SHADOWWARNING); + lu_ent_add(self, LU_SHADOWWARNING, &val); } - } else if( SvPOK( ssv ) ) { - memset(&val, 0, sizeof(val)); - g_value_init(&val, G_TYPE_STRING); - g_value_set_string(&val, SvPV(ssv,PL_na)); - lu_ent_clear(self, LU_SHADOWWARNING); - lu_ent_add(self, LU_SHADOWWARNING, &val); } else { warn("XS_ShadowWarn: Cannot make operation on LU_SHADOWWARNING attribute"); } -- cgit v1.2.1