Code Monkey home page Code Monkey logo

xmlstarlet's People

Contributors

dependabot[bot] avatar dimiter avatar dimitern avatar pyup-bot avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

xmlstarlet's Issues

Any idea where to file an issue for xmlstarlet cli tool?

I'd like to report an issue with the original cli tool (which can be install via apt).

It does not report an error when trying to modify/update or delet an xpath that does not exist. I'd expect this to fail.

Any idea where to address the issue?

Cheers

Compile failed against libxml2 2.12.0

Build works correctly with libxml2 2.11.6

BUILD      xmlstarlet (target)
    TOOLCHAIN      autotools
    AUTORECONF      xmlstarlet
autoreconf: export WARNINGS=
autoreconf: Entering directory '/var/media/DATA/home-rudi/LibreELEC.tv/build.LibreELEC-Generic.x86_64-12.0-devel/build/xmlstarlet-1.6.8'
autoreconf: configure.ac: not using Gettext
autoreconf: running: /var/media/DATA/home-rudi/LibreELEC.tv/build.LibreELEC-Generic.x86_64-12.0-devel/toolchain/bin/aclocal -I /var/media/DATA/home-rudi/LibreELEC.tv/build.LibreELEC-Generic.x86_64-12.0-devel/toolchain/x86_64-libreelec-linux-gnu/sysroot/usr/share/aclocal -I /var/media/DATA/home-rudi/LibreELEC.tv/build.LibreELEC-Generic.x86_64-12.0-devel/toolchain/x86_64-libreelec-linux-gnu/sysroot/usr/share/aclocal --force -I m4
autoreconf: configure.ac: tracing
autoreconf: configure.ac: not using Libtool
autoreconf: configure.ac: not using Intltool
autoreconf: configure.ac: not using Gtkdoc
autoreconf: running: /var/media/DATA/home-rudi/LibreELEC.tv/build.LibreELEC-Generic.x86_64-12.0-devel/toolchain/bin/autoconf --include=/var/media/DATA/home-rudi/LibreELEC.tv/build.LibreELEC-Generic.x86_64-12.0-devel/toolchain/x86_64-libreelec-linux-gnu/sysroot/usr/share/aclocal --force
autoreconf: running: /var/media/DATA/home-rudi/LibreELEC.tv/build.LibreELEC-Generic.x86_64-12.0-devel/toolchain/bin/autoheader --include=/var/media/DATA/home-rudi/LibreELEC.tv/build.LibreELEC-Generic.x86_64-12.0-devel/toolchain/x86_64-libreelec-linux-gnu/sysroot/usr/share/aclocal --force
autoreconf: running: /var/media/DATA/home-rudi/LibreELEC.tv/build.LibreELEC-Generic.x86_64-12.0-devel/toolchain/bin/automake --add-missing --copy --force-missing
configure.ac:39: installing './compile'
configure.ac:38: installing './config.guess'
configure.ac:38: installing './config.sub'
configure.ac:8: installing './install-sh'
configure.ac:8: installing './missing'
Makefile.am:34: warning: notdir $(WIN32_doc_DIST: non-POSIX variable name
Makefile.am:34: (probably a GNU make extension)
Makefile.am: installing './depcomp'
parallel-tests: installing './test-driver'
autoreconf: Leaving directory '/var/media/DATA/home-rudi/LibreELEC.tv/build.LibreELEC-Generic.x86_64-12.0-devel/build/xmlstarlet-1.6.8'
Executing (target): /var/media/DATA/home-rudi/LibreELEC.tv/build.LibreELEC-Generic.x86_64-12.0-devel/build/xmlstarlet-1.6.8/configure --host=x86_64-libreelec-linux-gnu --build=x86_64-linux-gnu --prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --sysconfdir=/etc --libdir=/usr/lib --libexecdir=/usr/lib --localstatedir=/var --disable-static --enable-shared ac_cv_func_malloc_0_nonnull=yes ac_cv_func_realloc_0_nonnull=yes --enable-static-libs LIBXML_CONFIG=/var/media/DATA/home-rudi/LibreELEC.tv/build.LibreELEC-Generic.x86_64-12.0-devel/toolchain/x86_64-libreelec-linux-gnu/sysroot/usr/bin/xml2-config LIBXSLT_CONFIG=/var/media/DATA/home-rudi/LibreELEC.tv/build.LibreELEC-Generic.x86_64-12.0-devel/toolchain/x86_64-libreelec-linux-gnu/sysroot/usr/bin/xslt-config --with-libxml-include-prefix=/var/media/DATA/home-rudi/LibreELEC.tv/build.LibreELEC-Generic.x86_64-12.0-devel/toolchain/x86_64-libreelec-linux-gnu/sysroot/usr/include/libxml2 --with-libxml-libs-prefix=/var/media/DATA/home-rudi/LibreELEC.tv/build.LibreELEC-Generic.x86_64-12.0-devel/toolchain/x86_64-libreelec-linux-gnu/sysroot/usr/lib --with-libxslt-include-prefix=/var/media/DATA/home-rudi/LibreELEC.tv/build.LibreELEC-Generic.x86_64-12.0-devel/toolchain/x86_64-libreelec-linux-gnu/sysroot/usr/include --with-libxslt-libs-prefix=/var/media/DATA/home-rudi/LibreELEC.tv/build.LibreELEC-Generic.x86_64-12.0-devel/toolchain/x86_64-libreelec-linux-gnu/sysroot/usr/lib
configure: WARNING: unrecognized options: --disable-static, --enable-shared
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for x86_64-libreelec-linux-gnu-strip... /var/media/DATA/home-rudi/LibreELEC.tv/build.LibreELEC-Generic.x86_64-12.0-devel/toolchain/bin/x86_64-libreelec-linux-gnu-strip
checking for a race-free mkdir -p... /usr/bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking whether make supports nested variables... (cached) yes
checking whether to enable maintainer-specific portions of Makefiles... no
checking build system type... x86_64-pc-linux-gnu
checking host system type... x86_64-libreelec-linux-gnu
checking for x86_64-libreelec-linux-gnu-gcc... /var/media/DATA/home-rudi/LibreELEC.tv/build.LibreELEC-Generic.x86_64-12.0-devel/toolchain/bin/x86_64-libreelec-linux-gnu-gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... yes
checking for suffix of object files... o
checking whether the compiler supports GNU C... yes
checking whether /var/media/DATA/home-rudi/LibreELEC.tv/build.LibreELEC-Generic.x86_64-12.0-devel/toolchain/bin/x86_64-libreelec-linux-gnu-gcc accepts -g... yes
checking for /var/media/DATA/home-rudi/LibreELEC.tv/build.LibreELEC-Generic.x86_64-12.0-devel/toolchain/bin/x86_64-libreelec-linux-gnu-gcc option to enable C11 features... none needed
checking whether /var/media/DATA/home-rudi/LibreELEC.tv/build.LibreELEC-Generic.x86_64-12.0-devel/toolchain/bin/x86_64-libreelec-linux-gnu-gcc understands -c and -o together... yes
checking whether make supports the include directive... yes (GNU style)
checking dependency style of /var/media/DATA/home-rudi/LibreELEC.tv/build.LibreELEC-Generic.x86_64-12.0-devel/toolchain/bin/x86_64-libreelec-linux-gnu-gcc... gcc3
checking for a sed that does not truncate output... /var/media/DATA/home-rudi/LibreELEC.tv/build.LibreELEC-Generic.x86_64-12.0-devel/toolchain/bin/sed
checking for gawk... (cached) gawk
checking for xml2-config... /var/media/DATA/home-rudi/LibreELEC.tv/build.LibreELEC-Generic.x86_64-12.0-devel/toolchain/x86_64-libreelec-linux-gnu/sysroot/usr/bin/xml2-config
configure: using libxml-2.12.0
checking for xslt-config... /var/media/DATA/home-rudi/LibreELEC.tv/build.LibreELEC-Generic.x86_64-12.0-devel/toolchain/x86_64-libreelec-linux-gnu/sysroot/usr/bin/xslt-config
configure: using libxslt-1.1.39
checking for xsltproc... /var/media/DATA/home-rudi/LibreELEC.tv/build.LibreELEC-Generic.x86_64-12.0-devel/toolchain/bin/xsltproc
checking for fop... none
checking for pdf2ps... none
checking for stdio.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for strings.h... yes
checking for sys/stat.h... yes
checking for sys/types.h... yes
checking for unistd.h... yes
checking whether lstat correctly handles trailing slash... yes
checking for GNU libc compatible malloc... (cached) yes
checking for GNU libc compatible realloc... (cached) yes
checking for mode_t... yes
checking for size_t... yes
checking for library containing dlopen... none required
checking for library containing sqrt... -lm
checking for library containing iconv_open... none required
checking for library containing clock_gettime... none required
checking for library containing deflate... -lz
checking for library containing gcry_cipher_encrypt... no
checking for library containing gethostent... none required
checking for library containing setsockopt... none required
checking for library containing connect... none required
checking for lstat... yes
checking for stat... yes
checking for setmode... no
checking for /var/media/DATA/home-rudi/LibreELEC.tv/build.LibreELEC-Generic.x86_64-12.0-devel/toolchain/bin/x86_64-libreelec-linux-gnu-gcc options needed to detect all undeclared functions... none needed
checking whether O_BINARY is declared... no
checking whether exsltDateXpathCtxtRegister is declared... yes
configure: WARNING: fop not installed, unable to build pdf documentation
configure: WARNING: pdf2ps not installed, unable to build postscript documentation
checking that generated files are newer than configure... done
configure: creating ./config.status
config.status: creating xmlstarlet.spec
config.status: creating Makefile
config.status: creating solaris/package/sol8-sparc/pkginfo
config.status: creating solaris/package/sol9-sparc/pkginfo
config.status: creating config.h
config.status: executing depfiles commands
configure: WARNING: unrecognized options: --disable-static, --enable-shared
Executing (target): make 
make  all-am
make[1]: Entering directory '/var/media/DATA/home-rudi/LibreELEC.tv/build.LibreELEC-Generic.x86_64-12.0-devel/build/xmlstarlet-1.6.8/.x86_64-libreelec-linux-gnu'
  GEN      src/usage.c
  GEN      src/c14n-usage.c
version.h: #define VERSION "11.0.0-2562-ge4914a02b5-dirty"
  GEN      src/depyx-usage.c
  GEN      src/edit-usage.c
  GEN      src/elem-usage.c
  GEN      src/escape-usage.c
  GEN      src/format-usage.c
  GEN      src/ls-usage.c
  GEN      src/pyx-usage.c
  GEN      src/select-usage.c
  GEN      src/trans-usage.c
  GEN      src/unescape-usage.c
  GEN      src/validate-usage.c
  CC       src/trans.o
  CC       src/xml.o
  CC       src/xml_C14N.o
  CC       src/xml_depyx.o
  CC       src/xml_edit.o
  CC       src/xml_elem.o
  CC       src/xml_escape.o
  CC       src/xml_format.o
  CC       src/xml_ls.o
  CC       src/xml_pyx.o
  CC       src/xml_select.o
  CC       src/xml_trans.o
  CC       src/xml_validate.o
  CC       src/usage.o
  CC       src/c14n-usage.o
  CC       src/depyx-usage.o
  CC       src/edit-usage.o
  CC       src/elem-usage.o
  CC       src/escape-usage.o
  CC       src/format-usage.o
  CC       src/ls-usage.o
  CC       src/pyx-usage.o
../src/xml_elem.c: In function 'elMain':
../src/xml_elem.c:271:27: warning: passing argument 2 of 'xmlHashScan' from incompatible pointer type [-Wincompatible-pointer-types]
  271 |         xmlHashScan(uniq, hash_key_put, &lines);
      |                           ^~~~~~~~~~~~
      |                           |
      |                           void (*)(void *, void *, xmlChar *) {aka void (*)(void *, void *, unsigned char *)}
In file included from ../src/xml_elem.c:32:
/var/media/DATA/home-rudi/LibreELEC.tv/build.LibreELEC-Generic.x86_64-12.0-devel/toolchain/x86_64-libreelec-linux-gnu/sysroot/usr/include/libxml2/libxml/hash.h:209:57: note: expected 'xmlHashScanner' {aka 'void (*)(void *, void *, const unsigned char *)'} but argument is of type 'void (*)(void *, void *, xmlChar *)' {aka 'void (*)(void *, void *, unsigned char *)'}
  209 |                                          xmlHashScanner scan,
      |                                          ~~~~~~~~~~~~~~~^~~~
../src/xml_C14N.c: In function 'load_xpath_expr':
../src/xml_C14N.c:240:5: warning: '__xmlLoadExtDtdDefaultValue' is deprecated [-Wdeprecated-declarations]
  240 |     xmlLoadExtDtdDefaultValue = XML_DETECT_IDS | XML_COMPLETE_ATTRS;
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~
In file included from ../src/xml_C14N.c:12:
/var/media/DATA/home-rudi/LibreELEC.tv/build.LibreELEC-Generic.x86_64-12.0-devel/toolchain/x86_64-libreelec-linux-gnu/sysroot/usr/include/libxml2/libxml/xmlversion.h:499:27: note: declared here
  499 |     attrs XMLPUBFUN type *__##name(void);
      |                           ^~
/var/media/DATA/home-rudi/LibreELEC.tv/build.LibreELEC-Generic.x86_64-12.0-devel/toolchain/x86_64-libreelec-linux-gnu/sysroot/usr/include/libxml2/libxml/parser.h:854:16: note: in expansion of macro 'XML_DECLARE_GLOBAL'
  854 | #define XML_OP XML_DECLARE_GLOBAL
      |                ^~~~~~~~~~~~~~~~~~
/var/media/DATA/home-rudi/LibreELEC.tv/build.LibreELEC-Generic.x86_64-12.0-devel/toolchain/x86_64-libreelec-linux-gnu/sysroot/usr/include/libxml2/libxml/parser.h:838:3: note: in expansion of macro 'XML_OP'
  838 |   XML_OP(xmlLoadExtDtdDefaultValue, int, XML_DEPRECATED) \
      |   ^~~~~~
/var/media/DATA/home-rudi/LibreELEC.tv/build.LibreELEC-Generic.x86_64-12.0-devel/toolchain/x86_64-libreelec-linux-gnu/sysroot/usr/include/libxml2/libxml/parser.h:851:3: note: in expansion of macro 'XML_GLOBALS_PARSER_CORE'
  851 |   XML_GLOBALS_PARSER_CORE \
      |   ^~~~~~~~~~~~~~~~~~~~~~~
/var/media/DATA/home-rudi/LibreELEC.tv/build.LibreELEC-Generic.x86_64-12.0-devel/toolchain/x86_64-libreelec-linux-gnu/sysroot/usr/include/libxml2/libxml/parser.h:855:1: note: in expansion of macro 'XML_GLOBALS_PARSER'
  855 | XML_GLOBALS_PARSER
      | ^~~~~~~~~~~~~~~~~~
../src/xml_C14N.c:241:5: warning: 'xmlSubstituteEntitiesDefault' is deprecated [-Wdeprecated-declarations]
  241 |     xmlSubstituteEntitiesDefault(1);
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from ../src/xml_C14N.c:24:
/var/media/DATA/home-rudi/LibreELEC.tv/build.LibreELEC-Generic.x86_64-12.0-devel/toolchain/x86_64-libreelec-linux-gnu/sysroot/usr/include/libxml2/libxml/parser.h:911:17: note: declared here
  911 |                 xmlSubstituteEntitiesDefault(int val);
      |                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
  CC       src/select-usage.o
  CC       src/trans-usage.o
  CC       src/unescape-usage.o
  CC       src/validate-usage.o
../src/xml_ls.c: In function 'xml_print_dir':
../src/xml_ls.c:149:22: warning: the comparison will always evaluate as 'false' for the address of 'd_name' will never be NULL [-Waddress]
  149 |       if ((d->d_name == NULL) || !strcmp(d->d_name, ".") || !strcmp(d->d_name, ".."))
      |                      ^~
In file included from /var/media/DATA/home-rudi/LibreELEC.tv/build.LibreELEC-Generic.x86_64-12.0-devel/toolchain/x86_64-libreelec-linux-gnu/sysroot/usr/include/dirent.h:61,
                 from ../src/xml_ls.c:33:
/var/media/DATA/home-rudi/LibreELEC.tv/build.LibreELEC-Generic.x86_64-12.0-devel/toolchain/x86_64-libreelec-linux-gnu/sysroot/usr/include/bits/dirent.h:33:10: note: 'd_name' declared here
   33 |     char d_name[256];           /* We must not include limits.h! */
      |          ^~~~~~
../src/xml_edit.c: In function 'edOutput':
../src/xml_edit.c:561:9: warning: implicit declaration of function 'xmlCleanupGlobals'; did you mean 'xmlCleanupThreads'? [-Wimplicit-function-declaration]
  561 |         xmlCleanupGlobals();
      |         ^~~~~~~~~~~~~~~~~
      |         xmlCleanupThreads
../src/xml_edit.c: In function 'edMain':
../src/xml_edit.c:738:5: warning: 'xmlKeepBlanksDefault' is deprecated [-Wdeprecated-declarations]
  738 |     xmlKeepBlanksDefault(0);
      |     ^~~~~~~~~~~~~~~~~~~~
In file included from /var/media/DATA/home-rudi/LibreELEC.tv/build.LibreELEC-Generic.x86_64-12.0-devel/toolchain/x86_64-libreelec-linux-gnu/sysroot/usr/include/libxml2/libxml/HTMLparser.h:16,
                 from /var/media/DATA/home-rudi/LibreELEC.tv/build.LibreELEC-Generic.x86_64-12.0-devel/toolchain/x86_64-libreelec-linux-gnu/sysroot/usr/include/libxml2/libxml/HTMLtree.h:17,
                 from ../src/xml_edit.c:38:
/var/media/DATA/home-rudi/LibreELEC.tv/build.LibreELEC-Generic.x86_64-12.0-devel/toolchain/x86_64-libreelec-linux-gnu/sysroot/usr/include/libxml2/libxml/parser.h:915:17: note: declared here
  915 |                 xmlKeepBlanksDefault    (int val);
      |                 ^~~~~~~~~~~~~~~~~~~~
../src/xml_edit.c:740:5: warning: 'xmlKeepBlanksDefault' is deprecated [-Wdeprecated-declarations]
  740 |     if ((!g_ops.noblanks) || g_ops.preserveFormat) xmlKeepBlanksDefault(1);
      |     ^~
/var/media/DATA/home-rudi/LibreELEC.tv/build.LibreELEC-Generic.x86_64-12.0-devel/toolchain/x86_64-libreelec-linux-gnu/sysroot/usr/include/libxml2/libxml/parser.h:915:17: note: declared here
  915 |                 xmlKeepBlanksDefault    (int val);
      |                 ^~~~~~~~~~~~~~~~~~~~
../src/xml_edit.c: In function 'edInsert':
../src/xml_edit.c:371:9: warning: 'node' may be used uninitialized [-Wmaybe-uninitialized]
  371 |         xmlXPathNodeSetAdd(previous_insertion, node);
      |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../src/xml_edit.c:339:20: note: 'node' was declared here
  339 |         xmlNodePtr node;
      |                    ^~~~
In file included from /var/media/DATA/home-rudi/LibreELEC.tv/build.LibreELEC-Generic.x86_64-12.0-devel/toolchain/x86_64-libreelec-linux-gnu/sysroot/usr/include/libxml2/libxml/tree.h:18,
                 from ../src/xml_select.c:38:
../src/xml_select.c: In function 'selPrepareXslt':
/var/media/DATA/home-rudi/LibreELEC.tv/build.LibreELEC-Generic.x86_64-12.0-devel/toolchain/x86_64-libreelec-linux-gnu/sysroot/usr/include/libxml2/libxml/xmlstring.h:35:18: warning: pointer targets in passing argument 3 of 'xmlStrPrintf' differ in signedness [-Wpointer-sign]
   35 | #define BAD_CAST (xmlChar *)
../src/xml_select.c:552:55: note: in expansion of macro 'BAD_CAST'
  552 |                 xmlStrPrintf(num_buf, sizeof num_buf, BAD_CAST "t%d", t);
      |                                                       ^~~~~~~~
/var/media/DATA/home-rudi/LibreELEC.tv/build.LibreELEC-Generic.x86_64-12.0-devel/toolchain/x86_64-libreelec-linux-gnu/sysroot/usr/include/libxml2/libxml/xmlstring.h:100:54: note: expected 'const char *' but argument is of type 'xmlChar *' {aka 'unsigned char *'}
  100 |                                          const char *msg,
      |                                          ~~~~~~~~~~~~^~~
../src/xml_validate.c: In function 'valMain':
../src/xml_validate.c:300:43: warning: passing argument 2 of 'xmlSetStructuredErrorFunc' from incompatible pointer type [-Wincompatible-pointer-types]
  300 |     xmlSetStructuredErrorFunc(&errorInfo, reportError);
      |                                           ^~~~~~~~~~~
      |                                           |
      |                                           void (*)(void *, xmlError *) {aka void (*)(void *, struct _xmlError *)}
In file included from /var/media/DATA/home-rudi/LibreELEC.tv/build.LibreELEC-Generic.x86_64-12.0-devel/toolchain/x86_64-libreelec-linux-gnu/sysroot/usr/include/libxml2/libxml/xpath.h:26,
                 from ../src/xmlstar.h:15,
                 from ../src/xml_validate.c:35:
/var/media/DATA/home-rudi/LibreELEC.tv/build.LibreELEC-Generic.x86_64-12.0-devel/toolchain/x86_64-libreelec-linux-gnu/sysroot/usr/include/libxml2/libxml/xmlerror.h:898:57: note: expected 'xmlStructuredErrorFunc' {aka 'void (*)(void *, const struct _xmlError *)'} but argument is of type 'void (*)(void *, xmlError *)' {aka 'void (*)(void *, struct _xmlError *)'}
  898 |                                  xmlStructuredErrorFunc handler);
      |                                  ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
