Diff for /libaitcfg/src/pq.c between versions 1.1.2.9 and 1.1.2.10

version 1.1.2.9, 2012/09/19 13:05:44 version 1.1.2.10, 2012/09/19 13:30:46
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);

Removed from v.1.1.2.9  
changed lines
  Added in v.1.1.2.10


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>