From 4337fc0ad4a2916138dd71961e884a2e82a815c6 Mon Sep 17 00:00:00 2001 From: Theodore Tso Date: Wed, 2 Oct 1991 17:23:55 +0000 Subject: [PATCH] Integrated Bill Sommerfeld's kinit lifetime parsing changes git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@2192 dc483132-0cff-0310-8789-dd5450dbe970 --- src/clients/kinit/kinit.c | 64 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 63 insertions(+), 1 deletion(-) diff --git a/src/clients/kinit/kinit.c b/src/clients/kinit/kinit.c index db7d30c18..024d42abd 100644 --- a/src/clients/kinit/kinit.c +++ b/src/clients/kinit/kinit.c @@ -50,7 +50,7 @@ krb5_parse_lifetime (time, len) char *time; long *len; { - *len = atoi (time) * 60 * 60; /* XXX stub version */ + *len = convtime(time); return 0; } @@ -196,3 +196,65 @@ main(argc, argv) } exit(0); } + +/* + * this next function was lifted from the source to sendmail, which is: + * + * Copyright (c) 1983 Eric P. Allman + * Copyright (c) 1988 Regents of the University of California. + * All rights reserved. + * + * Redistribution and use in source and binary forms are permitted provided + * that: (1) source distributions retain this entire copyright notice and + * comment, and (2) distributions including binaries display the following + * acknowledgement: ``This product includes software developed by the + * University of California, Berkeley and its contributors'' in the + * documentation or other materials provided with the distribution and in + * all advertising materials mentioning features or use of this software. + * 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 ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + */ + +time_t +convtime(p) + char *p; +{ + register time_t t, r; + register char c; + + r = 0; + while (*p != '\0') + { + t = 0; + while (isdigit(c = *p++)) + t = t * 10 + (c - '0'); + if (c == '\0') + p--; + switch (c) + { + case 'w': /* weeks */ + t *= 7; + + case 'd': /* days */ + t *= 24; + + case 'h': /* hours */ + default: + t *= 60; + + case 'm': /* minutes */ + t *= 60; + + case 's': /* seconds */ + break; + } + r += t; + } + + return (r); +} + -- 2.26.2