|
|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T t
Length: 2259 (0x8d3)
Types: TextFile
Names: »time.c«
└─⟦2d1937cfd⟧ Bits:30007241 EUUGD22: P.P 5.0
└─⟦35176feda⟧ »EurOpenD22/isode/isode-6.tar.Z«
└─⟦de7628f85⟧
└─⟦this⟧ »isode-6.0/dsap/common/time.c«
/* time.c - */
#ifndef lint
static char *rcsid = "$Header: /f/osi/dsap/common/RCS/time.c,v 7.0 89/11/23 21:44:38 mrose Rel $";
#endif
/*
* $Header: /f/osi/dsap/common/RCS/time.c,v 7.0 89/11/23 21:44:38 mrose Rel $
*
*
* $Log: time.c,v $
* Revision 7.0 89/11/23 21:44:38 mrose
* Release 6.0
*
*/
/*
* NOTICE
*
* Acquisition, use, and distribution of this module and related
* materials are subject to the restrictions of a license agreement.
* Consult the Preface in the User's Manual for the full terms of
* this agreement.
*
*/
/* SYNTAX
time ::= 'yymmddhhmmssz'
where yy = year
mm = month
dd = day
hh = hours
mm = minutes
ss = seconds
z = timezone
EXAMPLE
890602093221Z -> 09:32:21 GMT, on June 2nd 1989.
*/
#include "quipu/util.h"
#include "quipu/attr.h"
#include "psap.h"
strprint ();
sfree ();
pstrcmp();
static UTC qstr2utct (s, len)
char *s;
int len;
{
UTC ut;
if (len > 14
&& strncmp (s, "1989", 4) == 0
&& (ut = str2utct (s + 2, len - 2)))
return ut;
return str2utct (s, len);
}
#define str2utct qstr2utct
static PE timeenc (x)
char *x;
{
PE ret_pe = NULLPE;
(void) build_UNIV_UTCTime (&ret_pe,0,0,x,NULL);
return (ret_pe);
}
static char * timedec (pe)
PE pe;
{
char * x;
if (parse_UNIV_UTCTime (pe,0,0,&x,NULL) == NOTOK)
return (NULLCP);
return (x);
}
utcprint (ps,time,format)
PS ps;
char *time;
int format;
{
UTC ut;
if (format == READOUT && (ut = str2utct (time, strlen (time)))) {
long mtime;
mtime = gtime (ut2tm (ut));
ps_printf (ps, "%-24.24s", ctime (&mtime));
}
else
ps_printf (ps, "%s", time);
}
static utccmp (a, b)
char *a, *b;
{
long a_time,
mdiff;
UTC ut;
if ((ut = str2utct (a, strlen (a))) == NULL)
return pstrcmp (a, b);
a_time = gtime (ut2tm (ut));
if ((ut = str2utct (b, strlen (b))) == NULL)
return pstrcmp (a, b);
return ((mdiff = a_time - gtime (ut2tm (ut))) == 0L ? 0
: mdiff > 0L ? 1 : -1);
}
time_syntax ()
{
(void) add_attribute_syntax ("UTCTime",
(IFP) timeenc, (IFP) timedec,
(IFP) strdup, utcprint,
(IFP) strdup, utccmp,
sfree, NULLCP,
NULLIFP, FALSE);
}