head	1.3;
access;
symbols
	RELEASE_5_2_1:1.2
	RELEASE_5_2_0:1.2
	RELEASE_4_9_0:1.2
	RELEASE_5_1_0:1.2
	RELEASE_4_8_0:1.2
	RELEASE_5_0_0:1.2
	RELEASE_4_7_0:1.2
	RELEASE_4_6_2:1.2
	RELEASE_4_6_1:1.2
	RELEASE_4_6_0:1.2
	RELEASE_5_0_DP1:1.2
	RELEASE_4_5_0:1.2
	RELEASE_4_4_0:1.2
	RELEASE_4_3_0:1.2
	RELEASE_4_2_0:1.2
	RELEASE_4_1_1:1.2
	RELEASE_4_1_0:1.2
	RELEASE_3_5_0:1.1;
locks; strict;
comment	@# @;


1.3
date	2004.04.19.00.55.12;	author eik;	state dead;
branches;
next	1.2;

1.2
date	2000.07.19.08.14.09;	author alex;	state Exp;
branches;
next	1.1;

1.1
date	2000.04.01.08.27.45;	author mharo;	state Exp;
branches;
next	;


desc
@@


1.3
log
@long overdue removal of OpenLDAP 1.2 and dependent ports
@
text
@*** util.c.orig	Thu Dec  2 18:07:10 1999
--- util.c	Thu Jan 27 11:41:36 2000
***************
*** 15,20 ****
--- 15,22 ----
   * is provided ``as is'' without express or implied warranty.
   */
  
+ #include <unistd.h>
+ #include <gnuregex.h>
  #include "web500gw.h"
  
  /* msg_?printf: formats (and prints out) a string contained in message file */
***************
*** 438,443 ****
--- 440,449 ----
          mday++;
      }
      year = YEAR (tm -> tm_year);
+     /* note that 2-digit-year LDAP timestamp will have "00" for "2000" */
+     /* above year transformation will return "1900" for "00", 2-digit "2000" */
+     /* the following assumes no real dates < 1970 */
+     if (year < 1970) year += 100; /* turn "1900" into "2000" */
      result = 0L;
      for (i = 1970; i < year; i++)
          result += dysize (i);
***************
*** 465,470 ****
--- 471,477 ----
      char        mydate[256];
      struct tm   tm, *ntm;
      time_t      t;
