LOGIN_TIMES(3)

명칭
parse_lt, in_ltm, in_ltms - 로그인 시간대의 체크 및 해석을 실시하는 함수

프로그램 라이브러리
libutil

서식
<sys/types.h> <time.h> <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.allow (와)과 times.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)