../src/xml_validate.c:301:5: warning: 'xmlLineNumbersDefault' is deprecated [-Wdeprecated-declarations]
  301 |     xmlLineNumbersDefault(1);
      |     ^~~~~~~~~~~~~~~~~~~~~
In file included from /var/media/DATA/home-rudi/LibreELEC.tv/build.LibreELEC-Generic.x86_64-12.0-devel/toolchain/x86_64-libreelec-linux-gnu/sysroot/usr/include/libxml2/libxml/xmlreader.h:22,
                 from ../src/xmlstar.h:17:
/var/media/DATA/home-rudi/LibreELEC.tv/build.LibreELEC-Generic.x86_64-12.0-devel/toolchain/x86_64-libreelec-linux-gnu/sysroot/usr/include/libxml2/libxml/parser.h:925:17: note: declared here
  925 |                 xmlLineNumbersDefault   (int val);
      |                 ^~~~~~~~~~~~~~~~~~~~~
../src/xml_validate.c:493:9: warning: 'xmlRelaxNGCleanupTypes' is deprecated [-Wdeprecated-declarations]
  493 |         xmlRelaxNGCleanupTypes();
      |         ^~~~~~~~~~~~~~~~~~~~~~
In file included from /var/media/DATA/home-rudi/LibreELEC.tv/build.LibreELEC-Generic.x86_64-12.0-devel/toolchain/x86_64-libreelec-linux-gnu/sysroot/usr/include/libxml2/libxml/xmlreader.h:18:
/var/media/DATA/home-rudi/LibreELEC.tv/build.LibreELEC-Generic.x86_64-12.0-devel/toolchain/x86_64-libreelec-linux-gnu/sysroot/usr/include/libxml2/libxml/relaxng.h:123:21: note: declared here
  123 |                     xmlRelaxNGCleanupTypes      (void);
      |                     ^~~~~~~~~~~~~~~~~~~~~~
