version 1.1.2.8, 2012/09/19 13:02:58
|
version 1.1.2.11, 2012/09/19 14:07:20
|
Line 109 cfg_findPasswdBy(pwd_root_t * __restrict pwd, int crit
|
Line 109 cfg_findPasswdBy(pwd_root_t * __restrict pwd, int crit
|
} |
} |
break; |
break; |
case PWD_CRIT_UID: |
case PWD_CRIT_UID: |
if (AIT_GET_LIKE(&u->usr_uid, u_int) == AIT_GET_U32(&v)) { | if ((u_int) AIT_RAW(&u->usr_uid) == AIT_GET_U32(&v)) { |
AIT_FREE_VAL(&v); |
AIT_FREE_VAL(&v); |
return u; |
return u; |
} |
} |
break; |
break; |
case PWD_CRIT_GID: |
case PWD_CRIT_GID: |
if (AIT_GET_LIKE(&u->usr_gid, u_int) == AIT_GET_U32(&v)) { | if ((u_int) AIT_RAW(&u->usr_gid) == AIT_GET_U32(&v)) { |
AIT_FREE_VAL(&v); |
AIT_FREE_VAL(&v); |
return u; |
return u; |
} |
} |
Line 137 cfg_findPasswdBy(pwd_root_t * __restrict pwd, int crit
|
Line 137 cfg_findPasswdBy(pwd_root_t * __restrict pwd, int crit
|
int |
int |
cfg_unsetPasswd(pwd_root_t * __restrict pwd, int criteria, ...) |
cfg_unsetPasswd(pwd_root_t * __restrict pwd, int criteria, ...) |
{ |
{ |
struct tagUser *u; | struct tagUser *u, *u2; |
va_list lst; |
va_list lst; |
|
u_int n = 0; |
|
char *name = NULL; |
|
|
if (!pwd) |
if (!pwd) |
return -1; |
return -1; |
|
|
va_start(lst, criteria); |
va_start(lst, criteria); |
switch (criteria) { |
switch (criteria) { |
case PWD_CRIT_NAME: |
|
u = _selectPasswd(pwd, 0, va_arg(lst, char*)); |
|
break; |
|
case PWD_CRIT_UID: |
case PWD_CRIT_UID: |
u = _selectPasswd(pwd, va_arg(lst, u_int), NULL); | n = va_arg(lst, u_int); |
break; |
break; |
|
case PWD_CRIT_NAME: |
|
name = va_arg(lst, char*); |
|
if (name) |
|
break; |
default: |
default: |
va_end(lst); |
va_end(lst); |
return -1; |
return -1; |
} |
} |
va_end(lst); |
va_end(lst); |
|
|
|
u = _selectPasswd(pwd, n, name); |
if (!u) |
if (!u) |
return 0; |
return 0; |
|
|
PWD_LOCK(pwd); |
PWD_LOCK(pwd); |
RB_REMOVE(tagPWD, pwd, u); |
RB_REMOVE(tagPWD, pwd, u); |
SLIST_REMOVE(pwd, u, tagUser, usr_next); |
SLIST_REMOVE(pwd, u, tagUser, usr_next); |
|
|
|
/* if duplicates exists, then update r/b tree */ |
|
SLIST_FOREACH(u2, pwd, usr_next) |
|
if (!AIT_ISEMPTY(&u2->usr_name) && |
|
!strcmp(AIT_GET_STR(&u->usr_name), AIT_GET_STR(&u2->usr_name))) { |
|
RB_INSERT(tagPWD, pwd, u2); |
|
break; |
|
} |
PWD_UNLOCK(pwd); |
PWD_UNLOCK(pwd); |
|
|
AIT_FREE_VAL(&u->usr_name); |
AIT_FREE_VAL(&u->usr_name); |
Line 228 cfg_setPasswd(pwd_root_t * __restrict pwd, u_char fiel
|
Line 241 cfg_setPasswd(pwd_root_t * __restrict pwd, u_char fiel
|
for (i = 0; i < (u->usr_fields + 1); i++) |
for (i = 0; i < (u->usr_fields + 1); i++) |
switch (i) { |
switch (i) { |
case 0: |
case 0: |
AIT_SET_STR(&u->usr_name, va_arg(lst, char*)); | AIT_SET_STR(&u->usr_name, csName); |
break; |
break; |
case 1: |
case 1: |
AIT_SET_STR(&u->usr_pass, va_arg(lst, char*)); |
AIT_SET_STR(&u->usr_pass, va_arg(lst, char*)); |