スポンサーリンク

LOGIN_TIMES(3) FreeBSD ライブラリ関数マニュアル LOGIN_TIMES(3)

名称

parse_lt, in_ltm, in_ltms − ログイン時間帯のチェックおよび解析を行う関数

ライブラリ

システムユーティリティライブラリ (libutil, −lutil)

書式

#include <sys/types.h>
#include <time.h>
#include <login_cap.h>

login_time_t

parse_lt(const char *str);

int

in_ltm(const login_time_t *lt, struct tm *t, time_t *ends);

int

in_ltms(const login_time_t *lt, struct tm *t, time_t *ends);

解説

この関数セットは、 login.conf(5) で使用されている、ログイン許可時間に関す る定義済みリストと対照させてログインおよびセッション時間のチェックと解析 を行います。

ログインクラスの times.allowtimes.deny 権限フィールドで定義された許 可、非許可セッション時間の形式は、 1 桁または 2, 3 桁以上の文字の日付コー ドを定義する接頭語で構成されます。ハイフンで分離される 24 時形式の開始、 終了時間がそれに続きます。日付コードは、特定の日付を選択するために接合さ れるか、または "Any" や "All" (任意の曜日またはすべての曜日) や、曜日指定 (土曜日と日曜日を含む) のための "Wk"、週末を表す "Wd" などの、特殊な表記 記号も使用することができます。

時間帯はたとえば次のとおりです。

MoThFrSa1400-2200

これは、月曜日、木曜日、金曜日、土曜日の午後 2 時から 10 時の間と解釈され ます。

Wd0600-1800

これは、土曜日と日曜日の午前 6 時から午後 6 時までの意味です。

Any0400-1600

これは、任意の曜日の午前 4 時から午後 4 時の意味です。

注意事項:時間帯の表示はすべてシステムのローカル時間です。

関数 parse_lt() は、ASCII 表示の時間帯を login_time_t タイプの構造に変換 します。定義は次のとおりです。

typedef struct login_time
{
  u_short       lt_start;   /* 開始時刻 */
  u_short       lt_end;     /* 終了時刻 */
  u_char        lt_dow;     /* 曜日     */
} login_time_t;

lt_start および lt_end フィールドには、定義された時間の開始と終了時間が、 夜中から経過した分数を収録しています。 lt_dow フィールドはビットフィール ドで、各曜日の 1 ビットと未使用の 1 ビットを持っています。 LTM_* 系列のマ クロは、ビットの個別のまたは組み合わせの検査に使用されます。このフィール ドにビットが設定されていない場合、すなわち、値 LTM_NONE が入っていると き、時間帯はすべて間違っているとみなされます。これは、値 login_time_t の 配列の終端を示す慣習として使用されます。 parse_lt() が LTM_NONE と同等の lt_dow が設定された login_time_t を返した場合、構文解析エラーがあります。

残りの関数により、指定された time_t または特別な時間帯または時間帯の配列 に対する構造体 tm をテストできます。 in_ltm() により、第 2 パラメータとし て渡された構造体 tm で指定された時間が第 1 パラメータで定義された時間内に あるかどうか決定します。指定の時間が時間帯内にあるかどうかをバイナリ型の 戻り値で返します。時間が所定の時間帯になく、関数の第 3 パラメータが NULL でなければ、渡された時間に関係する時間帯の終了時間が返されます。

in_ltms() は、 in_ltm() と類似していますが、第 1 パラメータが login_time_t オブジェクトの配列のポインタでなければならないという点は異な ります。なお配列は、要素数が LC_MAXTIMES (64) で上限が規定されており、 LTM_NONE が設定された lt_dow フィールドにより終端が規定されています。

戻り値

parse_lt() は解析された時間帯を含む login_time_t 型の構造体を返します。構 文解析エラーがある場合、 lt_dow フィールドに LTM_NONE (すなわち 0) が設定 されます。

in_ltm() は、指定された時間が第 1 パラメータとして渡された login_time_t で定義した時間帯内にあれば、0 以外の値を返します。

in_ltms() は、指定された時間が適合する最初の時間帯のインデックスを返し、 ない場合は -1 を返します。

関連項目

getcap(3), login_cap(3), login_class(3), login.conf(5), termcap(5)

FreeBSD 10.0 January 2, 1997 FreeBSD 10.0

スポンサーリンク