# 2.11BSD#431 - /usr/src/new/notes/src/datein.c

##### Functions

    parsetime         X

       1: #include "parms.h"
       2: #include "structs.h"
       3:
       4: #ifdef  RCSIDENT
       5: static char rcsid[] = "$Header: datein.c,v 1.7.0.1 85/07/31 14:12:38 notes Rel $";
       6: #endif	RCSIDENT
       7:
       8: /*
       9:  *	getdate - parses the date handed as a string. Format is assumed
      10:  *	to be that of CTIME(III).
      11:  *		Ray Essick		Feb 1982
      12:  *
      13:  *	Augmented to understand about lots of different formats -
      14:  *	and make use of the getdate(III) routine to parse an
      15:  *	almost arbitrary date.
      16:  *
      17:  *	If the routine is unable to parse a time, the current time
      18:  *	is returned.  If the parsed time is in the future, the
      19:  *	current time is returned.
      20:  *
      21:  *	Returns:		0	succesfully parsed past date
      22:  *				-1	unsucessful parse
      23:  *					returned current time
      24:  *				-2	unsuccessful parse
      25:  *					returned a future time
      26:  *
      27:  */
      28:
      29: extern char *mnames[];
      30:
      31: parsetime (line, date)
      32: char   *line;
      33: struct when_f  *date;
      34: {
      35:     char    month[100];
      36:     char    weekday[100];               /* day of week */
      37:     char    zonename[100];              /* time zone */
      38:     int     day,
      39:             hour,
      40:             min,
      41:             sec,
      42:             year;
      43:     int     count;
      44:     long    timenow;                    /* current time */
      45:     long    xtime;                  /* parsed time */
      46:     struct when_f   now;                /* in structure */
      47:
      48:
      49:     gettime (date);                 /* load current */
      50:     gettime (&now);                 /* load current */
      51:     time (&timenow);                    /* seconds GMT */
      52:
      53: #ifdef  notdef
      54:     /*
      55:      * apparently there are other formats close enough to ctime
      56:      * to fool the sscanf() call into thinking it has succeeded
      57:      * when in fact it hasn't.  So we just fall directly
      58:      * into the getdate() call.
      59:      */
      60:
      61:     /*
      62:      *	First, let's see if the string is CTIME(III) format.
      63:      */
      64:     if (sscanf (line, "%s %s %hd %hd:%hd:%hd %hd", weekday, month,
      65:         &day, &hour, &min, &sec, &year) == 7)
      66:     {                           /* yay! */
      67:
      68:     for (count = 12; count > 0; count--)
      69:         if (strcmp (mnames[count], month) == 0)
      70:         break;
      71:     date -> w_month = count;            /* place what we got */
      72:     date -> w_day = day;
      73:     date -> w_hours = hour;
      74:     date -> w_mins = min;
      75:     date -> w_year = year;
      76:     date -> w_gmttime = 0;
      77:     /*
      78: 	 *	We should check that it isn't in the future here
      79: 	 */
      80:     return 0;
      81:     }
      82:
      83: #endif
      84:
      85:     /*
      86:      *	Ok, now it's time to call in the big artillery -- GETDATE
      87:      */
      88:
      89:     xtime = getdate (line, (struct timeb *) NULL);  /* parse */
      90:     if (xtime < 0)                  /* success? */
      91:     return (-1);                    /* failure */
      92:     maketime (date, (long) xtime);          /* encode */
      93:     if (xtime > timenow)                /* future shock */
      94:     return (-2);
      95:     return (0);
      96:
      97: }

#### Defined functions

parsetime defined in line 31; used 12 times

- in /usr/src/new/notes/src/gdate.c line 56
- in /usr/src/new/notes/src/loadnf.c line 129, 176-182(3)
- in /usr/src/new/notes/src/main.c line 142
- in /usr/src/new/notes/src/newsinput.c line 106, 420, 493
- in /usr/src/new/notes/src/newsoutput.c line 159
- in /usr/src/new/notes/src/nftimestamp.c line 46
- in /usr/src/new/notes/src/nfxmit.c line 154

#### Defined variables

rcsid defined in line 5; never used

Last modified: 1985-07-31 Generated: 2016-12-26 | Generated by src2html V0.67 page hit count: 750 |