3bae68df7f44ecc079670a55641d56c29f4caaa7
* Copyright (c) 1983 Eric P. Allman
* Copyright (c) 1988, 1993
* The Regents of the University of California. All rights reserved.
* %sccs.include.redist.c%
static char sccsid
[] = "@(#)convtime.c 8.1 (Berkeley) %G%";
** CONVTIME -- convert time
** Takes a time as an ascii string with a trailing character
** For example, "3d12h" is three and a half days.
** p -- pointer to ascii time.
** units -- default units if none specified.
while ((c
= *p
++) != '\0' && isascii(c
) && isdigit(c
))
** PINTVL -- produce printable version of a time interval
** intvl -- the interval to be converted
** brief -- if TRUE, print this in an extremely compact form
** (basically used for logging).
** A pointer to a string version of intvl suitable for
** The string returned is in a static buffer.
# define PLURAL(n) ((n) == 1 ? "" : "s")
if (intvl
== 0 && !brief
)
/* decode the interval into weeks, days, hours, minutes, seconds */
/* now turn it into a sexy form */
(void) sprintf(p
, "%d+", dy
);
(void) sprintf(p
, "%02d:%02d:%02d", hr
, mi
, se
);
/* use the verbose form */
(void) sprintf(p
, ", %d week%s", wk
, PLURAL(wk
));
(void) sprintf(p
, ", %d day%s", dy
, PLURAL(dy
));
(void) sprintf(p
, ", %d hour%s", hr
, PLURAL(hr
));
(void) sprintf(p
, ", %d minute%s", mi
, PLURAL(mi
));
(void) sprintf(p
, ", %d second%s", se
, PLURAL(se
));