../src/xml_validate.c:494:9: warning: 'xmlSchemaCleanupTypes' is deprecated [-Wdeprecated-declarations]
  494 |         xmlSchemaCleanupTypes();
      |         ^~~~~~~~~~~~~~~~~~~~~
In file included from ../src/xml_validate.c:40:
/var/media/DATA/home-rudi/LibreELEC.tv/build.LibreELEC-Generic.x86_64-12.0-devel/toolchain/x86_64-libreelec-linux-gnu/sysroot/usr/include/libxml2/libxml/xmlschemastypes.h:37:17: note: declared here
   37 |                 xmlSchemaCleanupTypes           (void);
      |                 ^~~~~~~~~~~~~~~~~~~~~
../src/trans.c: In function 'xsltInitLibXml':
../src/trans.c:46:5: warning: 'xmlInitMemory' is deprecated [-Wdeprecated-declarations]
   46 |     xmlInitMemory();
      |     ^~~~~~~~~~~~~
In file included from ../src/trans.h:32,
                 from ../src/trans.c:4:
/var/media/DATA/home-rudi/LibreELEC.tv/build.LibreELEC-Generic.x86_64-12.0-devel/toolchain/x86_64-libreelec-linux-gnu/sysroot/usr/include/libxml2/libxml/xmlmemory.h:133:9: note: declared here
  133 |         xmlInitMemory   (void);
      |         ^~~~~~~~~~~~~
../src/trans.c:53:5: warning: 'xmlLineNumbersDefault' is deprecated [-Wdeprecated-declarations]
   53 |     xmlLineNumbersDefault(1);
      |     ^~~~~~~~~~~~~~~~~~~~~
In file included from /var/media/DATA/home-rudi/LibreELEC.tv/build.LibreELEC-Generic.x86_64-12.0-devel/toolchain/x86_64-libreelec-linux-gnu/sysroot/usr/include/libxml2/libxml/HTMLparser.h:16,
                 from /var/media/DATA/home-rudi/LibreELEC.tv/build.LibreELEC-Generic.x86_64-12.0-devel/toolchain/x86_64-libreelec-linux-gnu/sysroot/usr/include/libxml2/libxml/HTMLtree.h:17,
                 from ../src/trans.h:35:
/var/media/DATA/home-rudi/LibreELEC.tv/build.LibreELEC-Generic.x86_64-12.0-devel/toolchain/x86_64-libreelec-linux-gnu/sysroot/usr/include/libxml2/libxml/parser.h:925:17: note: declared here
  925 |                 xmlLineNumbersDefault   (int val);
      |                 ^~~~~~~~~~~~~~~~~~~~~
../src/trans.c:71:5: warning: 'xmlKeepBlanksDefault' is deprecated [-Wdeprecated-declarations]
   71 |     xmlKeepBlanksDefault(1);
      |     ^~~~~~~~~~~~~~~~~~~~
/var/media/DATA/home-rudi/LibreELEC.tv/build.LibreELEC-Generic.x86_64-12.0-devel/toolchain/x86_64-libreelec-linux-gnu/sysroot/usr/include/libxml2/libxml/parser.h:915:17: note: declared here
  915 |                 xmlKeepBlanksDefault    (int val);
      |                 ^~~~~~~~~~~~~~~~~~~~
../src/trans.c:72:5: warning: 'xmlKeepBlanksDefault' is deprecated [-Wdeprecated-declarations]
   72 |     if (ops->noblanks)  xmlKeepBlanksDefault(0);
      |     ^~
/var/media/DATA/home-rudi/LibreELEC.tv/build.LibreELEC-Generic.x86_64-12.0-devel/toolchain/x86_64-libreelec-linux-gnu/sysroot/usr/include/libxml2/libxml/parser.h:915:17: note: declared here
  915 |                 xmlKeepBlanksDefault    (int val);
      |                 ^~~~~~~~~~~~~~~~~~~~
../src/trans.c:73:5: warning: 'xmlPedanticParserDefault' is deprecated [-Wdeprecated-declarations]
   73 |     xmlPedanticParserDefault(0);
      |     ^~~~~~~~~~~~~~~~~~~~~~~~
/var/media/DATA/home-rudi/LibreELEC.tv/build.LibreELEC-Generic.x86_64-12.0-devel/toolchain/x86_64-libreelec-linux-gnu/sysroot/usr/include/libxml2/libxml/parser.h:921:17: note: declared here
  921 |                 xmlPedanticParserDefault(int val);
      |                 ^~~~~~~~~~~~~~~~~~~~~~~~
../src/trans.c:75:5: warning: '__xmlGetWarningsDefaultValue' is deprecated [-Wdeprecated-declarations]
   75 |     xmlGetWarningsDefaultValue = 1;
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /var/media/DATA/home-rudi/LibreELEC.tv/build.LibreELEC-Generic.x86_64-12.0-devel/toolchain/x86_64-libreelec-linux-gnu/sysroot/usr/include/libxml2/libxml/xmlmemory.h:16:
/var/media/DATA/home-rudi/LibreELEC.tv/build.LibreELEC-Generic.x86_64-12.0-devel/toolchain/x86_64-libreelec-linux-gnu/sysroot/usr/include/libxml2/libxml/xmlversion.h:499:27: note: declared here
  499 |     attrs XMLPUBFUN type *__##name(void);
      |                           ^~
/var/media/DATA/home-rudi/LibreELEC.tv/build.LibreELEC-Generic.x86_64-12.0-devel/toolchain/x86_64-libreelec-linux-gnu/sysroot/usr/include/libxml2/libxml/parser.h:854:16: note: in expansion of macro 'XML_DECLARE_GLOBAL'
  854 | #define XML_OP XML_DECLARE_GLOBAL
      |                ^~~~~~~~~~~~~~~~~~
/var/media/DATA/home-rudi/LibreELEC.tv/build.LibreELEC-Generic.x86_64-12.0-devel/toolchain/x86_64-libreelec-linux-gnu/sysroot/usr/include/libxml2/libxml/parser.h:835:3: note: in expansion of macro 'XML_OP'
  835 |   XML_OP(xmlGetWarningsDefaultValue, int, XML_DEPRECATED) \
      |   ^~~~~~
/var/media/DATA/home-rudi/LibreELEC.tv/build.LibreELEC-Generic.x86_64-12.0-devel/toolchain/x86_64-libreelec-linux-gnu/sysroot/usr/include/libxml2/libxml/parser.h:851:3: note: in expansion of macro 'XML_GLOBALS_PARSER_CORE'
  851 |   XML_GLOBALS_PARSER_CORE \
      |   ^~~~~~~~~~~~~~~~~~~~~~~
/var/media/DATA/home-rudi/LibreELEC.tv/build.LibreELEC-Generic.x86_64-12.0-devel/toolchain/x86_64-libreelec-linux-gnu/sysroot/usr/include/libxml2/libxml/parser.h:855:1: note: in expansion of macro 'XML_GLOBALS_PARSER'
  855 | XML_GLOBALS_PARSER
      | ^~~~~~~~~~~~~~~~~~
../src/trans.c:77:5: warning: '__xmlLoadExtDtdDefaultValue' is deprecated [-Wdeprecated-declarations]
   77 |     xmlLoadExtDtdDefaultValue = 1;
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~
/var/media/DATA/home-rudi/LibreELEC.tv/build.LibreELEC-Generic.x86_64-12.0-devel/toolchain/x86_64-libreelec-linux-gnu/sysroot/usr/include/libxml2/libxml/xmlversion.h:499:27: note: declared here
  499 |     attrs XMLPUBFUN type *__##name(void);
      |                           ^~
/var/media/DATA/home-rudi/LibreELEC.tv/build.LibreELEC-Generic.x86_64-12.0-devel/toolchain/x86_64-libreelec-linux-gnu/sysroot/usr/include/libxml2/libxml/parser.h:854:16: note: in expansion of macro 'XML_DECLARE_GLOBAL'
  854 | #define XML_OP XML_DECLARE_GLOBAL
      |                ^~~~~~~~~~~~~~~~~~
/var/media/DATA/home-rudi/LibreELEC.tv/build.LibreELEC-Generic.x86_64-12.0-devel/toolchain/x86_64-libreelec-linux-gnu/sysroot/usr/include/libxml2/libxml/parser.h:838:3: note: in expansion of macro 'XML_OP'
  838 |   XML_OP(xmlLoadExtDtdDefaultValue, int, XML_DEPRECATED) \
      |   ^~~~~~
/var/media/DATA/home-rudi/LibreELEC.tv/build.LibreELEC-Generic.x86_64-12.0-devel/toolchain/x86_64-libreelec-linux-gnu/sysroot/usr/include/libxml2/libxml/parser.h:851:3: note: in expansion of macro 'XML_GLOBALS_PARSER_CORE'
  851 |   XML_GLOBALS_PARSER_CORE \
      |   ^~~~~~~~~~~~~~~~~~~~~~~
/var/media/DATA/home-rudi/LibreELEC.tv/build.LibreELEC-Generic.x86_64-12.0-devel/toolchain/x86_64-libreelec-linux-gnu/sysroot/usr/include/libxml2/libxml/parser.h:855:1: note: in expansion of macro 'XML_GLOBALS_PARSER'
  855 | XML_GLOBALS_PARSER
      | ^~~~~~~~~~~~~~~~~~
../src/trans.c:84:9: warning: '__xmlLoadExtDtdDefaultValue' is deprecated [-Wdeprecated-declarations]
   84 |         xmlLoadExtDtdDefaultValue = XML_DETECT_IDS | XML_COMPLETE_ATTRS;
      |         ^~~~~~~~~~~~~~~~~~~~~~~~~
/var/media/DATA/home-rudi/LibreELEC.tv/build.LibreELEC-Generic.x86_64-12.0-devel/toolchain/x86_64-libreelec-linux-gnu/sysroot/usr/include/libxml2/libxml/xmlversion.h:499:27: note: declared here
  499 |     attrs XMLPUBFUN type *__##name(void);
      |                           ^~
/var/media/DATA/home-rudi/LibreELEC.tv/build.LibreELEC-Generic.x86_64-12.0-devel/toolchain/x86_64-libreelec-linux-gnu/sysroot/usr/include/libxml2/libxml/parser.h:854:16: note: in expansion of macro 'XML_DECLARE_GLOBAL'
  854 | #define XML_OP XML_DECLARE_GLOBAL
      |                ^~~~~~~~~~~~~~~~~~
/var/media/DATA/home-rudi/LibreELEC.tv/build.LibreELEC-Generic.x86_64-12.0-devel/toolchain/x86_64-libreelec-linux-gnu/sysroot/usr/include/libxml2/libxml/parser.h:838:3: note: in expansion of macro 'XML_OP'
  838 |   XML_OP(xmlLoadExtDtdDefaultValue, int, XML_DEPRECATED) \
      |   ^~~~~~
/var/media/DATA/home-rudi/LibreELEC.tv/build.LibreELEC-Generic.x86_64-12.0-devel/toolchain/x86_64-libreelec-linux-gnu/sysroot/usr/include/libxml2/libxml/parser.h:851:3: note: in expansion of macro 'XML_GLOBALS_PARSER_CORE'
  851 |   XML_GLOBALS_PARSER_CORE \
      |   ^~~~~~~~~~~~~~~~~~~~~~~
/var/media/DATA/home-rudi/LibreELEC.tv/build.LibreELEC-Generic.x86_64-12.0-devel/toolchain/x86_64-libreelec-linux-gnu/sysroot/usr/include/libxml2/libxml/parser.h:855:1: note: in expansion of macro 'XML_GLOBALS_PARSER'
  855 | XML_GLOBALS_PARSER
      | ^~~~~~~~~~~~~~~~~~
../src/trans.c:88:9: warning: '__xmlLoadExtDtdDefaultValue' is deprecated [-Wdeprecated-declarations]
   88 |         xmlLoadExtDtdDefaultValue = 0;
      |         ^~~~~~~~~~~~~~~~~~~~~~~~~
