機能
使用可能なユーザ一覧情報を取得します。
書式
int KVRCK_get_user_list(void *uhandle, KVRCK_user *user_info, char *reserve1, char *reserve2); |
パラメタ
void * | uhandle | (in) | ユーザ一覧情報用ハンドル |
戻り値
KVRCK_RET_NORMAL | 正常に情報取り出しが行われた |
説明
uhandleには、「KVRCK_open_user_list()」で返却されたハンドルを指定します。
user_infoには、ユーザ情報を含む構造体へのポインタを指定します。
本関数の戻り値がKVRCK_RET_NORMALの場合には、user_infoで指定された構造体にユーザ情報が格納されます。
KVRCK_RET_NORMAL以外の場合には、user_infoには何も格納されません。
「KVRCK_open_user_list()」直後の最初の呼び出し時には、ユーザ一覧情報の最初のエントリ情報を返し、二回目以降の呼び出しで、その次のエントリ情報を返却していきます。
最後のエントリ情報を返却した次の呼び出し時に、戻り値としてKVRCK_RET_EODを返します。
戻り値が、KVRCK_RET_EOD、またはKVRCK_RET_OTHERの場合、以降の呼び出しはKVRCK_RET_NORMAL以外の結果になります。
以下はユーザ情報構造体です。
typedef struct { |
定量制限
unameの最大長はKVRCK_MAXLEN_USERNAME文字です。
ucommentの最大長はKVRCK_MAXLEN_UCOMMENT文字です。
備考
本関数を呼び出す前には、必ず一度、「KVRCK_open_user_list()」を呼び出してください。
uname、ucommentの終端には、必ず終端記号’\0’が配置されます。
KVRCK_user構造体で返却するユーザ情報のuid(ユーザID)は返却するすべての情報内で必ず一意の値になるように返却します。
使用例
=================================================================================== /* 変数宣言 */ int ret; void *uhandle; KVRCK_user user_info; char *reserve1; char *reserve2; /* ユーザリストのオープン */ ret = KVRCK_open_user_list(&uhandle , reserve1, reserve2); switch (ret) { case KVRCK_RET_NORMAL: /* ハンドルが正常に取得された */ printf("Userlist open OK.\n"); break; case KVRCK_RET_OTHER: /* その他のエラーが発生した */ printf("Userlist open error!\n"); exit(1); } while (ret == KVRCK_RET_NORMAL) { /* ユーザリストの取得 */ ret = KVRCK_get_user_list(uhandle, &user_info, reserve1, reserve2); switch (ret) { case KVRCK_RET_NORMAL: /* 正常に情報取り出しが行われた */ printf("uid=%d, uname=%s, ucomment=%s, gid=%d\n", user_info.uid, user_info.uname, user_info.ucomment, user_info.gid); break; case KVRCK_RET_EOD: /* すべての情報の取り出しが正常に完了した */ printf("Userlist finished.\n"); break; case KVRCK_RET_OTHER: /* その他のエラーが発生した */ printf("Userlist get error!\n"); exit(1); } } /* ユーザリストのクローズ */ ret = KVRCK_close_user_list(uhandle , reserve1, reserve2); switch (ret) { case KVRCK_RET_NORMAL: /* ハンドルが正常に解放された */ printf("Userlist close OK.\n"); break; case KVRCK_RET_OTHER: /* その他のエラーが発生した */ printf("Userlist close error!\n"); exit(1); } ===================================================================================