/* age.c - Determine the age of a timestamp

   (c) Dennis Lovelady   http://www.lovelady.com/mailform/
       This program may be freely distributed, but must contain the copyright
       information.

   July, 2000 - Squashed bug associated with date change and time zones
                corrected.  Thanks to Bob Vance for pointing this out.


   usage:  age Mth Day Year Hour Minute Second
               Mth is a value between 1 and 12
               Day is a value between 1 and 31
               Year is a 2-digit or 4-digit year
               Hour is a value between 0 and 23
               Minute is a value between 0 and 59
               Second is a value between 0 and 59
*/

#include <time.h>
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <unistd.h>

char *Copyright="(C) 1999, Dennis Lovelady" ;

void Usage(void *pgm)
    {
    fprintf(stderr, "Usage: %s Mth Day Year Hour Minute Second\n", pgm) ;
    }

int main(int argc, char *argv[]) 
    {
    time_t    t1, t2;
    struct tm date;
    double    diff;

    if (argc != 7)
        {
        Usage(argv[0]) ;
        exit(1) ;
        }
    time(&t1);				/* Current time */
    memcpy(&date, localtime(&t1), sizeof(date)) ;	/* To struct */
    date.tm_mon = atoi(argv[1]) - 1;	/* Set month */
    date.tm_mday= atoi(argv[2]);		/* Set day */
    date.tm_year= atoi(argv[3]);		/* Set year */
    date.tm_hour= atoi(argv[4]);		/* Set hour */
    date.tm_min = atoi(argv[5]);		/* Set minute */
    date.tm_sec = atoi(argv[6]);		/* Set second */

    if (date.tm_year > 1900)			/* 4-digit date? */
        date.tm_year -= 1900 ;		/* yes, adjust */
    else if (date.tm_year < 50)		/* 2000-2049 */
        date.tm_year += 100;
    date.tm_isdst = -1;                         /* Figure out if DST */
    t2 = mktime(&date) ;			/* From struct to time_t */
    diff = difftime(t2, t1);			/* Difference */

    printf("%d\n", (int) diff) ;		/* Print difference */
    return 0 ;
 
    }
