diff --git a/ChangeLog b/ChangeLog index 6e83ffa3..0f0a33f3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +Fri Apr 26 08:15:30 CEST 2002 Daniel Veillard + + * libexslt/date.c: applied another patch from Charles Bozeman to + enhance date/duration support + * tests/exslt/date: added the associated set of regression tests + Thu Apr 25 08:18:57 CEST 2002 Daniel Veillard * libexslt/date.c: applied a patch from Charles Bozeman to add diff --git a/doc/downloads.html b/doc/downloads.html index 19de0c8b..e106c540 100644 --- a/doc/downloads.html +++ b/doc/downloads.html @@ -76,8 +76,9 @@ A:link, A:visited, A:active { text-decoration: underline }

The latest versions of libxslt can be found on xmlsoft.org (Seattle, France) or on the Gnome FTP server either as a source -archive or RPM packages. -(NOTE that you need the libxml2, libxml2-devel, libxslt and libxslt-devel +archive or RPM packages, +Antonin Sprinzl also provides a +mirror in Austria. (NOTE that you need the libxml2, libxml2-devel, libxslt and libxslt-devel packages installed to compile applications using libxslt.) Igor Zlatkovic is now the maintainer of the Windows port, he provides binaries. Gary diff --git a/doc/news.html b/doc/news.html index b5fd3564..6b8ab324 100644 --- a/doc/news.html +++ b/doc/news.html @@ -79,7 +79,7 @@ for a really accurate description

1.0.16: April 15 2002

  • Bug fixes: strip-space, URL in HTML output, error when xsltproc can't - save
  • + save
  • portability fixes: OSF/1, IEEE on alphas, Windows, Python bindings

1.0.15: Mar 25 2002

diff --git a/doc/xslt.html b/doc/xslt.html index c273201a..53a2c5cd 100644 --- a/doc/xslt.html +++ b/doc/xslt.html @@ -176,8 +176,9 @@ href="ftp://fr.rpmfind.net/pub/libxml/">France
) or on the Gnome FTP server either as a source archive or RPM packages. -(NOTE that you need the RPM packages, +Antonin Sprinzl also provides a +mirror in Austria. (NOTE that you need the libxml2, libxml2-devel, libxslt and

1.0.16: April 15 2002

  • Bug fixes: strip-space, URL in HTML output, error when xsltproc can't - save
  • + save
  • portability fixes: OSF/1, IEEE on alphas, Windows, Python bindings
diff --git a/libexslt/date.c b/libexslt/date.c index 91a18193..fcd2d2f7 100644 --- a/libexslt/date.c +++ b/libexslt/date.c @@ -919,10 +919,10 @@ error: */ static exsltDateValPtr exsltDateParseDuration (const xmlChar *duration) { - const xmlChar *cur = duration; + const xmlChar *cur = duration; exsltDateValPtr dur; int isneg = 0; - int seq = 0; + unsigned int seq = 0; if (duration == NULL) return NULL; @@ -944,7 +944,7 @@ exsltDateParseDuration (const xmlChar *duration) { double num; int num_type = 0; /* -1 = invalid, 0 = int, 1 = floating */ const xmlChar desig[] = {'Y', 'M', 'D', 'H', 'M', 'S'}; - const double mult[] = { 0.0, 0.0, 86400.0, 3600.0, 60.0, 1.0, 0.0}; + const double multi[] = { 0.0, 0.0, 86400.0, 3600.0, 60.0, 1.0, 0.0}; /* input string should be empty or invalid date/time item */ if (seq >= sizeof(desig)) @@ -971,7 +971,7 @@ exsltDateParseDuration (const xmlChar *duration) { if (*cur == desig[seq]) { /* verify numeric type; only seconds can be float */ - if ((num_type != 0) && (seq < (sizeof(desig-1)))) + if ((num_type != 0) && (seq < (sizeof(desig)-1))) goto error; switch (seq) { @@ -983,7 +983,7 @@ exsltDateParseDuration (const xmlChar *duration) { break; default: /* convert to seconds using multiplier */ - dur->value.dur.sec += num * mult[seq]; + dur->value.dur.sec += num * multi[seq]; seq++; break; } diff --git a/tests/exslt/date/Makefile.am b/tests/exslt/date/Makefile.am index bb043d60..2740680d 100644 --- a/tests/exslt/date/Makefile.am +++ b/tests/exslt/date/Makefile.am @@ -20,14 +20,20 @@ EXTRA_DIST = \ gyearmonth.1.out gyearmonth.1.xml gyearmonth.1.xsl \ gyearmonth.2.out gyearmonth.2.xml gyearmonth.2.xsl \ time.1.out time.1.xml time.1.xsl \ - time.2.out time.2.xml time.2.xsl + time.2.out time.2.xml time.2.xsl \ + add.1.out add.1.xml add.1.xsl \ + add.2.out add.2.xml add.2.xsl \ + add-duration.1.out add-duration.1.xml add-duration.1.xsl \ + add-duration.2.out add-duration.2.xml add-duration.2.xsl \ + difference.1.out difference.1.xml difference.1.xsl \ + difference.2.out difference.2.xml difference.2.xsl \ + duration.1.out duration.1.xml duration.1.xsl \ + duration.2.out duration.2.xml duration.2.xsl \ + seconds.1.out seconds.1.xml seconds.1.xsl \ + seconds.2.out seconds.2.xml seconds.2.xsl all: -valgrind: - @echo '## Running the regression tests under Valgrind' - $(MAKE) CHECKER='valgrind -q' tests - test-current: @(echo > .memdump) @echo \ >current.xml @@ -37,7 +43,7 @@ test-current: @(for i in $(srcdir)/current.xsl ; do \ name=`basename $$i .xsl` ; \ if [ ! -f $(srcdir)/$$name.xml ] ; then continue ; fi ; \ - $(CHECKER) $(top_builddir)/xsltproc/xsltproc $(srcdir)/$$name.xsl $(srcdir)/$$name.xml;\ + $(top_builddir)/xsltproc/xsltproc $(srcdir)/$$name.xsl $(srcdir)/$$name.xml;\ grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" || true;\ done) @rm -f current.xml @@ -48,7 +54,7 @@ test tests: $(top_builddir)/xsltproc/xsltproc test-current name=`basename $$i .xsl` ; \ if [ ! -f $(srcdir)/$$name.xml ] ; then continue ; fi ; \ echo $$name.xml ; \ - $(CHECKER) $(top_builddir)/xsltproc/xsltproc $(srcdir)/$$name.xsl $(srcdir)/$$name.xml > $$name.res;\ + $(top_builddir)/xsltproc/xsltproc $(srcdir)/$$name.xsl $(srcdir)/$$name.xml > $$name.res;\ if [ ! -f $(srcdir)/$$name.out ] ; then cp $$name.res $(srcdir)/$$name.out ; \ else if [ ! -s $$name.res ] ; then echo "Fatal error, no $$name.res\n" ; \ else diff $(srcdir)/$$name.out $$name.res ; fi ; fi; \ diff --git a/tests/exslt/date/add-duration.1.out b/tests/exslt/date/add-duration.1.out new file mode 100644 index 00000000..5eb86bc9 --- /dev/null +++ b/tests/exslt/date/add-duration.1.out @@ -0,0 +1,47 @@ + +add-duration : P1Y + -P1Y +result : P0D +add-duration : P1M + -P1M +result : P0D +add-duration : P1D + -P1D +result : P0D +add-duration : PT1H + -PT1H +result : P0D +add-duration : PT1M + -PT1M +result : P0D +add-duration : PT1S + -PT1S +result : P0D +add-duration : P1Y + -P12M +result : P0D +add-duration : P1D + -PT24H +result : P0D +add-duration : P1D + -PT1440M +result : P0D +add-duration : P1D + -PT86400S +result : P0D +add-duration : P1Y1D + -P12MT86400S +result : P0D +add-duration : P30D + PT24H +result : P31D +add-duration : P10Y + P45M +result : P13Y9M +add-duration : P10Y + -P12M +result : P9Y +add-duration : P5Y11M + -P12M +result : P4Y11M +add-duration : P1000Y11M30D + -PT9S +result : P1000Y11M29DT23H59M51S +add-duration : P12M29D + P365D +result : P1Y394D +add-duration : P1000Y + PT45.65S +result : P1000YT45.65S +add-duration : PT23H59M0S + PT59S +result : PT23H59M59S +add-duration : PT23H59M0S + PT61S +result : P1DT1S +add-duration : P1000Y11M30DT23H59M0.1S + PT59.9S +result : P1000Y11M31D +add-duration : P1000Y11M30DT23H59M1S + PT59S +result : P1000Y11M31D +add-duration : P1000Y11M30D + -P1DT9S +result : P1000Y11M28DT23H59M51S \ No newline at end of file diff --git a/tests/exslt/date/add-duration.1.xml b/tests/exslt/date/add-duration.1.xml new file mode 100644 index 00000000..0896c503 --- /dev/null +++ b/tests/exslt/date/add-duration.1.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/exslt/date/add-duration.1.xsl b/tests/exslt/date/add-duration.1.xsl new file mode 100644 index 00000000..70a70793 --- /dev/null +++ b/tests/exslt/date/add-duration.1.xsl @@ -0,0 +1,16 @@ + + + + + + + +add-duration : + +result : + + + + diff --git a/tests/exslt/date/add-duration.2.out b/tests/exslt/date/add-duration.2.out new file mode 100644 index 00000000..afd7ad7d --- /dev/null +++ b/tests/exslt/date/add-duration.2.out @@ -0,0 +1,13 @@ + +add-duration : 2001 + -P1Y +result : +add-duration : P1M + 2000-01-01 +result : +add-duration : P11M30D + -P12M +result : +add-duration : P11M + -P12D +result : +add-duration : P1000Y11M + -PT9S +result : +add-duration : -P1000Y + PT9S +result : \ No newline at end of file diff --git a/tests/exslt/date/add-duration.2.xml b/tests/exslt/date/add-duration.2.xml new file mode 100644 index 00000000..e306bef1 --- /dev/null +++ b/tests/exslt/date/add-duration.2.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/tests/exslt/date/add-duration.2.xsl b/tests/exslt/date/add-duration.2.xsl new file mode 100644 index 00000000..70a70793 --- /dev/null +++ b/tests/exslt/date/add-duration.2.xsl @@ -0,0 +1,16 @@ + + + + + + + +add-duration : + +result : + + + + diff --git a/tests/exslt/date/add.1.out b/tests/exslt/date/add.1.out new file mode 100644 index 00000000..0671acfb --- /dev/null +++ b/tests/exslt/date/add.1.out @@ -0,0 +1,29 @@ + +add : 2000-01-01T01:01:00Z + PT0S +result : 2000-01-01T01:01:00Z +add : 2000-01-01T01:01:00Z + PT60S +result : 2000-01-01T01:02:00Z +add : 2000-01-01T01:01:00Z + PT59S +result : 2000-01-01T01:01:59Z +add : 2000-01-01 + PT86400S +result : 2000-01-02 +add : 2000-02-29 + PT86400S +result : 2000-03-01 +add : 2000-01-01 + -PT86400S +result : 1999-12-31 +add : -0001-12-31T23:59:59 + PT1S +result : 0001-01-01T00:00:00Z +add : 0001-01-01T00:00:00 + -PT1S +result : -0001-12-31T23:59:59Z +add : 2000-01-01T00:00:00Z + -PT59S +result : 1999-12-31T23:59:01Z +add : -0001 + -PT59S +result : -0002-12-31T23:59:01Z +add : -0001 + P1Y +result : 0001 +add : 2000-01 + -PT86400S +result : 1999-12-31 +add : 2000-01 + -P1D +result : 1999-12-31 +add : 1970-01-01T00:00:00-00:30 + -PT30S +result : 1969-12-31T23:29:30Z \ No newline at end of file diff --git a/tests/exslt/date/add.1.xml b/tests/exslt/date/add.1.xml new file mode 100644 index 00000000..21815131 --- /dev/null +++ b/tests/exslt/date/add.1.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/tests/exslt/date/add.1.xsl b/tests/exslt/date/add.1.xsl new file mode 100644 index 00000000..cc7ab1cc --- /dev/null +++ b/tests/exslt/date/add.1.xsl @@ -0,0 +1,16 @@ + + + + + + + +add : + +result : + + + + diff --git a/tests/exslt/date/add.2.out b/tests/exslt/date/add.2.out new file mode 100644 index 00000000..82bfe9dc --- /dev/null +++ b/tests/exslt/date/add.2.out @@ -0,0 +1,13 @@ + +add : PT0S + 2000-01-01T01:01:00Z +result : +add : 2000-01-01T01:01:00Z + +result : +add : + PT60S +result : +add : --10-29 + PT60S +result : +add : ---29 + PT60S +result : +add : 10:31:07 + PT60S +result : \ No newline at end of file diff --git a/tests/exslt/date/add.2.xml b/tests/exslt/date/add.2.xml new file mode 100644 index 00000000..2b8c84c5 --- /dev/null +++ b/tests/exslt/date/add.2.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/tests/exslt/date/add.2.xsl b/tests/exslt/date/add.2.xsl new file mode 100644 index 00000000..cc7ab1cc --- /dev/null +++ b/tests/exslt/date/add.2.xsl @@ -0,0 +1,16 @@ + + + + + + + +add : + +result : + + + + diff --git a/tests/exslt/date/difference.1.out b/tests/exslt/date/difference.1.out new file mode 100644 index 00000000..8b4176bb --- /dev/null +++ b/tests/exslt/date/difference.1.out @@ -0,0 +1,23 @@ + +difference : 2000 - 1999 +result : P1Y +difference : 2000-01 - 1999-12 +result : P1M +difference : 1999-12 - 2000-01 +result : -P1M +difference : 1999-12-31 - 2000-01-01 +result : -P1D +difference : 1999 - 2000-01 +result : -P1Y +difference : 0002-01-05 - 0001-01-04 +result : P366D +difference : 0002-05-05 - 0001-01 +result : P1Y4M +difference : -0002-01-05 - 0001-01-04 +result : -P729D +difference : 1970-01-01T05:04:03 - 1970-01-01T04:03:02 +result : PT1H1M1S +difference : 2000-01-01T05:00:03 - 2000-01-01T04:03:02 +result : PT57M1S +difference : 2000-01-01T05:00:03 - 1980-01-01T04:03:02 +result : P7305DT57M1S \ No newline at end of file diff --git a/tests/exslt/date/difference.1.xml b/tests/exslt/date/difference.1.xml new file mode 100644 index 00000000..ff197fff --- /dev/null +++ b/tests/exslt/date/difference.1.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/tests/exslt/date/difference.1.xsl b/tests/exslt/date/difference.1.xsl new file mode 100644 index 00000000..f0d0f481 --- /dev/null +++ b/tests/exslt/date/difference.1.xsl @@ -0,0 +1,16 @@ + + + + + + + +difference : - +result : + + + + diff --git a/tests/exslt/date/difference.2.out b/tests/exslt/date/difference.2.out new file mode 100644 index 00000000..343cd3d1 --- /dev/null +++ b/tests/exslt/date/difference.2.out @@ -0,0 +1,9 @@ + +difference : 2000-01-01T05:00:03 - ---01 +result : +difference : 0002-01-05 - --01-04 +result : +difference : 1970-01-01T05:04:03 - 04:03:02 +result : +difference : 2000 - +result : \ No newline at end of file diff --git a/tests/exslt/date/difference.2.xml b/tests/exslt/date/difference.2.xml new file mode 100644 index 00000000..de58d263 --- /dev/null +++ b/tests/exslt/date/difference.2.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/tests/exslt/date/difference.2.xsl b/tests/exslt/date/difference.2.xsl new file mode 100644 index 00000000..f0d0f481 --- /dev/null +++ b/tests/exslt/date/difference.2.xsl @@ -0,0 +1,16 @@ + + + + + + + +difference : - +result : + + + + diff --git a/tests/exslt/date/duration.1.out b/tests/exslt/date/duration.1.out new file mode 100644 index 00000000..2424c96d --- /dev/null +++ b/tests/exslt/date/duration.1.out @@ -0,0 +1,29 @@ + +duration : 60 +result : PT1M +duration : 360 +result : PT6M +duration : 3600 +result : PT1H +duration : 86400 +result : P1D +duration : 86400.5 +result : P1DT0.5S +duration : 3660 +result : PT1H1M +duration : 61 +result : PT1M1S +duration : 90061 +result : P1DT1H1M1S +duration : 0.5 +result : PT0.5S +duration : 0.05 +result : PT0.05S +duration : 990.005 +result : PT16M30.005S +duration : -60 +result : -PT1M +duration : 9999999999999 +result : P115740740DT17H46M39S +duration : -2999999999 +result : -P34722DT5H19M59S \ No newline at end of file diff --git a/tests/exslt/date/duration.1.xml b/tests/exslt/date/duration.1.xml new file mode 100644 index 00000000..dd358454 --- /dev/null +++ b/tests/exslt/date/duration.1.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/tests/exslt/date/duration.1.xsl b/tests/exslt/date/duration.1.xsl new file mode 100644 index 00000000..a481b1f3 --- /dev/null +++ b/tests/exslt/date/duration.1.xsl @@ -0,0 +1,16 @@ + + + + + + + +duration : +result : + + + + diff --git a/tests/exslt/date/duration.2.out b/tests/exslt/date/duration.2.out new file mode 100644 index 00000000..688b1768 --- /dev/null +++ b/tests/exslt/date/duration.2.out @@ -0,0 +1,15 @@ + +duration : P10Y20M100DT +result : +duration : P-10Y +result : +duration : P10YM100D +result : +duration : P10Y100D10M +result : +duration : P10Y10H +result : +duration : P10Y10Y +result : +duration : P10.0Y +result : \ No newline at end of file diff --git a/tests/exslt/date/duration.2.xml b/tests/exslt/date/duration.2.xml new file mode 100644 index 00000000..5bc250e0 --- /dev/null +++ b/tests/exslt/date/duration.2.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/tests/exslt/date/duration.2.xsl b/tests/exslt/date/duration.2.xsl new file mode 100644 index 00000000..a481b1f3 --- /dev/null +++ b/tests/exslt/date/duration.2.xsl @@ -0,0 +1,16 @@ + + + + + + + +duration : +result : + + + + diff --git a/tests/exslt/date/gmon.out b/tests/exslt/date/gmon.out new file mode 100644 index 00000000..ef65bc81 Binary files /dev/null and b/tests/exslt/date/gmon.out differ diff --git a/tests/exslt/date/seconds.1.out b/tests/exslt/date/seconds.1.out new file mode 100644 index 00000000..b2517d44 --- /dev/null +++ b/tests/exslt/date/seconds.1.out @@ -0,0 +1,37 @@ + +seconds : PT10M +result : 600 +seconds : -P10D +result : -864000 +seconds : PT10H +result : 36000 +seconds : PT10H10M10.5S +result : 36610.5 +seconds : PT0.00001S +result : 0.00001 +seconds : PT49.00001S +result : 49.00001 +seconds : P0Y0M31DT10H10M10.09S +result : 2715010.09 +seconds : -P0Y0M31DT10H10M10.09S +result : -2715010.09 +seconds : PT100H100M100.001S +result : 366100.001 +seconds : 2001 +result : 978307200 +seconds : 2001-10-29T10:31:07 +result : 1004351467 +seconds : 1970-01-01T00:00:00 +result : 0 +seconds : 1970-01-01T00:00:01 +result : 1 +seconds : 1969-12-31T23:59:59 +result : -1 +seconds : 1969-01-01T00:00:00 +result : -31536000 +seconds : 1971-01-01T00:00:00 +result : 31536000 +seconds : 0001-01-01T00:00:00 +result : -2006054656 +seconds : -0001-01-01T00:00:00 +result : -2037590656 diff --git a/tests/exslt/date/seconds.1.xml b/tests/exslt/date/seconds.1.xml new file mode 100644 index 00000000..5e0a664f --- /dev/null +++ b/tests/exslt/date/seconds.1.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/exslt/date/seconds.1.xsl b/tests/exslt/date/seconds.1.xsl new file mode 100644 index 00000000..a806942b --- /dev/null +++ b/tests/exslt/date/seconds.1.xsl @@ -0,0 +1,16 @@ + + + + + + + +seconds : +result : + + + + diff --git a/tests/exslt/date/seconds.2.out b/tests/exslt/date/seconds.2.out new file mode 100644 index 00000000..e804d94c --- /dev/null +++ b/tests/exslt/date/seconds.2.out @@ -0,0 +1,27 @@ + +seconds : P10H +result : NaN +seconds : P-T10D +result : NaN +seconds : PT-10D +result : NaN +seconds : --PT10H +result : NaN +seconds : PT10H10M.5S +result : NaN +seconds : PYT0.00001S +result : NaN +seconds : PT49.00001 +result : NaN +seconds : P0Y0MDT10H10M10.09S +result : NaN +seconds : --10-29 +result : NaN +seconds : ---29 +result : NaN +seconds : 10:31:07 +result : NaN +seconds : P10Y20M100DT40H61M100S +result : NaN +seconds : P10000Y +result : NaN diff --git a/tests/exslt/date/seconds.2.xml b/tests/exslt/date/seconds.2.xml new file mode 100644 index 00000000..276baef7 --- /dev/null +++ b/tests/exslt/date/seconds.2.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/exslt/date/seconds.2.xsl b/tests/exslt/date/seconds.2.xsl new file mode 100644 index 00000000..a806942b --- /dev/null +++ b/tests/exslt/date/seconds.2.xsl @@ -0,0 +1,16 @@ + + + + + + + +seconds : +result : + + + +