/var/media/DATA/home-rudi/LibreELEC.tv/build.LibreELEC-Generic.x86_64-12.0-devel/toolchain/x86_64-libreelec-linux-gnu/sysroot/usr/include/libxml2/libxml/xmlversion.h:499:27: note: declared here
  499 |     attrs XMLPUBFUN type *__##name(void);
      |                           ^~
/var/media/DATA/home-rudi/LibreELEC.tv/build.LibreELEC-Generic.x86_64-12.0-devel/toolchain/x86_64-libreelec-linux-gnu/sysroot/usr/include/libxml2/libxml/parser.h:854:16: note: in expansion of macro 'XML_DECLARE_GLOBAL'
  854 | #define XML_OP XML_DECLARE_GLOBAL
      |                ^~~~~~~~~~~~~~~~~~
/var/media/DATA/home-rudi/LibreELEC.tv/build.LibreELEC-Generic.x86_64-12.0-devel/toolchain/x86_64-libreelec-linux-gnu/sysroot/usr/include/libxml2/libxml/parser.h:838:3: note: in expansion of macro 'XML_OP'
  838 |   XML_OP(xmlLoadExtDtdDefaultValue, int, XML_DEPRECATED) \
      |   ^~~~~~
/var/media/DATA/home-rudi/LibreELEC.tv/build.LibreELEC-Generic.x86_64-12.0-devel/toolchain/x86_64-libreelec-linux-gnu/sysroot/usr/include/libxml2/libxml/parser.h:851:3: note: in expansion of macro 'XML_GLOBALS_PARSER_CORE'
  851 |   XML_GLOBALS_PARSER_CORE \
      |   ^~~~~~~~~~~~~~~~~~~~~~~
/var/media/DATA/home-rudi/LibreELEC.tv/build.LibreELEC-Generic.x86_64-12.0-devel/toolchain/x86_64-libreelec-linux-gnu/sysroot/usr/include/libxml2/libxml/parser.h:855:1: note: in expansion of macro 'XML_GLOBALS_PARSER'
  855 | XML_GLOBALS_PARSER
      | ^~~~~~~~~~~~~~~~~~
../src/trans.c: In function 'xsltRun':
../src/trans.c:229:35: error: 'xmlIndentTreeOutput' undeclared (first use in this function)
  229 |             if (cur->indent == 1) xmlIndentTreeOutput = 1;
      |                                   ^~~~~~~~~~~~~~~~~~~
../src/trans.c:229:35: note: each undeclared identifier is reported only once for each function it appears in
make[1]: *** [Makefile:936: src/trans.o] Error 1
make[1]: *** Waiting for unfinished jobs....
../src/xml_format.c: In function 'foInitLibXml':
../src/xml_format.c:114:5: warning: 'xmlInitMemory' is deprecated [-Wdeprecated-declarations]
  114 |     xmlInitMemory();
      |     ^~~~~~~~~~~~~
In file included from ../src/xml_format.c:35:
/var/media/DATA/home-rudi/LibreELEC.tv/build.LibreELEC-Generic.x86_64-12.0-devel/toolchain/x86_64-libreelec-linux-gnu/sysroot/usr/include/libxml2/libxml/xmlmemory.h:133:9: note: declared here
  133 |         xmlInitMemory   (void);
      |         ^~~~~~~~~~~~~
../src/xml_format.c:121:5: warning: 'xmlLineNumbersDefault' is deprecated [-Wdeprecated-declarations]
  121 |     xmlLineNumbersDefault(1);
      |     ^~~~~~~~~~~~~~~~~~~~~
In file included from /var/media/DATA/home-rudi/LibreELEC.tv/build.LibreELEC-Generic.x86_64-12.0-devel/toolchain/x86_64-libreelec-linux-gnu/sysroot/usr/include/libxml2/libxml/HTMLparser.h:16,
                 from /var/media/DATA/home-rudi/LibreELEC.tv/build.LibreELEC-Generic.x86_64-12.0-devel/toolchain/x86_64-libreelec-linux-gnu/sysroot/usr/include/libxml2/libxml/HTMLtree.h:17,
                 from ../src/xml_format.c:38:
/var/media/DATA/home-rudi/LibreELEC.tv/build.LibreELEC-Generic.x86_64-12.0-devel/toolchain/x86_64-libreelec-linux-gnu/sysroot/usr/include/libxml2/libxml/parser.h:925:17: note: declared here
  925 |                 xmlLineNumbersDefault   (int val);
      |                 ^~~~~~~~~~~~~~~~~~~~~
../src/xml_format.c:123:5: warning: 'xmlSubstituteEntitiesDefault' is deprecated [-Wdeprecated-declarations]
  123 |     xmlSubstituteEntitiesDefault(1);
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/var/media/DATA/home-rudi/LibreELEC.tv/build.LibreELEC-Generic.x86_64-12.0-devel/toolchain/x86_64-libreelec-linux-gnu/sysroot/usr/include/libxml2/libxml/parser.h:911:17: note: declared here
  911 |                 xmlSubstituteEntitiesDefault(int val);
      |                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
../src/xml_format.c:124:5: warning: 'xmlKeepBlanksDefault' is deprecated [-Wdeprecated-declarations]
  124 |     xmlKeepBlanksDefault(0);
      |     ^~~~~~~~~~~~~~~~~~~~
/var/media/DATA/home-rudi/LibreELEC.tv/build.LibreELEC-Generic.x86_64-12.0-devel/toolchain/x86_64-libreelec-linux-gnu/sysroot/usr/include/libxml2/libxml/parser.h:915:17: note: declared here
  915 |                 xmlKeepBlanksDefault    (int val);
      |                 ^~~~~~~~~~~~~~~~~~~~
../src/xml_format.c:125:5: warning: 'xmlPedanticParserDefault' is deprecated [-Wdeprecated-declarations]
  125 |     xmlPedanticParserDefault(0);
      |     ^~~~~~~~~~~~~~~~~~~~~~~~
/var/media/DATA/home-rudi/LibreELEC.tv/build.LibreELEC-Generic.x86_64-12.0-devel/toolchain/x86_64-libreelec-linux-gnu/sysroot/usr/include/libxml2/libxml/parser.h:921:17: note: declared here
  921 |                 xmlPedanticParserDefault(int val);
      |                 ^~~~~~~~~~~~~~~~~~~~~~~~
../src/xml_format.c:127:5: warning: '__xmlGetWarningsDefaultValue' is deprecated [-Wdeprecated-declarations]
  127 |     xmlGetWarningsDefaultValue = 1;
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /var/media/DATA/home-rudi/LibreELEC.tv/build.LibreELEC-Generic.x86_64-12.0-devel/toolchain/x86_64-libreelec-linux-gnu/sysroot/usr/include/libxml2/libxml/xmlmemory.h:16:
/var/media/DATA/home-rudi/LibreELEC.tv/build.LibreELEC-Generic.x86_64-12.0-devel/toolchain/x86_64-libreelec-linux-gnu/sysroot/usr/include/libxml2/libxml/xmlversion.h:499:27: note: declared here
  499 |     attrs XMLPUBFUN type *__##name(void);
      |                           ^~
/var/media/DATA/home-rudi/LibreELEC.tv/build.LibreELEC-Generic.x86_64-12.0-devel/toolchain/x86_64-libreelec-linux-gnu/sysroot/usr/include/libxml2/libxml/parser.h:854:16: note: in expansion of macro 'XML_DECLARE_GLOBAL'
  854 | #define XML_OP XML_DECLARE_GLOBAL
      |                ^~~~~~~~~~~~~~~~~~
/var/media/DATA/home-rudi/LibreELEC.tv/build.LibreELEC-Generic.x86_64-12.0-devel/toolchain/x86_64-libreelec-linux-gnu/sysroot/usr/include/libxml2/libxml/parser.h:835:3: note: in expansion of macro 'XML_OP'
  835 |   XML_OP(xmlGetWarningsDefaultValue, int, XML_DEPRECATED) \
      |   ^~~~~~
/var/media/DATA/home-rudi/LibreELEC.tv/build.LibreELEC-Generic.x86_64-12.0-devel/toolchain/x86_64-libreelec-linux-gnu/sysroot/usr/include/libxml2/libxml/parser.h:851:3: note: in expansion of macro 'XML_GLOBALS_PARSER_CORE'
  851 |   XML_GLOBALS_PARSER_CORE \
      |   ^~~~~~~~~~~~~~~~~~~~~~~
/var/media/DATA/home-rudi/LibreELEC.tv/build.LibreELEC-Generic.x86_64-12.0-devel/toolchain/x86_64-libreelec-linux-gnu/sysroot/usr/include/libxml2/libxml/parser.h:855:1: note: in expansion of macro 'XML_GLOBALS_PARSER'
  855 | XML_GLOBALS_PARSER
      | ^~~~~~~~~~~~~~~~~~
