diff options
Diffstat (limited to 'contrib/sendmail/src/convtime.c')
-rw-r--r-- | contrib/sendmail/src/convtime.c | 202 |
1 files changed, 0 insertions, 202 deletions
diff --git a/contrib/sendmail/src/convtime.c b/contrib/sendmail/src/convtime.c deleted file mode 100644 index 36edc1a..0000000 --- a/contrib/sendmail/src/convtime.c +++ /dev/null @@ -1,202 +0,0 @@ -/* - * Copyright (c) 1998-2001 Sendmail, Inc. and its suppliers. - * All rights reserved. - * Copyright (c) 1983, 1995-1997 Eric P. Allman. All rights reserved. - * Copyright (c) 1988, 1993 - * The Regents of the University of California. All rights reserved. - * - * By using this file, you agree to the terms and conditions set - * forth in the LICENSE file which can be found at the top level of - * the sendmail distribution. - * - */ - -#include <sendmail.h> - -SM_RCSID("@(#)$Id: convtime.c,v 8.39 2001/09/11 04:05:13 gshapiro Exp $") - -/* -** CONVTIME -- convert time -** -** Takes a time as an ascii string with a trailing character -** giving units: -** s -- seconds -** m -- minutes -** h -- hours -** d -- days (default) -** w -- weeks -** For example, "3d12h" is three and a half days. -** -** Parameters: -** p -- pointer to ascii time. -** units -- default units if none specified. -** -** Returns: -** time in seconds. -** -** Side Effects: -** none. -*/ - -time_t -convtime(p, units) - char *p; - int units; -{ - register time_t t, r; - register char c; - bool pos = true; - - r = 0; - if (sm_strcasecmp(p, "now") == 0) - return NOW; - if (*p == '-') - { - pos = false; - ++p; - } - while (*p != '\0') - { - t = 0; - while ((c = *p++) != '\0' && isascii(c) && isdigit(c)) - t = t * 10 + (c - '0'); - if (c == '\0') - { - c = units; - p--; - } - else if (strchr("wdhms", c) == NULL) - { - usrerr("Invalid time unit `%c'", c); - c = units; - } - switch (c) - { - case 'w': /* weeks */ - t *= 7; - /* FALLTHROUGH */ - - case 'd': /* days */ - /* FALLTHROUGH */ - default: - t *= 24; - /* FALLTHROUGH */ - - case 'h': /* hours */ - t *= 60; - /* FALLTHROUGH */ - - case 'm': /* minutes */ - t *= 60; - /* FALLTHROUGH */ - - case 's': /* seconds */ - break; - } - r += t; - } - - return pos ? r : -r; -} -/* -** PINTVL -- produce printable version of a time interval -** -** Parameters: -** intvl -- the interval to be converted -** brief -- if true, print this in an extremely compact form -** (basically used for logging). -** -** Returns: -** A pointer to a string version of intvl suitable for -** printing or framing. -** -** Side Effects: -** none. -** -** Warning: -** The string returned is in a static buffer. -*/ - -#define PLURAL(n) ((n) == 1 ? "" : "s") - -char * -pintvl(intvl, brief) - time_t intvl; - bool brief; -{ - static char buf[256]; - register char *p; - int wk, dy, hr, mi, se; - - if (intvl == 0 && !brief) - return "zero seconds"; - if (intvl == NOW) - return "too long"; - - /* decode the interval into weeks, days, hours, minutes, seconds */ - se = intvl % 60; - intvl /= 60; - mi = intvl % 60; - intvl /= 60; - hr = intvl % 24; - intvl /= 24; - if (brief) - { - dy = intvl; - wk = 0; - } - else - { - dy = intvl % 7; - intvl /= 7; - wk = intvl; - } - - /* now turn it into a sexy form */ - p = buf; - if (brief) - { - if (dy > 0) - { - (void) sm_snprintf(p, SPACELEFT(buf, p), "%d+", dy); - p += strlen(p); - } - (void) sm_snprintf(p, SPACELEFT(buf, p), "%02d:%02d:%02d", - hr, mi, se); - return buf; - } - - /* use the verbose form */ - if (wk > 0) - { - (void) sm_snprintf(p, SPACELEFT(buf, p), ", %d week%s", wk, - PLURAL(wk)); - p += strlen(p); - } - if (dy > 0) - { - (void) sm_snprintf(p, SPACELEFT(buf, p), ", %d day%s", dy, - PLURAL(dy)); - p += strlen(p); - } - if (hr > 0) - { - (void) sm_snprintf(p, SPACELEFT(buf, p), ", %d hour%s", hr, - PLURAL(hr)); - p += strlen(p); - } - if (mi > 0) - { - (void) sm_snprintf(p, SPACELEFT(buf, p), ", %d minute%s", mi, - PLURAL(mi)); - p += strlen(p); - } - if (se > 0) - { - (void) sm_snprintf(p, SPACELEFT(buf, p), ", %d second%s", se, - PLURAL(se)); - p += strlen(p); - } - - return (buf + 2); -} |