Diff for /libaitcfg/src/aitcfg.c between versions 1.7 and 1.8

version 1.7, 2012/07/25 15:24:20 version 1.8, 2012/09/19 15:22:32
Line 45  SUCH DAMAGE. Line 45  SUCH DAMAGE.
 */  */
 #include "global.h"  #include "global.h"
 #include "aitcfg.h"  #include "aitcfg.h"
   #include "aitpwd.h"
   
   
 #pragma GCC visibility push(hidden)  #pragma GCC visibility push(hidden)
Line 53  int cfg_Errno; Line 54  int cfg_Errno;
 char cfg_Error[STRSIZ];  char cfg_Error[STRSIZ];
   
 inline int  inline int
   cfg_Write(FILE *f, char *fmt, ...)
   {
           int ret = 0;
           va_list lst;
   
           va_start(lst, fmt);
           ret = vfprintf(f, fmt, lst);
           va_end(lst);
   
           return ret;
   }
   
   inline int
 cfg_tree_cmp(struct tagCfg *a, struct tagCfg *b)  cfg_tree_cmp(struct tagCfg *a, struct tagCfg *b)
 {  {
         int ret;          int ret;
Line 220  cfgCreateConfig(const char *csConfigName, cfg_root_t * Line 234  cfgCreateConfig(const char *csConfigName, cfg_root_t *
         }          }
                   
         ret = cfgWriteConfig(f, cfg, whitespace);          ret = cfgWriteConfig(f, cfg, whitespace);
   
           fclose(f);
           return ret;
   }
   
   /*
    * cfgInitPasswd() - Init password root
    *
    * @pwd = Password root
    * return: -1 error or 0 ok
    */
   int
   cfgInitPasswd(pwd_root_t * __restrict pwd)
   {
           if (!pwd)
                   return -1;
   
           pthread_mutex_init(&pwd->pwd_mtx, NULL);
   
           SLIST_INIT(pwd);
           RB_INIT(pwd);
           return 0;
   }
   
   /*
    * cfgLoadPasswd() - Load passwords from file
    *
    * @pwdName = Passwords filename
    * @pwd = Password root
    * return: -1 error or 0 ok
    */
   int
   cfgLoadPasswd(const char *pwdName, pwd_root_t * __restrict pwd)
   {
           FILE *f;
           int ret;
   
           if (!pwdName || !pwd) {
                   cfg_SetErr(EINVAL, "Invalid parameter(s)");
                   return -1;
           } else
                   cfgInitPasswd(pwd);
   
           f = fopen(pwdName, "r");
           if (!f) {
                   LOGERR;
                   return -1;
           }
   
           ret = cfgReadPasswd(f, pwd);
   
           fclose(f);
           return ret;
   }
   
   /*
    * cfgClearPasswd() - Clear passwords and free resources
    *
    * @cfg = Password root
    * return: none
    */
   void
   cfgClearPasswd(pwd_root_t * __restrict pwd)
   {
           struct tagUser *p;
   
           if (!pwd)
                   return;
   
           PWD_LOCK(pwd);
           while ((p = SLIST_FIRST(pwd))) {
                   SLIST_REMOVE_HEAD(pwd, usr_next);
   
                   AIT_FREE_VAL(&p->usr_name);
                   AIT_FREE_VAL(&p->usr_pass);
                   AIT_FREE_VAL(&p->usr_uid);
                   AIT_FREE_VAL(&p->usr_gid);
                   AIT_FREE_VAL(&p->usr_class);
                   AIT_FREE_VAL(&p->usr_change);
                   AIT_FREE_VAL(&p->usr_expire);
                   AIT_FREE_VAL(&p->usr_realm);
                   AIT_FREE_VAL(&p->usr_home);
                   AIT_FREE_VAL(&p->usr_shell);
                   io_free(p);
           }
           pwd->rbh_root = NULL;
           PWD_UNLOCK(pwd);
   }
   
   /*
    * cfgUnloadPasswd() - Unload passwords from memory and destroy resources
    *
    * @pwd = Password root
    * return: none
    */
   void
   cfgUnloadPasswd(pwd_root_t * __restrict pwd)
   {
           if (!pwd)
                   return;
   
           cfgClearPasswd(pwd);
           pthread_mutex_destroy(&pwd->pwd_mtx);
   }
   
   /*
    * cfgCreatePasswd() - Create password file from memory
    *
    * @pwdName = New password filename
    * @pwd = Password root
    * return: -1 error or 0 ok
    */
   int
   cfgCreatePasswd(const char *pwdName, pwd_root_t * __restrict pwd)
   {
           FILE *f;
           int ret;
   
           if (!pwdName || !pwd)
                   return -1;
   
           f = fopen(pwdName, "w");
           if (!f) {
                   LOGERR;
                   return -1;
           }
           
           ret = cfgWritePasswd(f, pwd);
   
         fclose(f);          fclose(f);
         return ret;          return ret;

Removed from v.1.7  
changed lines
  Added in v.1.8


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