Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
LOGIN_TIMES(3)	       FreeBSD Library Functions Manual		LOGIN_TIMES(3)

     parse_lt, in_lt, in_ltm, in_ltms, in_lts -- functions for parsing and
     checking login time periods

     System Utilities Library (libutil,	-lutil)

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

     parse_lt(const char *str);

     in_lt(const login_time_t *lt, time_t *ends);

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

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

     in_lts(const login_time_t *lt, time_t *ends);

     This set of functions may be used for parsing and checking	login and ses-
     sion times	against	a predefined list of allowed login times as used in

     The format	of allowed and disallowed session times	specified in the
     times.allow and times.deny	capability fields in a login class are com-
     prised of a prefix	which specifies	one or more 2- or 3-character 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 Sundays) and	"Wd"
     for any weekend day may be	used.

     For example, the following	time period:
     is	interpreted as Monday, Thursday	through	Saturday between the hours of
     2pm and 10pm.
     means Saturday and	Sunday,	between	the hours of 6am through 6pm, and
     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 pe-
     riod into a structure of type login_time_t.  This is defined 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 mid-
     night 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 un-
     used.  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 invalid.  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 described by the
     struct tm passed as the second parameter falls within the period de-
     scribed by	the first parameter.  A	boolean	value is returned, indicating
     whether or	not the	time specified falls within the	period.	 If the	time
     does fall within the time period, and the third parameter to the function
     is	not NULL, the time at which the	period ends relative to	the time
     passed is returned.

     The in_ltms() function is similar to in_ltm() except that the first pa-
     rameter must be a pointer to an array of login_time_t objects, which is
     up	to LC_MAXTIMES (64) elements in	length,	and terminated by an element
     with its lt_dow field set to LTM_NONE.

     The in_lt() and in_lts() functions	are equivalent to in_ltm() and
     in_ltms(),	respectively, with the second argument set to the current time
     as	returned by localtime(3).

     The parse_lt() function returns a filled in structure of type lo-
     gin_time_t	containing the parsed time period.  If a parsing 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 parameter.

     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.

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

FreeBSD	13.0		       October 20, 2008			  FreeBSD 13.0


Want to link to this manual page? Use this URL:

home | help