Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:Pragmatic solution for the new expat build requirements and the changes in the API behaviour.
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | expat-2.6.2
Files: files | file ages | folders
SHA3-256: 15375d968d9b3bbd15856c103dce7c1fa243d0c0d440112d9486ba16edf6309c
User & Date: rolf 2024-05-13 23:33:04
Context
2024-05-16
01:00
Spread the pragmatic solution over the modules of the package. Closed-Leaf check-in: 6bc6da72d3 user: rolf tags: expat-2.6.2
2024-05-13
23:33
Pragmatic solution for the new expat build requirements and the changes in the API behaviour. check-in: 15375d968d user: rolf tags: expat-2.6.2
2024-05-11
15:40
Added the new (by expat) expected defines to the vc makefile. check-in: bed29fc890 user: rolf tags: expat-2.6.2
Changes
Hide Diffs Unified Diffs Ignore Whitespace Patch

Changes to configure.

754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
enable_shared
enable_stubs
enable_64bit
enable_64bit_vis
enable_rpath
enable_symbols
enable_dtd
enable_ge
with_contextbytes
enable_ns
enable_ucmd
enable_tdomalloc
enable_lessns
enable_schema
'
      ac_precious_vars='build_alias







<
<







754
755
756
757
758
759
760


761
762
763
764
765
766
767
enable_shared
enable_stubs
enable_64bit
enable_64bit_vis
enable_rpath
enable_symbols
enable_dtd


enable_ns
enable_ucmd
enable_tdomalloc
enable_lessns
enable_schema
'
      ac_precious_vars='build_alias
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
  --enable-stubs          build and link with stub libraries. Always true for
                          shared builds (default: on)
  --enable-64bit          enable 64bit support (default: off)
  --enable-64bit-vis      enable 64bit Sparc VIS support (default: off)
  --disable-rpath         disable rpath support (default: on)
  --enable-symbols        build with debugging symbols (default: off)
  --enable-dtd            build expat with dtd support (default: on)
  --enable-ge             build expat with general entities support (default:
                          on)
  --enable-ns             build with XML namespace support (default: on)
  --enable-unknown        enable built-in unknown command (default: off)
  --enable-tdomalloc      build with the tDOM allocator (default: off)
  --enable-lessns         build with lower limit for XML ns declarations
                          (default: off)
  --enable-schema         build with valiation features (default: on)

Optional Packages:
  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
  --with-tcl              directory containing tcl configuration
                          (tclConfig.sh)
  --with-tcl8             Compile for Tcl8 in Tcl9 environment
  --with-aolserver        directory with AOLserver distribution
  --with-expat            directory with expat installation
  --with-entropy          source of entropy to use
  --with-tclinclude       directory containing the public Tcl header files
  --with-context-bytes    configure expat context bytes buffer size (default:
                          1024)

Some influential environment variables:
  CC          C compiler command
  CFLAGS      C compiler flags
  LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
              nonstandard directory <lib dir>
  LIBS        libraries to pass to the linker, e.g. -l<library>







<
<

















<
<







1399
1400
1401
1402
1403
1404
1405


1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422


1423
1424
1425
1426
1427
1428
1429
  --enable-stubs          build and link with stub libraries. Always true for
                          shared builds (default: on)
  --enable-64bit          enable 64bit support (default: off)
  --enable-64bit-vis      enable 64bit Sparc VIS support (default: off)
  --disable-rpath         disable rpath support (default: on)
  --enable-symbols        build with debugging symbols (default: off)
  --enable-dtd            build expat with dtd support (default: on)


  --enable-ns             build with XML namespace support (default: on)
  --enable-unknown        enable built-in unknown command (default: off)
  --enable-tdomalloc      build with the tDOM allocator (default: off)
  --enable-lessns         build with lower limit for XML ns declarations
                          (default: off)
  --enable-schema         build with valiation features (default: on)

Optional Packages:
  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
  --with-tcl              directory containing tcl configuration
                          (tclConfig.sh)
  --with-tcl8             Compile for Tcl8 in Tcl9 environment
  --with-aolserver        directory with AOLserver distribution
  --with-expat            directory with expat installation
  --with-entropy          source of entropy to use
  --with-tclinclude       directory containing the public Tcl header files



Some influential environment variables:
  CC          C compiler command
  CFLAGS      C compiler flags
  LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
              nonstandard directory <lib dir>
  LIBS        libraries to pass to the linker, e.g. -l<library>
8881
8882
8883
8884
8885
8886
8887
8888
8889
8890
8891
8892
8893
8894
8895
8896
8897
8898
8899
8900
8901
8902
8903
8904
8905
8906
8907
8908
8909
8910
8911
8912
8913
8914
8915
8916
8917
8918
8919
8920
8921
8922
8923
8924
8925
8926
8927
8928
8929
8930
8931
8932
8933
8934
8935
8936
8937
8938
8939
8940
        $as_echo "#define XML_DTD 1" >>confdefs.h

    else
        { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
    fi


    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable expat general entities support" >&5
$as_echo_n "checking whether to enable expat general entities support... " >&6; }
    # Check whether --enable-ge was given.
if test "${enable_ge+set}" = set; then :
  enableval=$enable_ge; tcl_ok=$enableval
else
  tcl_ok=yes
fi


    if test "${enable_ge+set}" = set; then
        enableval="$enable_ge"
        tcl_ok=$enableval
    else
        tcl_ok=yes
    fi

    if test "$tcl_ok" = "yes" ; then
        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
        $as_echo "#define XML_GE 1" >>confdefs.h

    else
        { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
    fi


    { $as_echo "$as_me:${as_lineno-$LINENO}: checking expat context bytes buffer size" >&5
$as_echo_n "checking expat context bytes buffer size... " >&6; }

# Check whether --with-contextbytes was given.
if test "${with_contextbytes+set}" = set; then :
  withval=$with_contextbytes;
else
  with_contextbytes=1024
fi


    { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_contextbytes}" >&5
$as_echo "${with_contextbytes}" >&6; }
    cat >>confdefs.h <<_ACEOF
#define XML_CONTEXT_BYTES ${with_contextbytes}
_ACEOF



    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable namespace support" >&5
$as_echo_n "checking whether to enable namespace support... " >&6; }
    # Check whether --enable-ns was given.
if test "${enable_ns+set}" = set; then :
  enableval=$enable_ns; tcl_ok=$enableval







|
<
<
<
<
<
<
<
<
|
|
<
<
<
<
<
<

<
<
<
|
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<







8875
8876
8877
8878
8879
8880
8881
8882








8883
8884






8885



8886
























8887
8888
8889
8890
8891
8892
8893
        $as_echo "#define XML_DTD 1" >>confdefs.h

    else
        { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
    fi

# If we expose XML_GetInputContext() at script level








#TDOM_CONTEXT_BYTES
$as_echo "#define XML_CONTEXT_BYTES 0" >>confdefs.h










$as_echo "#define XML_GE 1" >>confdefs.h


























    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable namespace support" >&5
$as_echo_n "checking whether to enable namespace support... " >&6; }
    # Check whether --enable-ns was given.
if test "${enable_ns+set}" = set; then :
  enableval=$enable_ns; tcl_ok=$enableval

Changes to configure.ac.

235
236
237
238
239
240
241
242
243


244
245
246
247
248
249
250
#TEA_PROG_WISH

#--------------------------------------------------------------------
# Add some private preprocessor options
#--------------------------------------------------------------------

TDOM_ENABLE_DTD
TDOM_ENABLE_GE
TDOM_CONTEXT_BYTES


TDOM_ENABLE_NS
TDOM_ENABLE_UNKNOWN
TDOM_ENABLE_TDOMALLOC
TDOM_ENABLE_LESS_NS
TDOM_ENABLE_SCHEMA

TDOMSHELL=tcldomsh







|
|
>
>







235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
#TEA_PROG_WISH

#--------------------------------------------------------------------
# Add some private preprocessor options
#--------------------------------------------------------------------

TDOM_ENABLE_DTD
# If we expose XML_GetInputContext() at script level
#TDOM_CONTEXT_BYTES
AC_DEFINE(XML_CONTEXT_BYTES, 0)
AC_DEFINE(XML_GE, 1)
TDOM_ENABLE_NS
TDOM_ENABLE_UNKNOWN
TDOM_ENABLE_TDOMALLOC
TDOM_ENABLE_LESS_NS
TDOM_ENABLE_SCHEMA

TDOMSHELL=tcldomsh

Changes to generic/dom.c.

33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51



52
53
54
55
56
57
58
|
|
|   written by Jochen Loewer
|   April 5, 1999
|
\--------------------------------------------------------------------------*/



/*---------------------------------------------------------------------------
|   Includes
|
\--------------------------------------------------------------------------*/
#include <tcl.h>
#include <dom.h>
#include <domxpath.h>
#include <schema.h>
#include <tclexpat.h>





/* #define DEBUG */
/*----------------------------------------------------------------------------
|   Debug Macros
|
\---------------------------------------------------------------------------*/
#ifdef DEBUG







<
<










>
>
>







33
34
35
36
37
38
39


40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
|
|   written by Jochen Loewer
|   April 5, 1999
|
\--------------------------------------------------------------------------*/



/*---------------------------------------------------------------------------
|   Includes
|
\--------------------------------------------------------------------------*/
#include <tcl.h>
#include <dom.h>
#include <domxpath.h>
#include <schema.h>
#include <tclexpat.h>

#ifndef PARSE_CHUNK_SIZE
# define PARSE_CHUNK_SIZE 8096
#endif

/* #define DEBUG */
/*----------------------------------------------------------------------------
|   Debug Macros
|
\---------------------------------------------------------------------------*/
#ifdef DEBUG
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
    info->nextFeedbackPosition = info->feedbackAfter;
    
    Tcl_ResetResult (info->interp);
    result = 1;
    if (chan == NULL) {
        do {
            done = (len < INT_MAX);
            status = XML_Parse (extparser, xmlstring, done ? len : INT_MAX,
                                done);
            if (!done) {
                xmlstring += INT_MAX;
                len -= INT_MAX;
            }
        }  while (!done && status == XML_STATUS_OK);
        switch (status) {
        case XML_STATUS_ERROR:
            interpResult = Tcl_GetStringResult(info->interp);
            if (interpResult[0] == '\0') {
                tcldom_reportErrorLocation (







|


|
|







2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
    info->nextFeedbackPosition = info->feedbackAfter;
    
    Tcl_ResetResult (info->interp);
    result = 1;
    if (chan == NULL) {
        do {
            done = (len < INT_MAX);
            status = XML_Parse (extparser, xmlstring, done ? len : PARSE_CHUNK_SIZE,
                                done);
            if (!done) {
                xmlstring += PARSE_CHUNK_SIZE;
                len -= PARSE_CHUNK_SIZE;
            }
        }  while (!done && status == XML_STATUS_OK);
        switch (status) {
        case XML_STATUS_ERROR:
            interpResult = Tcl_GetStringResult(info->interp);
            if (interpResult[0] == '\0') {
                tcldom_reportErrorLocation (
2287
2288
2289
2290
2291
2292
2293
2294
2295
2296
2297
2298
2299
2300
2301
2302
2303
2304
2305
        parser = XML_ExternalEntityParserCreate (parser, "forest", 0);
        info.parser = parser;
        info.currentNode = doc->rootNode;
    }
    
    if (channel == NULL) {
        do {
            done = (length < INT_MAX);
            status = XML_Parse (parser, xml, done ? length : INT_MAX, done);
            if (!done) {
                xml += INT_MAX;
                length -= INT_MAX;
            }
        }  while (!done && status == XML_STATUS_OK);
    } else {
        Tcl_DStringInit (&dStr);
        if (Tcl_GetChannelOption (interp, channel, "-encoding", &dStr)
            != TCL_OK) {
            domFreeDocument (doc, NULL, NULL);







|
|

|
|







2288
2289
2290
2291
2292
2293
2294
2295
2296
2297
2298
2299
2300
2301
2302
2303
2304
2305
2306
        parser = XML_ExternalEntityParserCreate (parser, "forest", 0);
        info.parser = parser;
        info.currentNode = doc->rootNode;
    }
    
    if (channel == NULL) {
        do {
            done = (length < PARSE_CHUNK_SIZE);
            status = XML_Parse (parser, xml, done ? length : PARSE_CHUNK_SIZE, done);
            if (!done) {
                xml += PARSE_CHUNK_SIZE;
                length -= PARSE_CHUNK_SIZE;
            }
        }  while (!done && status == XML_STATUS_OK);
    } else {
        Tcl_DStringInit (&dStr);
        if (Tcl_GetChannelOption (interp, channel, "-encoding", &dStr)
            != TCL_OK) {
            domFreeDocument (doc, NULL, NULL);

Changes to tdom.m4.

32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
        tcl_ok=yes
    fi

    if test "$tcl_ok" = "yes" ; then
        AC_MSG_RESULT([yes])
        AC_DEFINE(XML_DTD)
    else
        AC_MSG_RESULT([no])
    fi
])

#------------------------------------------------------------------------
# TDOM_ENABLE_GE --
#
#   Allows the building with GE support
#
# Arguments:
#   None
#   
# Results:
#
#   Adds the following arguments to configure:
#       --enable-ge=yes|no
#
#   Defines the following vars:
#
#   Sets the following vars:
#
#------------------------------------------------------------------------

AC_DEFUN(TDOM_ENABLE_GE, [
    AC_MSG_CHECKING([whether to enable expat general entities support])
    AC_ARG_ENABLE(ge,
        AC_HELP_STRING([--enable-ge],
            [build expat with general entities support (default: on)]),
        [tcl_ok=$enableval], [tcl_ok=yes])

    if test "${enable_ge+set}" = set; then
        enableval="$enable_ge"
        tcl_ok=$enableval
    else
        tcl_ok=yes
    fi

    if test "$tcl_ok" = "yes" ; then
        AC_MSG_RESULT([yes])
        AC_DEFINE(XML_GE)
    else
        AC_MSG_RESULT([no])
    fi
])

#------------------------------------------------------------------------
# TDOM_CONTEXT_BYTES --
#







<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<







32
33
34
35
36
37
38









































39
40
41
42
43
44
45
        tcl_ok=yes
    fi

    if test "$tcl_ok" = "yes" ; then
        AC_MSG_RESULT([yes])
        AC_DEFINE(XML_DTD)
    else









































        AC_MSG_RESULT([no])
    fi
])

#------------------------------------------------------------------------
# TDOM_CONTEXT_BYTES --
#

Changes to tests/dom.test.

727
728
729
730
731
732
733








734
735
736
737
738
739
740
    set doc [dom parse $str]
    set result [string length [$doc selectNodes string(/doc)]]
    lappend result [string length [$doc selectNodes substring(doc,2999999999)]]
    lappend result [$doc selectNodes substring(doc,2999999995,3)]
    $doc delete
    set result
} {3000000000 2 abc}









test dom-3.1 {isName} {
    dom isName ":foo"
} {1}

test dom-3.2 {isName} {
    dom isName "_foo"







>
>
>
>
>
>
>
>







727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
    set doc [dom parse $str]
    set result [string length [$doc selectNodes string(/doc)]]
    lappend result [string length [$doc selectNodes substring(doc,2999999999)]]
    lappend result [$doc selectNodes substring(doc,2999999995,3)]
    $doc delete
    set result
} {3000000000 2 abc}

test dom-2.47 {parse chunk ends in multbyte char} {
    set str "<doc>[string repeat \u1D8B 3000]</doc>"
    set doc [dom parse $str]
    set new [$doc asXML -indent none]
    $doc delete
    expr {$str eq $new ? 1 : 0} 
} 1

test dom-3.1 {isName} {
    dom isName ":foo"
} {1}

test dom-3.2 {isName} {
    dom isName "_foo"

Changes to win/makefile.vc.

48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
	$(TMP_DIR)\tdominit.obj

PRJ_STUBOBJS = $(TMP_DIR)\tdomStubLib.obj

PRJ_DEFINES = \
	-D _CRT_SECURE_NO_DEPRECATE -D _CRT_NONSTDC_NO_DEPRECATE \
	-DHAVE_MEMMOVE -DXML_DTD=1 -DXML_NS=1 -DTDOM_NO_UNKNOWN_CMD=1 \
	-DXML_GE=1 -DXML_CONTEXT_BYTES=1024 \
	-DXMLIMPORT=__declspec(dllexport)

# TBD - some of the code, like expat checks for Windows using the
# WIN32 macro. This should really be changed to check _WIN32. For now,
# define WIN32 ourselves
PRJ_DEFINES = $(PRJ_DEFINES) -DWIN32








|







48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
	$(TMP_DIR)\tdominit.obj

PRJ_STUBOBJS = $(TMP_DIR)\tdomStubLib.obj

PRJ_DEFINES = \
	-D _CRT_SECURE_NO_DEPRECATE -D _CRT_NONSTDC_NO_DEPRECATE \
	-DHAVE_MEMMOVE -DXML_DTD=1 -DXML_NS=1 -DTDOM_NO_UNKNOWN_CMD=1 \
	-DXML_GE=1 -DXML_CONTEXT_BYTES=0 \
	-DXMLIMPORT=__declspec(dllexport)

# TBD - some of the code, like expat checks for Windows using the
# WIN32 macro. This should really be changed to check _WIN32. For now,
# define WIN32 ourselves
PRJ_DEFINES = $(PRJ_DEFINES) -DWIN32