../src/xml_format.c:128:5: warning: '__xmlDoValidityCheckingDefaultValue' is deprecated [-Wdeprecated-declarations]
  128 |     xmlDoValidityCheckingDefaultValue = 0;
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/var/media/DATA/home-rudi/LibreELEC.tv/build.LibreELEC-Generic.x86_64-12.0-devel/toolchain/x86_64-libreelec-linux-gnu/sysroot/usr/include/libxml2/libxml/xmlversion.h:499:27: note: declared here
  499 |     attrs XMLPUBFUN type *__##name(void);
      |                           ^~
/var/media/DATA/home-rudi/LibreELEC.tv/build.LibreELEC-Generic.x86_64-12.0-devel/toolchain/x86_64-libreelec-linux-gnu/sysroot/usr/include/libxml2/libxml/parser.h:854:16: note: in expansion of macro 'XML_DECLARE_GLOBAL'
  854 | #define XML_OP XML_DECLARE_GLOBAL
      |                ^~~~~~~~~~~~~~~~~~
/var/media/DATA/home-rudi/LibreELEC.tv/build.LibreELEC-Generic.x86_64-12.0-devel/toolchain/x86_64-libreelec-linux-gnu/sysroot/usr/include/libxml2/libxml/parser.h:834:3: note: in expansion of macro 'XML_OP'
  834 |   XML_OP(xmlDoValidityCheckingDefaultValue, int, XML_DEPRECATED) \
      |   ^~~~~~
/var/media/DATA/home-rudi/LibreELEC.tv/build.LibreELEC-Generic.x86_64-12.0-devel/toolchain/x86_64-libreelec-linux-gnu/sysroot/usr/include/libxml2/libxml/parser.h:851:3: note: in expansion of macro 'XML_GLOBALS_PARSER_CORE'
  851 |   XML_GLOBALS_PARSER_CORE \
      |   ^~~~~~~~~~~~~~~~~~~~~~~
/var/media/DATA/home-rudi/LibreELEC.tv/build.LibreELEC-Generic.x86_64-12.0-devel/toolchain/x86_64-libreelec-linux-gnu/sysroot/usr/include/libxml2/libxml/parser.h:855:1: note: in expansion of macro 'XML_GLOBALS_PARSER'
  855 | XML_GLOBALS_PARSER
      | ^~~~~~~~~~~~~~~~~~
../src/xml_format.c:129:5: warning: '__xmlLoadExtDtdDefaultValue' is deprecated [-Wdeprecated-declarations]
  129 |     xmlLoadExtDtdDefaultValue = 0;
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~
/var/media/DATA/home-rudi/LibreELEC.tv/build.LibreELEC-Generic.x86_64-12.0-devel/toolchain/x86_64-libreelec-linux-gnu/sysroot/usr/include/libxml2/libxml/xmlversion.h:499:27: note: declared here
  499 |     attrs XMLPUBFUN type *__##name(void);
      |                           ^~
/var/media/DATA/home-rudi/LibreELEC.tv/build.LibreELEC-Generic.x86_64-12.0-devel/toolchain/x86_64-libreelec-linux-gnu/sysroot/usr/include/libxml2/libxml/parser.h:854:16: note: in expansion of macro 'XML_DECLARE_GLOBAL'
  854 | #define XML_OP XML_DECLARE_GLOBAL
      |                ^~~~~~~~~~~~~~~~~~
/var/media/DATA/home-rudi/LibreELEC.tv/build.LibreELEC-Generic.x86_64-12.0-devel/toolchain/x86_64-libreelec-linux-gnu/sysroot/usr/include/libxml2/libxml/parser.h:838:3: note: in expansion of macro 'XML_OP'
  838 |   XML_OP(xmlLoadExtDtdDefaultValue, int, XML_DEPRECATED) \
      |   ^~~~~~
/var/media/DATA/home-rudi/LibreELEC.tv/build.LibreELEC-Generic.x86_64-12.0-devel/toolchain/x86_64-libreelec-linux-gnu/sysroot/usr/include/libxml2/libxml/parser.h:851:3: note: in expansion of macro 'XML_GLOBALS_PARSER_CORE'
  851 |   XML_GLOBALS_PARSER_CORE \
      |   ^~~~~~~~~~~~~~~~~~~~~~~
/var/media/DATA/home-rudi/LibreELEC.tv/build.LibreELEC-Generic.x86_64-12.0-devel/toolchain/x86_64-libreelec-linux-gnu/sysroot/usr/include/libxml2/libxml/parser.h:855:1: note: in expansion of macro 'XML_GLOBALS_PARSER'
  855 | XML_GLOBALS_PARSER
      | ^~~~~~~~~~~~~~~~~~
../src/xml_format.c:131:5: error: 'xmlTreeIndentString' undeclared (first use in this function)
  131 |     xmlTreeIndentString = NULL;
      |     ^~~~~~~~~~~~~~~~~~~
../src/xml_format.c:131:5: note: each undeclared identifier is reported only once for each function it appears in
../src/xml_format.c:134:9: error: 'xmlIndentTreeOutput' undeclared (first use in this function)
  134 |         xmlIndentTreeOutput = 1;
      |         ^~~~~~~~~~~~~~~~~~~
make[1]: *** [Makefile:936: src/xml_format.o] Error 1
../src/xml.c: In function 'main':
../src/xml.c:300:43: warning: passing argument 2 of 'xmlSetStructuredErrorFunc' from incompatible pointer type [-Wincompatible-pointer-types]
  300 |     xmlSetStructuredErrorFunc(&errorInfo, reportError);
      |                                           ^~~~~~~~~~~
      |                                           |
      |                                           void (*)(void *, xmlError *) {aka void (*)(void *, struct _xmlError *)}
In file included from /var/media/DATA/home-rudi/LibreELEC.tv/build.LibreELEC-Generic.x86_64-12.0-devel/toolchain/x86_64-libreelec-linux-gnu/sysroot/usr/include/libxml2/libxml/xpath.h:26,
                 from ../src/xmlstar.h:15,
                 from ../src/xml.c:46:
/var/media/DATA/home-rudi/LibreELEC.tv/build.LibreELEC-Generic.x86_64-12.0-devel/toolchain/x86_64-libreelec-linux-gnu/sysroot/usr/include/libxml2/libxml/xmlerror.h:898:57: note: expected 'xmlStructuredErrorFunc' {aka 'void (*)(void *, const struct _xmlError *)'} but argument is of type 'void (*)(void *, xmlError *)' {aka 'void (*)(void *, struct _xmlError *)'}
  898 |                                  xmlStructuredErrorFunc handler);
      |                                  ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
make[1]: Leaving directory '/var/media/DATA/home-rudi/LibreELEC.tv/build.LibreELEC-Generic.x86_64-12.0-devel/build/xmlstarlet-1.6.8/.x86_64-libreelec-linux-gnu'

xml file content replacement form variable value

it seems its very complex to insert xml content variable from shell script to a specific portion of xml based on the condition which satisfying

I have followed many threads in internet and couldn't find any solution to fulfill my requirement here.

HEADER=$(cat <<EOF
<policies>
EOF)

FOOTER==$(cat <<EOF
</policies>
EOF)
IN_IP_FILTER=$(cat <<EOF
    <inbound>
        <base />
        <ip-filter action="allow">
            <address-range from="$ipAddressesFrom" to="$ipAddressesTo" />
        </ip-filter>
    </inbound>
EOF)

################Variables##################
source parse_yaml.sh
eval $(parse_yaml sample2.yaml policy)

echo ".............Eval Result..............................."
for f in $policy_ ; do eval echo \$f \$${f}_ ; done
echo "............Eval Result................................"
echo " ********policy is ************ "
echo "{$IP_FILTER}"

for f in $policy_ ; do
  if [[ $(eval echo \$${f}_name) == "ipfilter" ]]; then
    echo " given policy name is ipfilter "
    for g in $(eval echo \$${f}_session_); do
      if [[ $(eval echo \$${g}) == "inbound" ]]; then
      echo "add the add above Ipfilter string to the inbound session of xml"
      echo "${HEADER}" >> result_$(eval echo \$${f}_name).xml
      echo "${IN_IP_FILTER}" >> result_$(eval echo \$${f}_name).xml
      fi
      if [[ $(eval echo \$${g}) == "outbound" ]]; then
      echo "add the add above Ipfilter string to the outbound session of xml"
      fi
      if [[ $(eval echo \$${g}) == "backend" ]]; then
      echo "add the add above Ipfilter string to the backend session of xml"
      fi
    done

The file which need to customized based on the condition is as below , but need to replace only the content which is satisfying from the condition.

<policies>
    <inbound>
        <base />
		 $(ip_filter)
         $(rate-limit-by_ip)
		 $(rate-limit-by_subkey)
		 $(rate-limit-by_DevID)
		 $(rate-limit-by_ip)+$(rate-limit-by_DevID)
    </inbound>
    <backend>
        <base />
		 $(ip_filter)
         $(rate-limit-by_ip)
		 $(rate-limit-by_subkey)
		 $(rate-limit-by_DevID)
		 $(rate-limit-by_ip)+$(rate-limit-by_DevID)
    </backend>
    <outbound>
        <base />
		 $(ip_filter)
         $(rate-limit-by_ip)
		 $(rate-limit-by_subkey)
		 $(rate-limit-by_DevID)
		 $(rate-limit-by_ip)+$(rate-limit-by_DevID)
    </outbound>
    <on-error>
        <base />
		 $(rate-limit-by-ip_error)
		 $(rate-limit-by_DevID_error) 
    </on-error>
</policies>

Secutiry vulnerabilities in the shared libraries invoked by python code of xmlstarlet. Could you help upgrade to patch versions?

Hi, @dimitern, I'd like to report a vulnerability issue in xmlstarlet_1.6.7.

Dependency Graph between Python and Shared Libraries

image

Issue Description

As shown in the above dependency graph, xmlstarlet_1.6.7 directly or transitively depends on 7 C libraries (.so). However, I noticed that two of these C libraries are vulnerable, containing the following CVEs:
libxslt-016dc083.so.1.1.26 from libxslt(version: <=1.1.29) exposed 7 vulnerabilities:
CVE-2017-5029, CVE-2019-11068, CVE-2015-9019, CVE-2016-4609, CVE-2016-4610, CVE-2016-4607, CVE-2016-4608
libxml2-e04a0072.so.2.7.6 from libxml2(version:<=2.9.1) exposed 44 vulnerabilities:
CVE-2016-4658, CVE-2016-4483, CVE-2016-3627, CVE-2016-1839, CVE-2016-2073, CVE-2016-1838, CVE-2016-1840, CVE-2016-1836, CVE-2015-8242, CVE-2015-8035, CVE-2015-8806, CVE-2015-7500, CVE-2015-7499, CVE-2015-7498, CVE-2015-5312, CVE-2015-7497, CVE-2021-3541, CVE-2021-3537, CVE-2021-3518, CVE-2021-3517, CVE-2021-3516, CVE-2014-3660, CVE-2019-19956, CVE-2018-14404, CVE-2015-8317, CVE-2015-8710, CVE-2015-8241, CVE-2016-9596, CVE-2016-9598 CVE-2017-18258, CVE-2017-5130, CVE-2017-15412, CVE-2017-7375, CVE-2017-7376, CVE-2016-9318, CVE-2016-4448, CVE-2016-4449, CVE-2016-4447, CVE-2016-1834, CVE-2016-1833, CVE-2016-1837, CVE-2016-1762, CVE-2017-16931, CVE-2017-16932

Furthermore, the vulnerable methods in these vulnerable shared libraries can be actually invoked by Python code.
For instance, the following C methods are actually invoked by python code in xmlstarlet, which declared in xmlstarlet_build.py:

# cdef() expects a single string declaring the C types, functions and
# globals needed to use the shared object. It must be in valid C syntax.
FFIBUILDER.cdef(
    """
int c14nMain(int argc, char **argv);
int depyxMain(int argc, char **argv);
int edMain(int argc, char **argv);
int elMain(int argc, char **argv);
int escMain(int argc, char **argv, int escape);
int foMain(int argc, char **argv);
int lsMain(int argc, char **argv);
int pyxMain(int argc, char **argv);
int selMain(int argc, char **argv);
int trMain(int argc, char **argv);
int valMain(int argc, char **argv);
"""
)
...
  • The following call chain starting from int trMain(int argc, char **argv) can reach the vulnerable method int xsltParseStylesheetImport (xsltStylesheetPtr style, xmlNodePtr cur) in libxslt/imports.c reported by CVE-2019-11068 :
call chain -----
trMain() -> xsltRun() -> xsltLoadStylesheetPI() -> xsltParseStylesheetDoc() -> xsltParseStylesheetImportedDoc() -> xsltParseStylesheetProcess() -> xsltParseXSLTStylesheetElem() -> xsltParseStylesheetImport
  • The following call chain starting from int selMain(int argc, char **argv) can reach the vulnerable method xmlNodePtr xsltAddTextString (xsltTransformContextPtr ctxt, xmlNodePtr target, const xmlChar *string, int len) in transform.c reported by CVE-2017-5029 :
call chain -----
selMain() -> xsltInitLibXml() -> exsltRegisterAll() -> exsltCommonRegister() -> xsltDocumentComp() -> xsltNewStylePreComp() -> xsltCopy() -> xsltCopyText() -> xsltAddTextString()
  • The following call chain starting from int foMain(int argc, char **argv) can reach the vulnerable method htmlParseNameComplex (xmlParserCtxtPtr ctxt)in HTMLparser.c reported by CVE-2016-2073 :
call chain -----
foMain() -> foProcess() -> htmlReadFile() -> htmlDoRead() -> htmlParseDocument() -> htmlParsePI() -> htmlParseName() -> htmlParseNameComplex()
  • The following call chain starting from int c14nMain(int argc, char **argv) can reach the vulnerable method xmlNodePtr xmlStringGetNodeList (xmlDocPtr doc, const xmlChar *value)in tree.c reported by CVE-2016-3627 :
call chain -----
c14nMain() -> xmlInitParser() -> xmlDefaultSAXHandlerInit() -> xmlSAXVersion() -> xmlSAX2StartElementNs() -> xmlNewDocNodeEatName() -> xmlStringGetNodeList()

Suggested Vulnerability Patch Versions

libxslt has fixed the vulnerabilities in versions >=1.1.34
libxml2 has fixed the vulnerabilities in version >=2.9.11

Python build tools cannot report vulnerable C libraries, which may induce potential security issues to many downstream Python projects.
As a popular python package (xmlstarlet has 2,554 downloads per month), could you please upgrade the above shared libraries to their patch versions?

Thanks for your help~
Best regards,
Andy

Problem with installation

Hi there,
python version 3.8.5

run command: pip3 install xmlstarlet

Got an error:

Collecting xmlstarlet
  Using cached xmlstarlet-1.6.3.tar.gz (657 kB)
