--- libaitcfg/inc/aitpwd.h 2012/09/18 08:17:59 1.1.2.1 +++ libaitcfg/inc/aitpwd.h 2012/09/18 08:44:19 1.1.2.2 @@ -3,7 +3,7 @@ * by Michael Pounov * * $Author: misho $ -* $Id: aitpwd.h,v 1.1.2.1 2012/09/18 08:17:59 misho Exp $ +* $Id: aitpwd.h,v 1.1.2.2 2012/09/18 08:44:19 misho Exp $ * ************************************************************************** The ELWIX and AITNET software is distributed under the following @@ -85,9 +85,17 @@ struct tagUser { SLIST_ENTRY(tagCfg) usr_next; RB_ENTRY(tagCfg) usr_node; }; +typedef struct tagPWD { + pthread_mutex_t pwd_mtx; -typedef struct tagUser * passwd_t; + struct tagUser *slh_first; + struct tagUser *rbh_root; +} pwd_root_t; +#define PWD_LOCK(x) pthread_mutex_lock(&(x)->pwd_mtx) +#define PWD_UNLOCK(x) pthread_mutex_unlock(&(x)->pwd_mtx) +#define PWD_ISEMPTY(x) RB_EMPTY((x)) + typedef enum { ALL = -1, Username, Password, @@ -102,36 +110,45 @@ typedef enum { ALL = -1, } passwd_attr_t; -#if 0 /* - * CreatePasswd() Create secrets from memory - * @csPasswdName = New filename for secrets - * @ppwd = Users array element - * return: 0 ok; -1 error:: can`t save new file -*/ -int CreatePasswd(const char *csPasswdName, passwd_t * __restrict ppwd); + * cfgInitPasswd() - Init password root + * + * @pwd = Password root + * return: -1 error or 0 ok + */ +int cfgInitPasswd(pwd_root_t * __restrict pwd); /* - * LoadPasswd() Load secrets from file - * @csPasswdName = Filename of secrets - * @ppwd = Users array element - * return: 0 ok; -1 error:: can`t load file -*/ -int LoadPasswd(const char *csPasswdName, passwd_t * __restrict ppwd); + * 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); /* - * UnloadPasswd() Unload secrets from memory and free resources - * @ppwd = Users array element -*/ -void UnloadPasswd(passwd_t * __restrict ppwd); + * cfgClearPasswd() - Clear passwords and free resources + * + * @cfg = Password root + * return: none + */ +void cfgClearPasswd(pwd_root_t * __restrict pwd); +/* + * cfgUnloadPasswd() - Unload passwords from memory and destroy resources + * + * @pwd = Password root + * return: none + */ +void cfgUnloadPasswd(pwd_root_t * __restrict pwd); +/* + * 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); - -// pwd_GetErrno() Get error code of last operation -inline int pwd_GetErrno(); -// pwd_GetError() Get error text of last operation -inline const char *pwd_GetError(); -// pwd_Delimiter() Operate with file delimiter, if delim == 0 only get current -inline unsigned char pwd_GetDelim(unsigned char delim); - - +#if 0 /* * ReadPasswd() Read from file and add new item to user array * @f = file resource