summaryrefslogtreecommitdiff
path: root/www
diff options
context:
space:
mode:
authorAlexander Langer <alex@FreeBSD.org>2000-07-19 08:14:09 +0000
committerAlexander Langer <alex@FreeBSD.org>2000-07-19 08:14:09 +0000
commit5d7eef81ca504f6a2c3b058d5b74df1391a500ce (patch)
treea9adfab1f0c9932a996a4eae7e4e2a84f40ef815 /www
parentFix broken apel-dependency in the case of xemacs and xemacs20. (diff)
Fix patching for 2-digit years.
PR: 19315 Submitted by: Karl Dietz <Karl.Dietz@frankfurt.netsurf.de>
Notes
Notes: svn path=/head/; revision=30834
Diffstat (limited to 'www')
-rw-r--r--www/web500gw/files/patch-ac155
1 files changed, 77 insertions, 78 deletions
diff --git a/www/web500gw/files/patch-ac b/www/web500gw/files/patch-ac
index 7f0f2b70cae0..fa865d5b2819 100644
--- a/www/web500gw/files/patch-ac
+++ b/www/web500gw/files/patch-ac
@@ -1,64 +1,46 @@
*** util.c.orig Thu Dec 2 18:07:10 1999
---- util.c Mon Jan 17 23:23:51 2000
+--- util.c Thu Jan 27 11:41:36 2000
***************
-*** 14,20 ****
- * software without specific prior written permission. This software
+*** 15,20 ****
+--- 15,22 ----
* is provided ``as is'' without express or implied warranty.
*/
-!
- #include "web500gw.h"
- /* 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>
++ #include <unistd.h>
++ #include <gnuregex.h>
#include "web500gw.h"
/* msg_?printf: formats (and prints out) a string contained in message file */
***************
-*** 437,443 ****
- hour = 0;
+*** 438,443 ****
+--- 440,449 ----
mday++;
}
-! 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);
+ 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);
***************
-*** 454,460 ****
+*** 465,470 ****
+--- 471,477 ----
+ char mydate[256];
+ struct tm tm, *ntm;
+ time_t t;
++ int ds_off; /* date string offset */
-
- /* 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 *
+ #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 :-( */
+ /* ... 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;
@@ -69,49 +51,54 @@
tm.tm_isdst = 0;
#if ! (defined(__hpux) || defined(_AIX) || defined(sunos5) || defined(linux) || defined(unixware7))
---- 474,487 ----
+--- 480,498 ----
if (!s)
return(NULL);
-! /* 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');
+! /* 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))
***************
-*** 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 ----
- }
+*** 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 */
- /* 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
- */
+ #ifdef WEB500GW_DEBUG
+ Web500gw_debug(WEB500GW_DEBUG_UTIL, " cmp_dates (%s, %s)\n",
***************
*** 552,560 ****
---- 552,562 ----
/* RFC 850: dd-Mmm-yy hh:mm:ss */
sscanf(http_date, "%d-%3s-%d %d:%d:%d",
&day, month_name, &year, &hour, &min, &sec);
-+ /* OpenLDAP uses and records 4 digit years - following code not needed
- if (year < 70)
- year += 100;
- year += 1900;
-+ */
+! 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);
@@ -121,7 +108,7 @@
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;
+! 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)))
@@ -134,21 +121,33 @@
return i > 0;
/* gone so far - dates are identical */
---- 570,586 ----
+--- 580,608 ----
day, month, year, 0);
Web500gw_debug(WEB500GW_DEBUG_UTIL, "%d:%d:%d\n", hour, min, sec, 0);
#endif
-! 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)))
+! /* 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[6] - '0') + (ldap_date[7] - '0')) - day)))
+! if ((i = ((10*(ldap_date[ds_off+2] - '0') + (ldap_date[ds_off+3] - '0')) - day)))
return i > 0;
-! if ((i = ((10*(ldap_date[8] - '0') + (ldap_date[9] - '0')) - hour)))
+! if ((i = ((10*(ldap_date[ds_off+4] - '0') + (ldap_date[ds_off+5] - '0')) - hour)))
return i > 0;
-! if ((i = ((10*(ldap_date[10] - '0') + (ldap_date[11] - '0')) - min)))
+! if ((i = ((10*(ldap_date[ds_off+6] - '0') + (ldap_date[ds_off+7] - '0')) - min)))
return i > 0;
-! if ((i = ((10*(ldap_date[12] - '0') + (ldap_date[13] - '0')) - sec)))
+! 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 */