Skip to content
Snippets Groups Projects
Commit a103bf9b authored by Kurt Zeilenga's avatar Kurt Zeilenga
Browse files

Import date parser from libldap

parent 29b0ed18
No related branches found
No related tags found
No related merge requests found
......@@ -544,20 +544,33 @@ time2text( char *ldtimestr, int dateonly )
struct tm t;
char *p, *timestr, zone, *fmterr = "badly formatted time";
time_t gmttime;
char timebuf[32];
int ndigits;
memset( (char *)&t, 0, sizeof( struct tm ));
if ( strlen( ldtimestr ) < 13 ) {
return( fmterr );
if (strlen( ldtimestr ) < 12 ) {
return( fmterr );
}
for ( ndigits=0; isdigit((unsigned char) ldtimestr[ndigits]); ndigits++) {
; /* EMPTY */
}
for ( p = ldtimestr; p - ldtimestr < 12; ++p ) {
if ( !isdigit( (unsigned char) *p )) {
if ( ndigits != 12 && ndigits != 14) {
return( fmterr );
}
}
memset( (char *)&t, 0, sizeof( struct tm ));
p = ldtimestr;
if( ndigits == 14) {
/* came with a century */
/* POSIX says tm_year should be year - 1900 */
t.tm_year = 100 * GET2BYTENUM( p ) - 1900;
p += 2;
}
t.tm_year = GET2BYTENUM( p ); p += 2;
t.tm_mon = GET2BYTENUM( p ) - 1; p += 2;
t.tm_mday = GET2BYTENUM( p ); p += 2;
t.tm_hour = GET2BYTENUM( p ); p += 2;
......@@ -576,7 +589,6 @@ time2text( char *ldtimestr, int dateonly )
SAFEMEMCPY( timestr + 11, timestr + 20, strlen( timestr + 20 ) + 1 );
}
Free ( ldtimestr );
return( strdup( timestr ) );
}
......@@ -596,7 +608,28 @@ int dmsize[] = {
#define dysize(y) \
(((y) % 4) ? 365 : (((y) % 100) ? 366 : (((y) % 400) ? 365 : 366)))
#define YEAR(y) ((y) >= 100 ? (y) : (y) + 1900)
/*
* Y2K YEAR
*/
/* per POSIX tm_year should be offset by 1900 */
#define YEAR_POSIX(y) ((y) + 1900)
/*
* year is < 1900, year is offset by 1900
*/
#define YEAR_CAREFUL(y) ((y) < 1900 ? (y) + 1900 : (y))
/*
** if year is < 1990 and < 70 must be offset by 2000 as Unix epoch
** started in 1970. if year is < 1990 but >= 70, offset by 1900.
** if year is >= 1900, it must be the real year.
*/
#define YEAR_PEDANTIC(y) ((y) < 1900 \
? ((y) < 70 ? (y) + 2000 ? (y) + 1900) \
: (y))
#define YEAR(y) YEAR_CAREFUL(y)
/* */
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment