* Copyright (c) 1983 Eric P. Allman
* Copyright (c) 1988, 1993
* The Regents of the University of California. All rights reserved.
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* This product includes software developed by the University of
* California, Berkeley and its contributors.
* 4. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
static char sccsid
[] = "@(#)convtime.c 8.1 (Berkeley) 6/7/93";
** 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
));