+     int		ds_off; /* date string offset */
  
  #ifdef WEB500GW_DEBUG
      Web500gw_debug(WEB500GW_DEBUG_UTIL, "  format_date (%s, \"%s\")\n",
***************
*** 473,487 ****
      if (!s)
          return(NULL);
  
!     /* s should point to: YYMMDDHHmmSSZ */
      /* ... well 2 digits for year :-( */
! 
!     tm.tm_year = 10*(s[0] - '0') + (s[1] - '0');
!     tm.tm_mon  = 10*(s[2] - '0') + (s[3] - '0') - 1;
!     tm.tm_mday = 10*(s[4] - '0') + (s[5] - '0');
!     tm.tm_hour = 10*(s[6] - '0') + (s[7] - '0');
!     tm.tm_min  = 10*(s[8] - '0') + (s[9] - '0');
!     tm.tm_sec  = 10*(s[10] - '0') + (s[11] - '0');
      tm.tm_isdst = 0;
  
  #if ! (defined(__hpux) || defined(_AIX) || defined(sunos5) || defined(linux) || defined(unixware7))
--- 480,498 ----
      if (!s)
          return(NULL);
  
!     /* s should point to: YYMMDDHHmmSSZ (13 chars) */
      /* ... well 2 digits for year :-( */
!     /* or: YYYYMMDDHHmmSSZ (15 chars; 4-digit years) */
!     if (strlen(s) == 13) {
!         tm.tm_year = 10*(s[0] - '0') + (s[1] - '0'); ds_off = 2;}
!     else {
!         tm.tm_year = 1000*(s[0] - '0') + 100*(s[1] - '0') +
!                        10*(s[2] - '0') +     (s[3] - '0'); ds_off = 4;}
!     tm.tm_mon  = 10*(s[ds_off] - '0')    + (s[ds_off+1] - '0') - 1;
!     tm.tm_mday = 10*(s[ds_off+2] - '0')  + (s[ds_off+3] - '0');
!     tm.tm_hour = 10*(s[ds_off+4] - '0')  + (s[ds_off+5] - '0');
!     tm.tm_min  = 10*(s[ds_off+6] - '0')  + (s[ds_off+7] - '0');
!     tm.tm_sec  = 10*(s[ds_off+8] - '0')  + (s[ds_off+9] - '0');
      tm.tm_isdst = 0;
  
  #if ! (defined(__hpux) || defined(_AIX) || defined(sunos5) || defined(linux) || defined(unixware7))
***************
*** 524,529 ****
--- 535,541 ----
      char month_name[4];
      int year = 0, month = 0, day = 0, hour = 0, min = 0, sec = 0;
      int i = 0;
+     int ds_off; /* date stamp offset */
  
  #ifdef WEB500GW_DEBUG
      Web500gw_debug(WEB500GW_DEBUG_UTIL, "  cmp_dates (%s, %s)\n",
***************
*** 552,560 ****
                          /* RFC 850: dd-Mmm-yy hh:mm:ss */
          sscanf(http_date, "%d-%3s-%d %d:%d:%d",
              &day, month_name, &year, &hour, &min, &sec);
!         if (year < 70)
!             year += 100;
!         year += 1900;
      } else {         /* normal HTTP date (RFC 822/1123): dd Mmm yyyy hh:mm:ss */
          sscanf(http_date, "%d %s %d %d:%d:%d", 
              &day, month_name, &year, &hour, &min, &sec);
--- 564,572 ----
                          /* RFC 850: dd-Mmm-yy hh:mm:ss */
          sscanf(http_date, "%d-%3s-%d %d:%d:%d",
              &day, month_name, &year, &hour, &min, &sec);
! 	/* convert 2-digit year into 4-digit year based on Unix beg date */
!       if (year < 70)   year += 100;
!       if (year < 1900) year += 1900;
      } else {         /* normal HTTP date (RFC 822/1123): dd Mmm yyyy hh:mm:ss */
          sscanf(http_date, "%d %s %d %d:%d:%d", 
              &day, month_name, &year, &hour, &min, &sec);
***************
*** 568,584 ****
          day, month, year, 0);
      Web500gw_debug(WEB500GW_DEBUG_UTIL, "%d:%d:%d\n", hour, min, sec, 0);
  #endif
!     if ((i = ((10*(ldap_date[0] - '0') + (ldap_date[1] - '0') + 1900) - year)))
!         return i > 0;
!     if ((i = ((10*(ldap_date[2] - '0') + (ldap_date[3] - '0')) - month)))
          return i > 0;
!     if ((i = ((10*(ldap_date[4] - '0') + (ldap_date[5] - '0')) - day)))
          return i > 0;
!     if ((i = ((10*(ldap_date[6] - '0') + (ldap_date[7] - '0')) - hour)))
          return i > 0;
!     if ((i = ((10*(ldap_date[8] - '0') + (ldap_date[9] - '0')) - min)))
          return i > 0;
!     if ((i = ((10*(ldap_date[10] - '0') + (ldap_date[11] - '0')) - sec)))
          return i > 0;
  
      /* gone so far - dates are identical */
--- 580,608 ----
          day, month, year, 0);
      Web500gw_debug(WEB500GW_DEBUG_UTIL, "%d:%d:%d\n", hour, min, sec, 0);
  #endif
!     /* ldap_date should point to: YYMMDDHHmmSSZ (13 chars) */
!     /* ... well 2 digits for year :-( */
!     /* or: YYYYMMDDHHmmSSZ (15 chars; 4-digit years) */
!     if (strlen(ldap_date) == 13) { 
!       ds_off=2;
!       if ((i = ((10*(ldap_date[0] - '0') +
! 	 (ldap_date[1] - '0') + 1900) - year))) return i > 0;}
!     else {
!       ds_off=4;
!       if ((i = ((1000*(ldap_date[0] - '0') +
!                   100*(ldap_date[1] - '0') +
!                    10*(ldap_date[2] - '0') +
!                       (ldap_date[3] - '0')) - year ))) return i > 0;}
! 
!     if ((i = ((10*(ldap_date[ds_off] - '0') + (ldap_date[ds_off+1] - '0')) - month)))
          return i > 0;
!     if ((i = ((10*(ldap_date[ds_off+2] - '0') + (ldap_date[ds_off+3] - '0')) - day)))
          return i > 0;
!     if ((i = ((10*(ldap_date[ds_off+4] - '0') + (ldap_date[ds_off+5] - '0')) - hour)))
          return i > 0;
!     if ((i = ((10*(ldap_date[ds_off+6] - '0') + (ldap_date[ds_off+7] - '0')) - min)))
          return i > 0;
