diff options
author | Richard Levitte <levitte@openssl.org> | 2001-05-16 08:44:09 +0000 |
---|---|---|
committer | Richard Levitte <levitte@openssl.org> | 2001-05-16 08:44:09 +0000 |
commit | b8e35bd66e4d3d94c10091f6773afc4314ffcc80 (patch) | |
tree | c3b6c21b1aea7b90058cd547cadfe1843aeec4db /crypto/asn1 | |
parent | e8734731d3b39cf3f7fa6acb055d22e0bdc2a7ff (diff) | |
download | openssl-b8e35bd66e4d3d94c10091f6773afc4314ffcc80.tar.gz |
New internal function OPENSSL_gmtime, which is intended to do the same
as gmtime_r() on the systems where that is defined.
Diffstat (limited to 'crypto/asn1')
-rw-r--r-- | crypto/asn1/a_gentm.c | 13 | ||||
-rw-r--r-- | crypto/asn1/a_time.c | 10 | ||||
-rw-r--r-- | crypto/asn1/a_utctm.c | 60 |
3 files changed, 14 insertions, 69 deletions
diff --git a/crypto/asn1/a_gentm.c b/crypto/asn1/a_gentm.c index 185d169600..ef95003510 100644 --- a/crypto/asn1/a_gentm.c +++ b/crypto/asn1/a_gentm.c @@ -61,6 +61,7 @@ #include <stdio.h> #include <time.h> #include "cryptlib.h" +#include "o_time.h" #include <openssl/asn1.h> #if 0 @@ -193,21 +194,17 @@ ASN1_GENERALIZEDTIME *ASN1_GENERALIZEDTIME_set(ASN1_GENERALIZEDTIME *s, { char *p; struct tm *ts; -#if defined(OPENSSL_THREADS) && !defined(OPENSSL_SYS_WIN32) struct tm data; -#endif if (s == NULL) s=M_ASN1_GENERALIZEDTIME_new(); if (s == NULL) return(NULL); -#if defined(OPENSSL_THREADS) && !defined(OPENSSL_SYS_WIN32) - gmtime_r(&t,&data); /* should return &data, but doesn't on some systems, so we don't even look at the return value */ - ts=&data; -#else - ts=gmtime(&t); -#endif + ts=OPENSSL_gmtime(&t, &data); + if (ts == NULL) + return(NULL); + p=(char *)s->data; if ((p == NULL) || (s->length < 16)) { diff --git a/crypto/asn1/a_time.c b/crypto/asn1/a_time.c index 266614d14f..27ddd30899 100644 --- a/crypto/asn1/a_time.c +++ b/crypto/asn1/a_time.c @@ -64,6 +64,7 @@ #include <stdio.h> #include <time.h> #include "cryptlib.h" +#include "o_time.h" #include <openssl/asn1t.h> IMPLEMENT_ASN1_MSTRING(ASN1_TIME, B_ASN1_TIME) @@ -100,14 +101,11 @@ int i2d_ASN1_TIME(ASN1_TIME *a, unsigned char **pp) ASN1_TIME *ASN1_TIME_set(ASN1_TIME *s, time_t t) { struct tm *ts; -#if defined(OPENSSL_THREADS) && !defined(OPENSSL_SYS_WIN32) && !defined(__CYGWIN32__) struct tm data; - gmtime_r(&t,&data); - ts=&data; /* should return &data, but doesn't on some systems, so we don't even look at the return value */ -#else - ts=gmtime(&t); -#endif + ts=OPENSSL_gmtime(&t,&data); + if (ts == NULL) + return NULL; if((ts->tm_year >= 50) && (ts->tm_year < 150)) return ASN1_UTCTIME_set(s, t); return ASN1_GENERALIZEDTIME_set(s,t); diff --git a/crypto/asn1/a_utctm.c b/crypto/asn1/a_utctm.c index 39b7910972..ed2d827db2 100644 --- a/crypto/asn1/a_utctm.c +++ b/crypto/asn1/a_utctm.c @@ -59,12 +59,8 @@ #include <stdio.h> #include <time.h> #include "cryptlib.h" +#include "o_time.h" #include <openssl/asn1.h> -#ifdef OPENSSL_SYS_VMS -#include <descrip.h> -#include <lnmdef.h> -#include <starlet.h> -#endif #if 0 int i2d_ASN1_UTCTIME(ASN1_UTCTIME *a, unsigned char **pp) @@ -191,59 +187,17 @@ ASN1_UTCTIME *ASN1_UTCTIME_set(ASN1_UTCTIME *s, time_t t) { char *p; struct tm *ts; -#if defined(OPENSSL_THREADS) && !defined(OPENSSL_SYS_WIN32) && !defined(__CYGWIN32__) - struct tm data; -#endif if (s == NULL) s=M_ASN1_UTCTIME_new(); if (s == NULL) return(NULL); -#if defined(OPENSSL_THREADS) && !defined(OPENSSL_SYS_WIN32) && !defined(__CYGWIN32__) - gmtime_r(&t,&data); /* should return &data, but doesn't on some systems, so we don't even look at the return value */ - ts=&data; -#else - ts=gmtime(&t); -#endif -#ifdef OPENSSL_SYS_VMS + ts=OPENSSL_gmtime(&t, &data); if (ts == NULL) - { - static $DESCRIPTOR(tabnam,"LNM$DCL_LOGICAL"); - static $DESCRIPTOR(lognam,"SYS$TIMEZONE_DIFFERENTIAL"); - char result[256]; - unsigned int reslen = 0; - struct { - short buflen; - short code; - void *bufaddr; - unsigned int *reslen; - } itemlist[] = { - { 0, LNM$_STRING, 0, 0 }, - { 0, 0, 0, 0 }, - }; - int status; - - /* Get the value for SYS$TIMEZONE_DIFFERENTIAL */ - itemlist[0].buflen = sizeof(result); - itemlist[0].bufaddr = result; - itemlist[0].reslen = &reslen; - status = sys$trnlnm(0, &tabnam, &lognam, 0, itemlist); - if (!(status & 1)) - return NULL; - result[reslen] = '\0'; - - /* Get the numerical value of the equivalence string */ - status = atoi(result); - - /* and use it to move time to GMT */ - t -= status; - - /* then convert the result to the time structure */ - ts=(struct tm *)localtime(&t); - } -#endif + return(NULL); + p=(char *)s->data; if ((p == NULL) || (s->length < 14)) { @@ -284,11 +238,7 @@ int ASN1_UTCTIME_cmp_time_t(const ASN1_UTCTIME *s, time_t t) t -= offset*60; /* FIXME: may overflow in extreme cases */ -#if defined(OPENSSL_THREADS) && !defined(OPENSSL_SYS_WIN32) && !defined(__CYGWIN32__) - { struct tm data; gmtime_r(&t, &data); tm = &data; } -#else - tm = gmtime(&t); -#endif + { struct tm data; tm = OPENSSL_gmtime(&t, &data); } #define return_cmp(a,b) if ((a)<(b)) return -1; else if ((a)>(b)) return 1 year = g2(s->data); |