mirror of
https://gitlab.gnome.org/GNOME/libxml2.git
synced 2025-03-10 08:58:16 +03:00
obsoleted xmlNormalizeWindowsPath
This commit is contained in:
parent
f2238e6e55
commit
5f9fada355
@ -6031,7 +6031,7 @@ docbCreateFileParserCtxt(const char *filename,
|
||||
memset(inputStream, 0, sizeof(docbParserInput));
|
||||
|
||||
inputStream->filename = (char *)
|
||||
xmlNormalizeWindowsPath((const xmlChar *)filename);
|
||||
xmlCanonicPath((const xmlChar *)filename);
|
||||
inputStream->line = 1;
|
||||
inputStream->col = 1;
|
||||
inputStream->buf = buf;
|
||||
|
@ -42,6 +42,7 @@
|
||||
#include <libxml/valid.h>
|
||||
#include <libxml/xmlIO.h>
|
||||
#include <libxml/globals.h>
|
||||
#include <libxml/uri.h>
|
||||
|
||||
#define HTML_MAX_NAMELEN 1000
|
||||
#define HTML_PARSER_BIG_BUFFER_SIZE 1000
|
||||
@ -5346,7 +5347,7 @@ htmlCreateFileParserCtxt(const char *filename, const char *encoding)
|
||||
memset(inputStream, 0, sizeof(htmlParserInput));
|
||||
|
||||
inputStream->filename = (char *)
|
||||
xmlNormalizeWindowsPath((xmlChar *)filename);
|
||||
xmlCanonicPath((xmlChar *)filename);
|
||||
inputStream->line = 1;
|
||||
inputStream->col = 1;
|
||||
inputStream->buf = buf;
|
||||
|
@ -239,7 +239,11 @@ xmlParserInputPtr xmlNoNetExternalEntityLoader(const char *URL,
|
||||
const char *ID,
|
||||
xmlParserCtxtPtr ctxt);
|
||||
|
||||
xmlChar *xmlNormalizeWindowsPath (const xmlChar *path);
|
||||
/*
|
||||
* xmlNormalizeWindowsPath is obsolete, don't use it.
|
||||
* Check xmlCanonicPath in uri.h for a better alternative.
|
||||
*/
|
||||
xmlChar * xmlNormalizeWindowsPath (const xmlChar *path);
|
||||
|
||||
int xmlCheckFilename (const char *path);
|
||||
/**
|
||||
|
15
parser.c
15
parser.c
@ -9154,7 +9154,7 @@ xmlCreatePushParserCtxt(xmlSAXHandlerPtr sax, void *user_data,
|
||||
inputStream->filename = NULL;
|
||||
else
|
||||
inputStream->filename = (char *)
|
||||
xmlNormalizeWindowsPath((const xmlChar *) filename);
|
||||
xmlCanonicPath((const xmlChar *) filename);
|
||||
inputStream->buf = buf;
|
||||
inputStream->base = inputStream->buf->buffer->content;
|
||||
inputStream->cur = inputStream->buf->buffer->content;
|
||||
@ -10330,7 +10330,6 @@ xmlCreateFileParserCtxt(const char *filename)
|
||||
xmlParserCtxtPtr ctxt;
|
||||
xmlParserInputPtr inputStream;
|
||||
char *directory = NULL;
|
||||
xmlChar *normalized;
|
||||
|
||||
ctxt = xmlNewParserCtxt();
|
||||
if (ctxt == NULL) {
|
||||
@ -10340,26 +10339,18 @@ xmlCreateFileParserCtxt(const char *filename)
|
||||
return(NULL);
|
||||
}
|
||||
|
||||
normalized = xmlNormalizeWindowsPath((const xmlChar *) filename);
|
||||
if (normalized == NULL) {
|
||||
xmlFreeParserCtxt(ctxt);
|
||||
return(NULL);
|
||||
}
|
||||
inputStream = xmlLoadExternalEntity((char *) normalized, NULL, ctxt);
|
||||
inputStream = xmlLoadExternalEntity(filename, NULL, ctxt);
|
||||
if (inputStream == NULL) {
|
||||
xmlFreeParserCtxt(ctxt);
|
||||
xmlFree(normalized);
|
||||
return(NULL);
|
||||
}
|
||||
|
||||
inputPush(ctxt, inputStream);
|
||||
if ((ctxt->directory == NULL) && (directory == NULL))
|
||||
directory = xmlParserGetDirectory((char *) normalized);
|
||||
directory = xmlParserGetDirectory(filename);
|
||||
if ((ctxt->directory == NULL) && (directory != NULL))
|
||||
ctxt->directory = directory;
|
||||
|
||||
xmlFree(normalized);
|
||||
|
||||
return(ctxt);
|
||||
}
|
||||
|
||||
|
79
xmlIO.c
79
xmlIO.c
@ -121,70 +121,17 @@ static xmlOutputCallback xmlOutputCallbackTable[MAX_OUTPUT_CALLBACK];
|
||||
static int xmlOutputCallbackNr = 0;
|
||||
static int xmlOutputCallbackInitialized = 0;
|
||||
|
||||
/************************************************************************
|
||||
* *
|
||||
* Handling of Windows file paths *
|
||||
* *
|
||||
************************************************************************/
|
||||
|
||||
#define IS_WINDOWS_PATH(p) \
|
||||
((p != NULL) && \
|
||||
(((p[0] >= 'a') && (p[0] <= 'z')) || \
|
||||
((p[0] >= 'A') && (p[0] <= 'Z'))) && \
|
||||
(p[1] == ':') && ((p[2] == '/') || (p[2] == '\\')))
|
||||
|
||||
|
||||
/**
|
||||
* xmlNormalizeWindowsPath:
|
||||
* @path: a windows path like "C:/foo/bar"
|
||||
*
|
||||
* Normalize a Windows path to make an URL from it
|
||||
*
|
||||
* Returns a new URI which must be freed by the caller or NULL
|
||||
* in case of error
|
||||
* This function is obsolete. Please see xmlURIFromPath in uri.c for
|
||||
* a better solution.
|
||||
*/
|
||||
xmlChar *
|
||||
xmlNormalizeWindowsPath(const xmlChar *path)
|
||||
{
|
||||
int len, i = 0, j;
|
||||
xmlChar *ret;
|
||||
|
||||
if (path == NULL)
|
||||
return(NULL);
|
||||
|
||||
len = xmlStrlen(path);
|
||||
if (!IS_WINDOWS_PATH(path)) {
|
||||
ret = xmlStrdup(path);
|
||||
if (ret == NULL)
|
||||
return(NULL);
|
||||
j = 0;
|
||||
} else {
|
||||
ret = xmlMalloc(len + 10);
|
||||
if (ret == NULL)
|
||||
return(NULL);
|
||||
ret[0] = 'f';
|
||||
ret[1] = 'i';
|
||||
ret[2] = 'l';
|
||||
ret[3] = 'e';
|
||||
ret[4] = ':';
|
||||
ret[5] = '/';
|
||||
ret[6] = '/';
|
||||
ret[7] = '/';
|
||||
j = 8;
|
||||
}
|
||||
|
||||
while (i < len) {
|
||||
/* TODO: UTF8 conversion + URI escaping ??? */
|
||||
if (path[i] == '\\')
|
||||
ret[j] = '/';
|
||||
else
|
||||
ret[j] = path[i];
|
||||
i++;
|
||||
j++;
|
||||
}
|
||||
ret[j] = 0;
|
||||
|
||||
return(ret);
|
||||
return xmlCanonicPath(path);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1768,14 +1715,11 @@ xmlParserInputBufferCreateFilename
|
||||
xmlParserInputBufferPtr ret;
|
||||
int i = 0;
|
||||
void *context = NULL;
|
||||
char *normalized;
|
||||
|
||||
if (xmlInputCallbackInitialized == 0)
|
||||
xmlRegisterDefaultInputCallbacks();
|
||||
|
||||
if (URI == NULL) return(NULL);
|
||||
normalized = (char *) xmlNormalizeWindowsPath((const xmlChar *)URI);
|
||||
if (normalized == NULL) return(NULL);
|
||||
|
||||
#ifdef LIBXML_CATALOG_ENABLED
|
||||
#endif
|
||||
@ -1788,13 +1732,12 @@ xmlParserInputBufferCreateFilename
|
||||
for (i = xmlInputCallbackNr - 1;i >= 0;i--) {
|
||||
if ((xmlInputCallbackTable[i].matchcallback != NULL) &&
|
||||
(xmlInputCallbackTable[i].matchcallback(URI) != 0)) {
|
||||
context = xmlInputCallbackTable[i].opencallback(normalized);
|
||||
context = xmlInputCallbackTable[i].opencallback(URI);
|
||||
if (context != NULL)
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
xmlFree(normalized);
|
||||
if (context == NULL) {
|
||||
return(NULL);
|
||||
}
|
||||
@ -1834,7 +1777,6 @@ xmlOutputBufferCreateFilename(const char *URI,
|
||||
int i = 0;
|
||||
void *context = NULL;
|
||||
char *unescaped;
|
||||
char *normalized;
|
||||
|
||||
int is_http_uri = 0; /* Can't change if HTTP disabled */
|
||||
|
||||
@ -1842,13 +1784,11 @@ xmlOutputBufferCreateFilename(const char *URI,
|
||||
xmlRegisterDefaultOutputCallbacks();
|
||||
|
||||
if (URI == NULL) return(NULL);
|
||||
normalized = (char *) xmlNormalizeWindowsPath((const xmlChar *)URI);
|
||||
if (normalized == NULL) return(NULL);
|
||||
|
||||
#ifdef LIBXML_HTTP_ENABLED
|
||||
/* Need to prevent HTTP URI's from falling into zlib short circuit */
|
||||
|
||||
is_http_uri = xmlIOHTTPMatch( normalized );
|
||||
is_http_uri = xmlIOHTTPMatch( URI );
|
||||
#endif
|
||||
|
||||
|
||||
@ -1857,7 +1797,7 @@ xmlOutputBufferCreateFilename(const char *URI,
|
||||
* Go in reverse to give precedence to user defined handlers.
|
||||
* try with an unescaped version of the URI
|
||||
*/
|
||||
unescaped = xmlURIUnescapeString(normalized, 0, NULL);
|
||||
unescaped = xmlURIUnescapeString(URI, 0, NULL);
|
||||
if (unescaped != NULL) {
|
||||
#ifdef HAVE_ZLIB_H
|
||||
if ((compression > 0) && (compression <= 9) && (is_http_uri == 0)) {
|
||||
@ -1870,7 +1810,6 @@ xmlOutputBufferCreateFilename(const char *URI,
|
||||
ret->closecallback = xmlGzfileClose;
|
||||
}
|
||||
xmlFree(unescaped);
|
||||
xmlFree(normalized);
|
||||
return(ret);
|
||||
}
|
||||
}
|
||||
@ -1899,7 +1838,7 @@ xmlOutputBufferCreateFilename(const char *URI,
|
||||
if (context == NULL) {
|
||||
#ifdef HAVE_ZLIB_H
|
||||
if ((compression > 0) && (compression <= 9) && (is_http_uri == 0)) {
|
||||
context = xmlGzfileOpenW(normalized, compression);
|
||||
context = xmlGzfileOpenW(URI, compression);
|
||||
if (context != NULL) {
|
||||
ret = xmlAllocOutputBuffer(encoder);
|
||||
if (ret != NULL) {
|
||||
@ -1907,14 +1846,13 @@ xmlOutputBufferCreateFilename(const char *URI,
|
||||
ret->writecallback = xmlGzfileWrite;
|
||||
ret->closecallback = xmlGzfileClose;
|
||||
}
|
||||
xmlFree(normalized);
|
||||
return(ret);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
for (i = xmlOutputCallbackNr - 1;i >= 0;i--) {
|
||||
if ((xmlOutputCallbackTable[i].matchcallback != NULL) &&
|
||||
(xmlOutputCallbackTable[i].matchcallback(normalized) != 0)) {
|
||||
(xmlOutputCallbackTable[i].matchcallback(URI) != 0)) {
|
||||
#if defined(LIBXML_HTTP_ENABLED) && defined(HAVE_ZLIB_H)
|
||||
/* Need to pass compression parameter into HTTP open calls */
|
||||
if (xmlOutputCallbackTable[i].matchcallback == xmlIOHTTPMatch)
|
||||
@ -1927,7 +1865,6 @@ xmlOutputBufferCreateFilename(const char *URI,
|
||||
}
|
||||
}
|
||||
}
|
||||
xmlFree(normalized);
|
||||
|
||||
if (context == NULL) {
|
||||
return(NULL);
|
||||
|
Loading…
x
Reference in New Issue
Block a user