mirror of
https://gitlab.gnome.org/GNOME/libxslt
synced 2025-08-07 10:42:55 +03:00
complete test of a DocBook XSLt transform with --nonet, need stat(), added
* config.h.in configure.in xsltproc/xsltproc.c: complete test of a DocBook XSLt transform with --nonet, need stat(), added checking in configure. Daniel
This commit is contained in:
@@ -1,3 +1,9 @@
|
|||||||
|
Thu Aug 23 23:18:44 CEST 2001 Daniel Veillard <daniel@veillard.com>
|
||||||
|
|
||||||
|
* config.h.in configure.in xsltproc/xsltproc.c: complete test
|
||||||
|
of a DocBook XSLt transform with --nonet, need stat(), added
|
||||||
|
checking in configure.
|
||||||
|
|
||||||
Thu Aug 23 17:37:40 CEST 2001 Daniel Veillard <daniel@veillard.com>
|
Thu Aug 23 17:37:40 CEST 2001 Daniel Veillard <daniel@veillard.com>
|
||||||
|
|
||||||
* xsltproc/xsltproc.c: catalog integration, cleanup with
|
* xsltproc/xsltproc.c: catalog integration, cleanup with
|
||||||
|
@@ -12,6 +12,9 @@
|
|||||||
#undef HAVE_FLOOR
|
#undef HAVE_FLOOR
|
||||||
#undef HAVE_FABS
|
#undef HAVE_FABS
|
||||||
|
|
||||||
|
/* Define if you have the _stat function. */
|
||||||
|
#undef HAVE__STAT
|
||||||
|
|
||||||
/* Define if you have the asctime function. */
|
/* Define if you have the asctime function. */
|
||||||
#undef HAVE_ASCTIME
|
#undef HAVE_ASCTIME
|
||||||
|
|
||||||
@@ -24,6 +27,9 @@
|
|||||||
/* Define if you have the mktime function. */
|
/* Define if you have the mktime function. */
|
||||||
#undef HAVE_MKTIME
|
#undef HAVE_MKTIME
|
||||||
|
|
||||||
|
/* Define if you have the stat function. */
|
||||||
|
#undef HAVE_STAT
|
||||||
|
|
||||||
/* Define if you have the <ansidecl.h> header file. */
|
/* Define if you have the <ansidecl.h> header file. */
|
||||||
#undef HAVE_ANSIDECL_H
|
#undef HAVE_ANSIDECL_H
|
||||||
|
|
||||||
@@ -48,6 +54,9 @@
|
|||||||
/* Define if you have the <string.h> header file. */
|
/* Define if you have the <string.h> header file. */
|
||||||
#undef HAVE_STRING_H
|
#undef HAVE_STRING_H
|
||||||
|
|
||||||
|
/* Define if you have the <sys/stat.h> header file. */
|
||||||
|
#undef HAVE_SYS_STAT_H
|
||||||
|
|
||||||
/* Define if you have the <sys/time.h> header file. */
|
/* Define if you have the <sys/time.h> header file. */
|
||||||
#undef HAVE_SYS_TIME_H
|
#undef HAVE_SYS_TIME_H
|
||||||
|
|
||||||
|
@@ -77,7 +77,8 @@ dnl
|
|||||||
|
|
||||||
AC_CHECK_HEADERS(sys/types.h sys/time.h stdlib.h unistd.h string.h)
|
AC_CHECK_HEADERS(sys/types.h sys/time.h stdlib.h unistd.h string.h)
|
||||||
AC_CHECK_HEADERS(ieeefp.h nan.h math.h fp_class.h float.h ansidecl.h)
|
AC_CHECK_HEADERS(ieeefp.h nan.h math.h fp_class.h float.h ansidecl.h)
|
||||||
AC_CHECK_HEADERS(time.h)
|
AC_CHECK_HEADERS(time.h sys/stat.h)
|
||||||
|
AC_CHECK_FUNCS(stat _stat)
|
||||||
|
|
||||||
AC_CHECK_FUNC(isnan, , AC_CHECK_LIB(m, isnan,
|
AC_CHECK_FUNC(isnan, , AC_CHECK_LIB(m, isnan,
|
||||||
[M_LIBS="-lm"; AC_DEFINE(HAVE_ISNAN)]))
|
[M_LIBS="-lm"; AC_DEFINE(HAVE_ISNAN)]))
|
||||||
|
@@ -90,6 +90,34 @@ static const char *params[16 + 1];
|
|||||||
static int nbparams = 0;
|
static int nbparams = 0;
|
||||||
static const char *output = NULL;
|
static const char *output = NULL;
|
||||||
|
|
||||||
|
#ifdef LIBXML_CATALOG_ENABLED
|
||||||
|
static int xsltNoNetExists(const char *URL) {
|
||||||
|
#ifdef HAVE_STAT
|
||||||
|
int ret;
|
||||||
|
struct stat info;
|
||||||
|
const char *path;
|
||||||
|
|
||||||
|
if (URL == NULL)
|
||||||
|
return(0);
|
||||||
|
|
||||||
|
if (!xmlStrncmp(BAD_CAST URL, BAD_CAST "file://localhost", 16))
|
||||||
|
path = &URL[16];
|
||||||
|
else if (!xmlStrncmp(BAD_CAST URL, BAD_CAST "file:///", 8)) {
|
||||||
|
#ifdef _WIN32
|
||||||
|
path = &URL[8];
|
||||||
|
#else
|
||||||
|
path = &URL[7];
|
||||||
|
#endif
|
||||||
|
} else
|
||||||
|
path = URL;
|
||||||
|
ret = stat(path, &info);
|
||||||
|
if (ret == 0)
|
||||||
|
return(1);
|
||||||
|
#endif
|
||||||
|
return(0);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
static xmlParserInputPtr
|
static xmlParserInputPtr
|
||||||
xsltNoNetExternalEntityLoader(const char *URL, const char *ID,
|
xsltNoNetExternalEntityLoader(const char *URL, const char *ID,
|
||||||
xmlParserCtxtPtr ctxt) {
|
xmlParserCtxtPtr ctxt) {
|
||||||
@@ -97,9 +125,6 @@ xsltNoNetExternalEntityLoader(const char *URL, const char *ID,
|
|||||||
xmlChar *resource = NULL;
|
xmlChar *resource = NULL;
|
||||||
|
|
||||||
#ifdef LIBXML_CATALOG_ENABLED
|
#ifdef LIBXML_CATALOG_ENABLED
|
||||||
#ifdef HAVE_STAT
|
|
||||||
struct stat info;
|
|
||||||
#endif
|
|
||||||
xmlCatalogAllow pref;
|
xmlCatalogAllow pref;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -108,11 +133,7 @@ xsltNoNetExternalEntityLoader(const char *URL, const char *ID,
|
|||||||
*/
|
*/
|
||||||
pref = xmlCatalogGetDefaults();
|
pref = xmlCatalogGetDefaults();
|
||||||
|
|
||||||
if ((pref != XML_CATA_ALLOW_NONE)
|
if ((pref != XML_CATA_ALLOW_NONE) && (!xsltNoNetExists(URL))) {
|
||||||
#ifdef HAVE_STAT
|
|
||||||
&& ((URL == NULL) || (stat(URL, &info) < 0))
|
|
||||||
#endif
|
|
||||||
) {
|
|
||||||
/*
|
/*
|
||||||
* Do a local lookup
|
* Do a local lookup
|
||||||
*/
|
*/
|
||||||
@@ -138,11 +159,7 @@ xsltNoNetExternalEntityLoader(const char *URL, const char *ID,
|
|||||||
/*
|
/*
|
||||||
* TODO: do an URI lookup on the reference
|
* TODO: do an URI lookup on the reference
|
||||||
*/
|
*/
|
||||||
if ((resource != NULL)
|
if ((resource != NULL) && (!xsltNoNetExists((const char *)resource))) {
|
||||||
#ifdef HAVE_STAT
|
|
||||||
&& (stat((const char *) resource, &info) < 0)
|
|
||||||
#endif
|
|
||||||
) {
|
|
||||||
xmlChar *tmp = NULL;
|
xmlChar *tmp = NULL;
|
||||||
|
|
||||||
if ((ctxt->catalogs != NULL) &&
|
if ((ctxt->catalogs != NULL) &&
|
||||||
|
Reference in New Issue
Block a user