Requirement already satisfied, skipping upgrade: cffi>=1.0.0 in /opt/python38/lib/python3.8/site-packages (from xmlstarlet) (1.14.2)
Requirement already satisfied, skipping upgrade: pycparser in /opt/python38/lib/python3.8/site-packages (from cffi>=1.0.0->xmlstarlet) (2.20)
Building wheels for collected packages: xmlstarlet
  Building wheel for xmlstarlet (setup.py) ... error
  ERROR: Command errored out with exit status 1:
   command: /opt/python38/bin/python3.8 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-jwjvvpi6/xmlstarlet/setup.py'"'"'; __file__='"'"'/tmp/pip-install-jwjvvpi6/xmlstarlet/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d /tmp/pip-wheel-w0i7_0_6
       cwd: /tmp/pip-install-jwjvvpi6/xmlstarlet/
  Complete output (52 lines):
  + cd xmlstarlet/
  + test -f config.h
  + make -j
  Makefile:878: src/.deps/c14n-usage.Po: No such file or directory
  Makefile:879: src/.deps/depyx-usage.Po: No such file or directory
  Makefile:880: src/.deps/edit-usage.Po: No such file or directory
  Makefile:881: src/.deps/elem-usage.Po: No such file or directory
  Makefile:882: src/.deps/escape-usage.Po: No such file or directory
  Makefile:883: src/.deps/format-usage.Po: No such file or directory
  Makefile:884: src/.deps/ls-usage.Po: No such file or directory
  Makefile:885: src/.deps/pyx-usage.Po: No such file or directory
  Makefile:886: src/.deps/select-usage.Po: No such file or directory
  Makefile:887: src/.deps/trans-usage.Po: No such file or directory
  Makefile:888: src/.deps/trans.Po: No such file or directory
  Makefile:889: src/.deps/unescape-usage.Po: No such file or directory
  Makefile:890: src/.deps/usage.Po: No such file or directory
  Makefile:891: src/.deps/validate-usage.Po: No such file or directory
  Makefile:892: src/.deps/xml.Po: No such file or directory
  Makefile:893: src/.deps/xml_C14N.Po: No such file or directory
  Makefile:894: src/.deps/xml_depyx.Po: No such file or directory
  Makefile:895: src/.deps/xml_edit.Po: No such file or directory
  Makefile:896: src/.deps/xml_elem.Po: No such file or directory
  Makefile:897: src/.deps/xml_escape.Po: No such file or directory
  Makefile:898: src/.deps/xml_format.Po: No such file or directory
  Makefile:899: src/.deps/xml_ls.Po: No such file or directory
  Makefile:900: src/.deps/xml_pyx.Po: No such file or directory
  Makefile:901: src/.deps/xml_select.Po: No such file or directory
  Makefile:902: src/.deps/xml_trans.Po: No such file or directory
  Makefile:903: src/.deps/xml_validate.Po: No such file or directory
  make: *** No rule to make target `src/.deps/xml_validate.Po'.  Stop.
  running bdist_wheel
  running build
  running build_py
  creating build
  creating build/lib.linux-x86_64-3.8
  creating build/lib.linux-x86_64-3.8/xmlstarlet
  copying xmlstarlet/__init__.py -> build/lib.linux-x86_64-3.8/xmlstarlet
  copying xmlstarlet/xmlstarlet_build.py -> build/lib.linux-x86_64-3.8/xmlstarlet
  running build_ext
  generating cffi module 'build/temp.linux-x86_64-3.8/xmlstarlet._xmlstarlet.c'
  creating build/temp.linux-x86_64-3.8
  building 'xmlstarlet._xmlstarlet' extension
  creating build/temp.linux-x86_64-3.8/build
  creating build/temp.linux-x86_64-3.8/build/temp.linux-x86_64-3.8
  creating build/temp.linux-x86_64-3.8/xmlstarlet
  creating build/temp.linux-x86_64-3.8/xmlstarlet/src
  gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -I/usr/include -I/usr/include/libxml2 -I/tmp/pip-install-jwjvvpi6/xmlstarlet/xmlstarlet -I/tmp/pip-install-jwjvvpi6/xmlstarlet/xmlstarlet/src -I/opt/python38/include/python3.8 -c build/temp.linux-x86_64-3.8/xmlstarlet._xmlstarlet.c -o build/temp.linux-x86_64-3.8/build/temp.linux-x86_64-3.8/xmlstarlet._xmlstarlet.o
  build/temp.linux-x86_64-3.8/xmlstarlet._xmlstarlet.c:570:10: fatal error: libxml/xmlversion.h: No such file or directory
   #include <libxml/xmlversion.h>
            ^~~~~~~~~~~~~~~~~~~~~
  compilation terminated.
  error: command 'gcc' failed with exit status 1
  ----------------------------------------
  ERROR: Failed building wheel for xmlstarlet
  Running setup.py clean for xmlstarlet
Failed to build xmlstarlet
Installing collected packages: xmlstarlet
    Running setup.py install for xmlstarlet ... error
    ERROR: Command errored out with exit status 1:
     command: /opt/python38/bin/python3.8 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-jwjvvpi6/xmlstarlet/setup.py'"'"'; __file__='"'"'/tmp/pip-install-jwjvvpi6/xmlstarlet/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-f56watal/install-record.txt --single-version-externally-managed --compile --install-headers /opt/python38/include/python3.8/xmlstarlet
         cwd: /tmp/pip-install-jwjvvpi6/xmlstarlet/
    Complete output (52 lines):
    + cd xmlstarlet/
    + test -f config.h
    + make -j
    Makefile:878: src/.deps/c14n-usage.Po: No such file or directory
    Makefile:879: src/.deps/depyx-usage.Po: No such file or directory
    Makefile:880: src/.deps/edit-usage.Po: No such file or directory
    Makefile:881: src/.deps/elem-usage.Po: No such file or directory
    Makefile:882: src/.deps/escape-usage.Po: No such file or directory
    Makefile:883: src/.deps/format-usage.Po: No such file or directory
    Makefile:884: src/.deps/ls-usage.Po: No such file or directory
    Makefile:885: src/.deps/pyx-usage.Po: No such file or directory
    Makefile:886: src/.deps/select-usage.Po: No such file or directory
    Makefile:887: src/.deps/trans-usage.Po: No such file or directory
    Makefile:888: src/.deps/trans.Po: No such file or directory
    Makefile:889: src/.deps/unescape-usage.Po: No such file or directory
    Makefile:890: src/.deps/usage.Po: No such file or directory
    Makefile:891: src/.deps/validate-usage.Po: No such file or directory
    Makefile:892: src/.deps/xml.Po: No such file or directory
    Makefile:893: src/.deps/xml_C14N.Po: No such file or directory
    Makefile:894: src/.deps/xml_depyx.Po: No such file or directory
    Makefile:895: src/.deps/xml_edit.Po: No such file or directory
    Makefile:896: src/.deps/xml_elem.Po: No such file or directory
    Makefile:897: src/.deps/xml_escape.Po: No such file or directory
    Makefile:898: src/.deps/xml_format.Po: No such file or directory
    Makefile:899: src/.deps/xml_ls.Po: No such file or directory
    Makefile:900: src/.deps/xml_pyx.Po: No such file or directory
    Makefile:901: src/.deps/xml_select.Po: No such file or directory
    Makefile:902: src/.deps/xml_trans.Po: No such file or directory
    Makefile:903: src/.deps/xml_validate.Po: No such file or directory
    make: *** No rule to make target `src/.deps/xml_validate.Po'.  Stop.
    running install
    running build
    running build_py
    creating build
    creating build/lib.linux-x86_64-3.8
    creating build/lib.linux-x86_64-3.8/xmlstarlet
    copying xmlstarlet/__init__.py -> build/lib.linux-x86_64-3.8/xmlstarlet
    copying xmlstarlet/xmlstarlet_build.py -> build/lib.linux-x86_64-3.8/xmlstarlet
    running build_ext
    generating cffi module 'build/temp.linux-x86_64-3.8/xmlstarlet._xmlstarlet.c'
    creating build/temp.linux-x86_64-3.8
    building 'xmlstarlet._xmlstarlet' extension
    creating build/temp.linux-x86_64-3.8/build
    creating build/temp.linux-x86_64-3.8/build/temp.linux-x86_64-3.8
    creating build/temp.linux-x86_64-3.8/xmlstarlet
    creating build/temp.linux-x86_64-3.8/xmlstarlet/src
    gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -I/usr/include -I/usr/include/libxml2 -I/tmp/pip-install-jwjvvpi6/xmlstarlet/xmlstarlet -I/tmp/pip-install-jwjvvpi6/xmlstarlet/xmlstarlet/src -I/opt/python38/include/python3.8 -c build/temp.linux-x86_64-3.8/xmlstarlet._xmlstarlet.c -o build/temp.linux-x86_64-3.8/build/temp.linux-x86_64-3.8/xmlstarlet._xmlstarlet.o
    build/temp.linux-x86_64-3.8/xmlstarlet._xmlstarlet.c:570:10: fatal error: libxml/xmlversion.h: No such file or directory
     #include <libxml/xmlversion.h>
              ^~~~~~~~~~~~~~~~~~~~~
    compilation terminated.
    error: command 'gcc' failed with exit status 1
    ----------------------------------------
ERROR: Command errored out with exit status 1: /opt/python38/bin/python3.8 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-jwjvvpi6/xmlstarlet/setup.py'"'"'; __file__='"'"'/tmp/pip-install-jwjvvpi6/xmlstarlet/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-f56watal/install-record.txt --single-version-externally-managed --compile --install-headers /opt/python38/include/python3.8/xmlstarlet Check the logs for full command output.

use xmlstarlet in shell script to read script variable value and insert in outpu xml file under specific section if the string is not present there

The parse yaml utility which I used in my shell script produces variables as below by eval command

policy1_name='ipfilter'
policy1_scope='api'
policy1_apiname='apiname'
policy1_inboundsession='rate-limit-by-key calls="25" renewal-period="60"
counter-key="@\(Regex.Match\(context.xxx.xxxx.GetValueOrDefault\("X-xxxxxxx-For",""\), @"^[.0-9]*"\)?.Value\)'
policy1_outboundsession_ipAddressesFrom='1xxxxxxxx'
policy1_outboundsession_ipAddressesTo='1yyyyyyy'
policy1_=' policy1_name policy1_scope policy1_apiname policy1_inboundsession policy1_outboundsession'
policy1_outboundsession_=' policy1_outboundsession_ipAddressesFrom policy1_outboundsession_ipAddressesTo'
policy_=' policy1'

I know, I can use xmlstarlet to create element inside my outputpolicy.xml file as given below.

for g in $(eval echo \$${f}_apiname); do
     echo " this policy will be applied to apis,$(eval echo \$${f}_apiname)"
    done
      if [ -z "$(eval echo \$${f}_inboundsession_)" ]; then
        echo 'the inbound session is not present'
      else
        echo 'the inbound session is present and append the policy settings to inbound'
        xmlstarlet ed -O  -s '//inbound' -t elem -n rate-limit-by-key  -i '//inbound/rate-limit-by-key' -t attr -n calls -v xx -i '//inbound/rate-limit-by-key' -t attr -n renewal-period -v yy -i '//inbound/rate-limit-by-key' -t attr -n counter-key -v '@(Regex.Match(context.x.y.GetValueOrDefault("xxxxxxx",""), @"^[.x-y]*")?.Value)' policy.xml > io_ou_ipfilter.xml

but what I am looking is use xmlstarlet in my script to read the output of the above script variable "$(eval echo $${f}inboundsession) and insert the given string under inbound session of the below policy.xml file if the string is not preset.

Expected Output

<policies>
    <inbound>
	  <base />
      <rate-limit-by-key calls="xxx" renewal-period="xx" counter-key="@(Regex.Match(context.x.y.GetValueOrDefault("xxxxxxx",""), @"^[.x-y]*")?.Value)" />
    </inbound>
    <backend>
	  <base />
    </backend>
    <outbound>
	  <base />
    </outbound>
    <on-error>
	  <base />
    </on-error>
</policies>

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.