!     if ((i = ((10*(ldap_date[ds_off+8] - '0') + (ldap_date[ds_off+9] - '0')) - sec)))
          return i > 0;
  
      /* gone so far - dates are identical */
@


1.2
log
@Fix patching for 2-digit years.

PR:		19315
Submitted by:	Karl Dietz <Karl.Dietz@@frankfurt.netsurf.de>
@
text
@@


1.1
log
@fix: web500gw can't always parse dates (Y2K)

PR:		16736
Submitted by:	maintainer
@
text
@d2 1
a2 1
--- util.c	Mon Jan 17 23:23:51 2000
d4 2
a5 2
*** 14,20 ****
   * software without specific prior written permission. This software
a7 2
! 
  #include "web500gw.h"
d9 2
a10 7
  /* msg_?printf: formats (and prints out) a string contained in message file */
--- 14,21 ----
   * software without specific prior written permission. This software
   * is provided ``as is'' without express or implied warranty.
   */
! #include <unistd.h>
! #include <gnuregex.h>
d15 2
a16 2
*** 437,443 ****
          hour = 0;
d19 5
a23 9
!     year = YEAR (tm -> tm_year);
      result = 0L;
      for (i = 1970; i < year; i++)
          result += dysize (i);
--- 438,444 ----
          hour = 0;
          mday++;
      }
! 		year = (tm -> tm_year);
d28 6
a33 1
*** 454,460 ****
d35 2
a36 14
  
  /* returns a printable date string from LDAP's date format:
!  *    s       should point to: YYMMDDHHmmSSZ
   *    format  format string for strftime(3)
   */
  char *
--- 455,461 ----
  
  
  /* returns a printable date string from LDAP's date format:
!  *    s       should point to: YYYYMMDDHHmmSSZ
   *    format  format string for strftime(3)
   */
  char *
d43 1
a43 1
!     /* ... well 2 digits for year :-( */
d54 1
a54 1
--- 474,487 ----
d58 13
a70 8
!     /* s should point to: YYYYMMDDHHmmSSZ for OpenLDAP */
! 		/* this change will probably cause problems for UMich LDAP-3.3 use */
!     tm.tm_year = 1000*(s[0] - '0') + 100*(s[1] - '0') + 10*(s[2] - '0') + (s[3] - '0');
!     tm.tm_mon  = 10*(s[4] - '0') + (s[5] - '0') - 1;
!     tm.tm_mday = 10*(s[6] - '0') + (s[7] - '0');
!     tm.tm_hour = 10*(s[8] - '0') + (s[9] - '0');
!     tm.tm_min  = 10*(s[10] - '0') + (s[11] - '0');
!     tm.tm_sec  = 10*(s[12] - '0') + (s[13] - '0');
d75 6
a80 10
*** 512,518 ****
  }
  
  /* compares 2 dates:  
!  *   ldap_date  should point to: YYMMDDHHmmSSZ
   *   http_date   is a HTTP date (3 different formats ...)
   * returns 1,0,-1 if first date is newer, equal, older to second
   */
--- 512,518 ----
  }
d82 2
a83 5
  /* compares 2 dates:  
!  *   ldap_date  should point to: YYYYMMDDHHmmSSZ
   *   http_date   is a HTTP date (3 different formats ...)
   * returns 1,0,-1 if first date is newer, equal, older to second
   */
a85 1
--- 552,562 ----
d89 13
a101 5
+ /* OpenLDAP uses and records 4 digit years - following code not needed
          if (year < 70)
              year += 100;
          year += 1900;
+ */
d111 1
a111 1
          return i > 0;
d124 1
a124 1
--- 570,586 ----
d128 15
a142 3
!     if ((i = (1000*(ldap_date[0] -'0') + 100*(ldap_date[1] - '0') + (10*(ldap_date[2] - '0') + (ldap_date[3] - '0')) - year)))
          return i > 0;
!     if ((i = ((10*(ldap_date[4] - '0') + (ldap_date[5] - '0')) - month)))
d144 1
a144 1
!     if ((i = ((10*(ldap_date[6] - '0') + (ldap_date[7] - '0')) - day)))
d146 1
a146 1
!     if ((i = ((10*(ldap_date[8] - '0') + (ldap_date[9] - '0')) - hour)))
d148 1
a148 1
!     if ((i = ((10*(ldap_date[10] - '0') + (ldap_date[11] - '0')) - min)))
d150 1
a150 1
!     if ((i = ((10*(ldap_date[12] - '0') + (ldap_date[13] - '0')) - sec)))
@

