mirror of
git://git.code.sf.net/p/zsh/code
synced 2024-11-11 04:20:01 +01:00
29663: add $EPOCHREALTIME to zsh/datetime
This commit is contained in:
parent
92ee9324a9
commit
bbbaed2b53
13
ChangeLog
13
ChangeLog
@ -1,3 +1,14 @@
|
||||
2011-08-10 Peter Stephenson <pws@csr.com>
|
||||
|
||||
* 29663: configure.ac, Src/module.c, Src/Modules/datetime.c,
|
||||
Doc/Zsh/mod_datetime.yo: add $EPOCHREALTIME for time in
|
||||
double precision floating point.
|
||||
|
||||
2011-08-04 Peter Stephenson <pws@csr.com>
|
||||
|
||||
* 29643: Src/signals.c, Src/utils.c, Src/zle_main.c: set
|
||||
incompfunc to zero when executing hook or trap function.
|
||||
|
||||
2011-08-09 Peter Stephenson <p.w.stephenson@ntlworld.com>
|
||||
|
||||
* 29661: Doc/Zsh/redirect.yo: Improve the documentation for
|
||||
@ -15213,5 +15224,5 @@
|
||||
|
||||
*****************************************************
|
||||
* This is used by the shell to define $ZSH_PATCHLEVEL
|
||||
* $Revision: 1.5417 $
|
||||
* $Revision: 1.5418 $
|
||||
*****************************************************
|
||||
|
@ -30,9 +30,17 @@ in seconds if tt(-r) is given) to var(scalar) instead of printing it.
|
||||
)
|
||||
enditem()
|
||||
|
||||
The tt(zsh/datetime) module makes available one parameter:
|
||||
The tt(zsh/datetime) module makes available several parameters:
|
||||
|
||||
startitem()
|
||||
vindex(EPOCHREALTIME)
|
||||
item(tt(EPOCHREALTIME))(
|
||||
A floating point value representing the number of seconds since
|
||||
the epoch. The notional accuracy is to nanoseconds if the
|
||||
tt(clock_gettime) call is available and to microseconds otherwise,
|
||||
but in practice the range of double precision floating point and
|
||||
shell scheduling latencies may be significant effects.
|
||||
)
|
||||
vindex(EPOCHSECONDS)
|
||||
item(tt(EPOCHSECONDS))(
|
||||
An integer value representing the number of seconds since the
|
||||
|
@ -151,6 +151,28 @@ getcurrentsecs(UNUSED(Param pm))
|
||||
return (zlong) time(NULL);
|
||||
}
|
||||
|
||||
static double
|
||||
getcurrentrealtime(UNUSED(Param pm))
|
||||
{
|
||||
#ifdef HAVE_CLOCK_GETTIME
|
||||
struct timespec now;
|
||||
|
||||
if (clock_gettime(CLOCK_REALTIME, &now) < 0) {
|
||||
zwarn("EPOCHREALTIME: unable to retrieve time: %e", errno);
|
||||
return (double)0.0;
|
||||
}
|
||||
|
||||
return (double)now.tv_sec + (double)now.tv_nsec * 1e-9;
|
||||
#else
|
||||
struct timeval now;
|
||||
struct timezone dummy_tz;
|
||||
|
||||
gettimeofday(&now, &dummy_tz);
|
||||
|
||||
return (double)now.tv_sec + (double)now.tv_usec * 1e-6;
|
||||
#endif
|
||||
}
|
||||
|
||||
static struct builtin bintab[] = {
|
||||
BUILTIN("strftime", 0, bin_strftime, 2, 2, 0, "qrs:", NULL),
|
||||
};
|
||||
@ -158,9 +180,14 @@ static struct builtin bintab[] = {
|
||||
static const struct gsu_integer epochseconds_gsu =
|
||||
{ getcurrentsecs, NULL, stdunsetfn };
|
||||
|
||||
static const struct gsu_float epochrealtime_gsu =
|
||||
{ getcurrentrealtime, NULL, stdunsetfn };
|
||||
|
||||
static struct paramdef patab[] = {
|
||||
SPECIALPMDEF("EPOCHSECONDS", PM_INTEGER|PM_READONLY,
|
||||
&epochseconds_gsu, NULL, NULL),
|
||||
SPECIALPMDEF("EPOCHREALTIME", PM_FFLOAT|PM_READONLY,
|
||||
&epochrealtime_gsu, NULL, NULL)
|
||||
};
|
||||
|
||||
static struct features module_features = {
|
||||
|
@ -1081,6 +1081,11 @@ addparamdef(Paramdef d)
|
||||
pm->gsu.i = d->gsu ? (GsuInteger)d->gsu : &varinteger_gsu;
|
||||
break;
|
||||
|
||||
case PM_FFLOAT:
|
||||
case PM_EFLOAT:
|
||||
pm->gsu.f = d->gsu;
|
||||
break;
|
||||
|
||||
case PM_ARRAY:
|
||||
pm->gsu.a = d->gsu ? (GsuArray)d->gsu : &vararray_gsu;
|
||||
break;
|
||||
|
@ -693,6 +693,8 @@ AC_CHECK_LIB(c, printf, [LIBS="$LIBS -lc"])
|
||||
|
||||
AC_CHECK_LIB(m, pow)
|
||||
|
||||
AC_CHECK_LIB(rt, clock_gettime)
|
||||
|
||||
dnl Various features of ncurses depend on having the right header
|
||||
dnl (the system's own curses.h may well not be good enough).
|
||||
dnl So don't search for ncurses unless we found the header.
|
||||
@ -1170,7 +1172,7 @@ dnl need to integrate this function
|
||||
dnl AC_FUNC_STRFTIME
|
||||
|
||||
AC_CHECK_FUNCS(strftime strptime mktime timelocal \
|
||||
difftime gettimeofday \
|
||||
difftime gettimeofday clock_gettime \
|
||||
select poll \
|
||||
readlink faccessx fchdir ftruncate \
|
||||
fstat lstat lchown fchown fchmod \
|
||||
|
Loading…
Reference in New Issue
Block a user