login_times(3)

NAME

parse_lt, in_ltm, in_ltms - functions for parsing and check
ing login time
periods

LIBRARY

System Utilities Library (libutil, -lutil)

SYNOPSIS

#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);

DESCRIPTION

This set of functions may be used for parsing and checking
login and session times against a predefined list of allowed login times
as used in
login.conf(5).
The format of allowed and disallowed session times specified
in the
times.allow and times.deny capability fields in a login
class are comprised of a prefix which specifies one or more 2- or 3-char
acter day
codes, followed by a start and end time in 24 hour format
separated by a
hyphen. Day codes may be concatenated together to select
specific days,
or the special mnemonics "Any" and "All" (for any/all days
of the week),
"Wk" for any day of the week (excluding Saturdays and Sun
days) and "Wd"
for any weekend day may be used.
For example, the following time period:
MoThFrSa1400-2200
is interpreted as Monday, Thursday through Saturday between
the hours of
2pm and 10pm.
Wd0600-1800
means Saturday and Sunday, between the hours of 6am through
6pm, and
Any0400-1600
means any day of the week, between 4am and 4pm.
Note that all time periods reference system local time.
The parse_lt() function converts the ASCII representation of
a time
period into a structure of type login_time_t. This is de
fined as:
typedef struct login_time
{
u_short lt_start; /* Start time */
u_short lt_end; /* End time */
u_char lt_dow; /* Days of week */
} login_time_t;
The lt_start and lt_end fields contain the number of minutes
past midnight at which the described period begins and ends. The
lt_dow field is
a bit field, containing one bit for each day of the week and
one bit
unused. A series LTM_* macros may be used for testing bits
individually
and in combination. If no bits are set in this field
i.e., it contains
the value LTM_NONE - then the entire period is assumed in
valid. This is
used as a convention to mark the termination of an array of
login_time_t
values. If parse_lt() returns a login_time_t with lt_dow
equal to
LTM_NONE then a parsing error was encountered.
The remaining functions provide the ability to test a given
time_t or
struct tm value against a specific time period or array of
time periods.
The in_ltm() function determines whether the given time de
scribed by the
struct tm passed as the second parameter falls within the
period
described by the first parameter. A boolean value is re
turned, indicating whether or not the time specified falls within the peri
od. If the
time does fall within the time period, and the third parame
ter to the
function is not NULL, the time at which the period ends rel
ative to the
time passed is returned.
The in_ltms() function is similar to in_ltm() except that
the first
parameter must be a pointer to an array of login_time_t ob
jects, which is
up to LC_MAXTIMES (64) elements in length, and terminated by
an element
with its lt_dow field set to LTM_NONE.

RETURN VALUES

The parse_lt() function returns a filled in structure of
type
login_time_t containing the parsed time period. If a pars
ing error
occurs, the lt_dow field is set to LTM_NONE (i.e., 0).
The in_ltm() function returns non-zero if the given time
falls within the
period described by the login_time_t passed as the first pa
rameter.
The in_ltms() function returns the index of the first time
period found
in which the given time falls, or -1 if none of them apply.

SEE ALSO

getcap(3), login_cap(3), login_class(3), login.conf(5),
termcap(5)
BSD January 2, 1997
Copyright © 2010-2025 Platon Technologies, s.r.o.           Home | Man pages | tLDP | Documents | Utilities | About
Design by styleshout