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

version 1.1.2.3, 2012/09/19 12:04:44 version 1.1.2.9, 2012/09/19 13:05:44
Line 83  cfg_findPasswdBy(pwd_root_t * __restrict pwd, int crit Line 83  cfg_findPasswdBy(pwd_root_t * __restrict pwd, int crit
   
         if (!pwd)          if (!pwd)
                 return NULL;                  return NULL;
           else
                   AIT_INIT_VAL(&v);
   
         va_start(lst, criteria);          va_start(lst, criteria);
         switch (criteria) {          switch (criteria) {
Line 107  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_U32(&u->usr_uid) == AIT_GET_U32(&v)) {                                if (AIT_GET_LIKE(&u->usr_uid, u_int) == 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_U32(&u->usr_gid) == AIT_GET_U32(&v)) {                                if (AIT_GET_LIKE(&u->usr_gid, u_int) == AIT_GET_U32(&v)) {
                                         AIT_FREE_VAL(&v);                                          AIT_FREE_VAL(&v);
                                         return u;                                          return u;
                                 }                                  }
Line 180  cfg_unsetPasswd(pwd_root_t * __restrict pwd, int crite Line 182  cfg_unsetPasswd(pwd_root_t * __restrict pwd, int crite
  * cfg_setPasswd() - Set item in password or adding new item if not exists   * cfg_setPasswd() - Set item in password or adding new item if not exists
  *   *
  * @cfg = Password root   * @cfg = Password root
    * @fields = Meaning continuous field
  * @csName = Username   * @csName = Username
 * @csPass = Password * @arg1 = Password
 * @uid = UID * @arg2 = UID
 * @gid = GID * @arg3 = GID
 * @Class = Login class * @arg4 = Login class
 * @change = Chage date * @arg5 = Chage date
 * @expire = Expire date * @arg6 = Expire date
 * @csRealm = Realm * @arg7 = Realm
 * @csHome = Home dir * @arg8 = Home dir
 * @csShell = Shell * @arg9 = Shell
  * return: 0 nothing changed, -1 error, 1 found and updated item or 2 added new item   * return: 0 nothing changed, -1 error, 1 found and updated item or 2 added new item
  */   */
 int  int
cfg_setPasswd(pwd_root_t * __restrict pwd, const char *csName, const char *csPass, cfg_setPasswd(pwd_root_t * __restrict pwd, u_char fields, const char *csName, ...) 
                u_int uid, u_int gid, const char *csClass, u_int change, u_int expire,  
                const char *csRealm, const char *csHome, const char *csShell) 
 {  {
         struct tagUser *u;          struct tagUser *u;
           register int i;
           va_list lst;
   
         if (!pwd || !csName)          if (!pwd || !csName)
                 return -1;                  return -1;
Line 211  cfg_setPasswd(pwd_root_t * __restrict pwd, const char  Line 214  cfg_setPasswd(pwd_root_t * __restrict pwd, const char 
                         return -1;                          return -1;
                 } else {                  } else {
                         memset(u, 0, sizeof(struct tagUser));                          memset(u, 0, sizeof(struct tagUser));
                           if (fields && fields < PWD_MAX_FIELDS)
                                   u->usr_fields = fields;
                           else
                                   u->usr_fields = PWD_MAX_FIELDS - 1;
   
                         PWD_LOCK(pwd);                          PWD_LOCK(pwd);
                         SLIST_INSERT_HEAD(pwd, u, usr_next);                          SLIST_INSERT_HEAD(pwd, u, usr_next);
                         PWD_UNLOCK(pwd);                          PWD_UNLOCK(pwd);
                 }                  }
   
                AIT_SET_STR(&u->usr_name, csName);                va_start(lst, csName);
                AIT_SET_STR(&u->usr_pass, csPass);                for (i = 0; i < (u->usr_fields + 1); i++)
                AIT_SET_U32(&u->usr_uid, uid);                        switch (i) {
                AIT_SET_U32(&u->usr_gid, gid);                                case 0:
                AIT_SET_STR(&u->usr_class, csClass);                                        AIT_SET_STR(&u->usr_name, csName);
                AIT_SET_U32(&u->usr_change, change);                                        break;
                AIT_SET_U32(&u->usr_expire, expire);                                case 1:
                AIT_SET_STR(&u->usr_realm, csRealm);                                        AIT_SET_STR(&u->usr_pass, va_arg(lst, char*));
                AIT_SET_STR(&u->usr_home, csHome);                                        break;
                AIT_SET_STR(&u->usr_shell, csShell);                                case 2:
                                         AIT_SET_U32(&u->usr_uid, va_arg(lst, u_int));
                                         break;
                                 case 3:
                                         AIT_SET_U32(&u->usr_gid, va_arg(lst, u_int));
                                         break;
                                 case 4:
                                         AIT_SET_STR(&u->usr_class, va_arg(lst, char*));
                                         break;
                                 case 5:
                                         AIT_SET_U32(&u->usr_change, va_arg(lst, u_int));
                                         break;
                                 case 6:
                                         AIT_SET_U32(&u->usr_expire, va_arg(lst, u_int));
                                         break;
                                 case 7:
                                         AIT_SET_STR(&u->usr_realm, va_arg(lst, char*));
                                         break;
                                 case 8:
                                         AIT_SET_STR(&u->usr_home, va_arg(lst, char*));
                                         break;
                                 case 9:
                                         AIT_SET_STR(&u->usr_shell, va_arg(lst, char*));
                                         break;
                         }
                 va_end(lst);
   
                 AIT_KEY(&u->usr_name) = crcFletcher16(AIT_GET_LIKE(&u->usr_name, u_short*),                   AIT_KEY(&u->usr_name) = crcFletcher16(AIT_GET_LIKE(&u->usr_name, u_short*), 
                                 io_align(AIT_LEN(&u->usr_name) - 1, 2) / 2);                                  io_align(AIT_LEN(&u->usr_name) - 1, 2) / 2);
Line 247  cfg_setPasswd(pwd_root_t * __restrict pwd, const char  Line 279  cfg_setPasswd(pwd_root_t * __restrict pwd, const char 
                 AIT_FREE_VAL(&u->usr_shell);                  AIT_FREE_VAL(&u->usr_shell);
   
                 /* Update element */                  /* Update element */
                AIT_SET_STR(&u->usr_pass, csPass);                va_start(lst, csName);
                AIT_SET_U32(&u->usr_uid, uid);                for (i = 1; i < (u->usr_fields + 1); i++)
                AIT_SET_U32(&u->usr_gid, gid);                        switch (i) {
                AIT_SET_STR(&u->usr_class, csClass);                                case 1:
                AIT_SET_U32(&u->usr_change, change);                                        AIT_SET_STR(&u->usr_pass, va_arg(lst, char*));
                AIT_SET_U32(&u->usr_expire, expire);                                        break;
                AIT_SET_STR(&u->usr_realm, csRealm);                                case 2:
                AIT_SET_STR(&u->usr_home, csHome);                                        AIT_SET_U32(&u->usr_uid, va_arg(lst, u_int));
                AIT_SET_STR(&u->usr_shell, csShell);                                        break;
                                 case 3:
                                         AIT_SET_U32(&u->usr_gid, va_arg(lst, u_int));
                                         break;
                                 case 4:
                                         AIT_SET_STR(&u->usr_class, va_arg(lst, char*));
                                         break;
                                 case 5:
                                         AIT_SET_U32(&u->usr_change, va_arg(lst, u_int));
                                         break;
                                 case 6:
                                         AIT_SET_U32(&u->usr_expire, va_arg(lst, u_int));
                                         break;
                                 case 7:
                                         AIT_SET_STR(&u->usr_realm, va_arg(lst, char*));
                                         break;
                                 case 8:
                                         AIT_SET_STR(&u->usr_home, va_arg(lst, char*));
                                         break;
                                 case 9:
                                         AIT_SET_STR(&u->usr_shell, va_arg(lst, char*));
                                         break;
                         }
                 va_end(lst);
                 return 1;                  return 1;
         }          }
   
Line 276  cfg_getPasswd(pwd_root_t * __restrict pwd, int criteri Line 331  cfg_getPasswd(pwd_root_t * __restrict pwd, int criteri
 {  {
         struct tagUser *u;          struct tagUser *u;
         va_list lst;          va_list lst;
           char *str;
   
         if (!pwd)          if (!pwd)
                 return NULL;                  return NULL;
Line 283  cfg_getPasswd(pwd_root_t * __restrict pwd, int criteri Line 339  cfg_getPasswd(pwd_root_t * __restrict pwd, int criteri
         va_start(lst, criteria);          va_start(lst, criteria);
         switch (criteria) {          switch (criteria) {
                 case PWD_CRIT_NAME:                  case PWD_CRIT_NAME:
                        u = _selectPasswd(pwd, 0, va_arg(lst, char*));                        str = va_arg(lst, char*);
                         if (!str)
                                 u = NULL;
                         else
                                 u = _selectPasswd(pwd, 0, str);
                         break;                          break;
                 case PWD_CRIT_UID:                  case PWD_CRIT_UID:
                         u = _selectPasswd(pwd, va_arg(lst, u_int), NULL);                          u = _selectPasswd(pwd, va_arg(lst, u_int), NULL);

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


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