version 1.22, 2000/02/29 16:16:17
|
version 1.23, 2000/04/03 18:45:48
|
Line 12
|
Line 12
|
#else |
#else |
#include "config.h" |
#include "config.h" |
#endif |
#endif |
|
|
|
#include "xmlversion.h" |
|
#ifdef LIBXML_DEBUG_ENABLED |
|
|
#include <stdio.h> |
#include <stdio.h> |
#ifdef HAVE_STDLIB_H |
#ifdef HAVE_STDLIB_H |
#include <stdlib.h> |
#include <stdlib.h> |
Line 19
|
Line 23
|
#ifdef HAVE_STRING_H |
#ifdef HAVE_STRING_H |
#include <string.h> |
#include <string.h> |
#endif |
#endif |
#include "xmlmemory.h" |
#include <libxml/xmlmemory.h> |
#include "tree.h" |
#include <libxml/tree.h> |
#include "parser.h" |
#include <libxml/parser.h> |
#include "valid.h" |
#include <libxml/valid.h> |
#include "debugXML.h" |
#include <libxml/debugXML.h> |
#include "HTMLtree.h" |
#include <libxml/HTMLtree.h> |
#include "HTMLparser.h" |
#include <libxml/HTMLparser.h> |
|
|
#define IS_BLANK(c) \ |
#define IS_BLANK(c) \ |
(((c) == '\n') || ((c) == '\r') || ((c) == '\t') || ((c) == ' ')) |
(((c) == '\n') || ((c) == '\r') || ((c) == '\t') || ((c) == ' ')) |
Line 1059 int
|
Line 1063 int
|
xmlShellCat(xmlShellCtxtPtr ctxt, char *arg, xmlNodePtr node, |
xmlShellCat(xmlShellCtxtPtr ctxt, char *arg, xmlNodePtr node, |
xmlNodePtr node2) { |
xmlNodePtr node2) { |
if (ctxt->doc->type == XML_HTML_DOCUMENT_NODE) { |
if (ctxt->doc->type == XML_HTML_DOCUMENT_NODE) { |
|
#ifdef LIBXML_HTML_ENABLED |
if (node->type == XML_HTML_DOCUMENT_NODE) |
if (node->type == XML_HTML_DOCUMENT_NODE) |
htmlDocDump(stdout, (htmlDocPtr) node); |
htmlDocDump(stdout, (htmlDocPtr) node); |
else |
else |
htmlNodeDumpFile(stdout, ctxt->doc, node); |
htmlNodeDumpFile(stdout, ctxt->doc, node); |
|
#else |
|
if (node->type == XML_DOCUMENT_NODE) |
|
xmlDocDump(stdout, (xmlDocPtr) node); |
|
else |
|
xmlElemDump(stdout, ctxt->doc, node); |
|
#endif /* LIBXML_HTML_ENABLED */ |
} else { |
} else { |
if (node->type == XML_DOCUMENT_NODE) |
if (node->type == XML_DOCUMENT_NODE) |
xmlDocDump(stdout, (xmlDocPtr) node); |
xmlDocDump(stdout, (xmlDocPtr) node); |
Line 1095 xmlShellLoad(xmlShellCtxtPtr ctxt, char
|
Line 1106 xmlShellLoad(xmlShellCtxtPtr ctxt, char
|
html = (ctxt->doc->type == XML_HTML_DOCUMENT_NODE); |
html = (ctxt->doc->type == XML_HTML_DOCUMENT_NODE); |
|
|
if (html) { |
if (html) { |
|
#ifdef LIBXML_HTML_ENABLED |
doc = htmlParseFile(filename, NULL); |
doc = htmlParseFile(filename, NULL); |
|
#else |
|
printf("HTML support not compiled in\n"); |
|
doc = NULL; |
|
#endif /* LIBXML_HTML_ENABLED */ |
} else { |
} else { |
doc = xmlParseFile(filename); |
doc = xmlParseFile(filename); |
} |
} |
Line 1104 xmlShellLoad(xmlShellCtxtPtr ctxt, char
|
Line 1120 xmlShellLoad(xmlShellCtxtPtr ctxt, char
|
xmlFreeDoc(ctxt->doc); |
xmlFreeDoc(ctxt->doc); |
} |
} |
ctxt->loaded = 1; |
ctxt->loaded = 1; |
|
#ifdef LIBXML_XPATH_ENABLED |
xmlXPathFreeContext(ctxt->pctxt); |
xmlXPathFreeContext(ctxt->pctxt); |
|
#endif /* LIBXML_XPATH_ENABLED */ |
xmlFree(ctxt->filename); |
xmlFree(ctxt->filename); |
ctxt->doc = doc; |
ctxt->doc = doc; |
ctxt->node = (xmlNodePtr) doc; |
ctxt->node = (xmlNodePtr) doc; |
|
#ifdef LIBXML_XPATH_ENABLED |
ctxt->pctxt = xmlXPathNewContext(doc); |
ctxt->pctxt = xmlXPathNewContext(doc); |
|
#endif /* LIBXML_XPATH_ENABLED */ |
ctxt->filename = (char *) xmlStrdup((xmlChar *) filename); |
ctxt->filename = (char *) xmlStrdup((xmlChar *) filename); |
} else |
} else |
return(-1); |
return(-1); |
Line 1151 xmlShellWrite(xmlShellCtxtPtr ctxt, char
|
Line 1171 xmlShellWrite(xmlShellCtxtPtr ctxt, char
|
} |
} |
break; |
break; |
case XML_HTML_DOCUMENT_NODE: |
case XML_HTML_DOCUMENT_NODE: |
|
#ifdef LIBXML_HTML_ENABLED |
if (htmlSaveFile((char *) filename, ctxt->doc) < 0) { |
if (htmlSaveFile((char *) filename, ctxt->doc) < 0) { |
fprintf(stderr, "Failed to write to %s\n", filename); |
fprintf(stderr, "Failed to write to %s\n", filename); |
return(-1); |
return(-1); |
} |
} |
|
#else |
|
if (xmlSaveFile((char *) filename, ctxt->doc) < -1) { |
|
fprintf(stderr, "Failed to write to %s\n", filename); |
|
return(-1); |
|
} |
|
#endif /* LIBXML_HTML_ENABLED */ |
break; |
break; |
default: { |
default: { |
FILE *f; |
FILE *f; |
Line 1203 xmlShellSave(xmlShellCtxtPtr ctxt, char
|
Line 1230 xmlShellSave(xmlShellCtxtPtr ctxt, char
|
} |
} |
break; |
break; |
case XML_HTML_DOCUMENT_NODE: |
case XML_HTML_DOCUMENT_NODE: |
|
#ifdef LIBXML_HTML_ENABLED |
if (htmlSaveFile((char *) filename, ctxt->doc) < 0) { |
if (htmlSaveFile((char *) filename, ctxt->doc) < 0) { |
fprintf(stderr, "Failed to save to %s\n", filename); |
fprintf(stderr, "Failed to save to %s\n", filename); |
} |
} |
|
#else |
|
if (xmlSaveFile((char *) filename, ctxt->doc) < 0) { |
|
fprintf(stderr, "Failed to save to %s\n", filename); |
|
} |
|
#endif /* LIBXML_HTML_ENABLED */ |
break; |
break; |
default: |
default: |
fprintf(stderr, |
fprintf(stderr, |
Line 1444 xmlShell(xmlDocPtr doc, char *filename,
|
Line 1477 xmlShell(xmlDocPtr doc, char *filename,
|
ctxt->filename = (char *) xmlStrdup((xmlChar *) filename); |
ctxt->filename = (char *) xmlStrdup((xmlChar *) filename); |
ctxt->node = (xmlNodePtr) ctxt->doc; |
ctxt->node = (xmlNodePtr) ctxt->doc; |
|
|
|
#ifdef LIBXML_XPATH_ENABLED |
ctxt->pctxt = xmlXPathNewContext(ctxt->doc); |
ctxt->pctxt = xmlXPathNewContext(ctxt->doc); |
if (ctxt->pctxt == NULL) { |
if (ctxt->pctxt == NULL) { |
xmlFree(ctxt); |
xmlFree(ctxt); |
return; |
return; |
} |
} |
|
#endif /* LIBXML_XPATH_ENABLED */ |
while (1) { |
while (1) { |
if (ctxt->node == (xmlNodePtr) ctxt->doc) |
if (ctxt->node == (xmlNodePtr) ctxt->doc) |
sprintf(prompt, "%s > ", "/"); |
sprintf(prompt, "%s > ", "/"); |
Line 1503 xmlShell(xmlDocPtr doc, char *filename,
|
Line 1538 xmlShell(xmlDocPtr doc, char *filename,
|
xmlShellList(ctxt, NULL, ctxt->node, NULL); |
xmlShellList(ctxt, NULL, ctxt->node, NULL); |
} else { |
} else { |
ctxt->pctxt->node = ctxt->node; |
ctxt->pctxt->node = ctxt->node; |
|
#ifdef LIBXML_XPATH_ENABLED |
if (ctxt->pctxt->nodelist != NULL) |
if (ctxt->pctxt->nodelist != NULL) |
xmlXPathFreeNodeSet(ctxt->pctxt->nodelist); |
xmlXPathFreeNodeSet(ctxt->pctxt->nodelist); |
ctxt->pctxt->nodelist = xmlXPathNodeSetCreate(ctxt->node); |
ctxt->pctxt->nodelist = xmlXPathNodeSetCreate(ctxt->node); |
list = xmlXPathEval((xmlChar *) arg, ctxt->pctxt); |
list = xmlXPathEval((xmlChar *) arg, ctxt->pctxt); |
|
#else |
|
list = NULL; |
|
#endif /* LIBXML_XPATH_ENABLED */ |
if (list != NULL) { |
if (list != NULL) { |
switch (list->type) { |
switch (list->type) { |
case XPATH_UNDEFINED: |
case XPATH_UNDEFINED: |
Line 1539 xmlShell(xmlDocPtr doc, char *filename,
|
Line 1578 xmlShell(xmlDocPtr doc, char *filename,
|
} else { |
} else { |
fprintf(stderr, "%s: no such node\n", arg); |
fprintf(stderr, "%s: no such node\n", arg); |
} |
} |
|
#ifdef LIBXML_XPATH_ENABLED |
if (ctxt->pctxt->nodelist != NULL) |
if (ctxt->pctxt->nodelist != NULL) |
xmlXPathFreeNodeSet(ctxt->pctxt->nodelist); |
xmlXPathFreeNodeSet(ctxt->pctxt->nodelist); |
|
#endif /* LIBXML_XPATH_ENABLED */ |
ctxt->pctxt->nodelist = NULL; |
ctxt->pctxt->nodelist = NULL; |
} |
} |
} else if (!strcmp(command, "cd")) { |
} else if (!strcmp(command, "cd")) { |
Line 1548 xmlShell(xmlDocPtr doc, char *filename,
|
Line 1589 xmlShell(xmlDocPtr doc, char *filename,
|
ctxt->node = (xmlNodePtr) ctxt->doc; |
ctxt->node = (xmlNodePtr) ctxt->doc; |
} else { |
} else { |
ctxt->pctxt->node = ctxt->node; |
ctxt->pctxt->node = ctxt->node; |
|
#ifdef LIBXML_XPATH_ENABLED |
if (ctxt->pctxt->nodelist != NULL) |
if (ctxt->pctxt->nodelist != NULL) |
xmlXPathFreeNodeSet(ctxt->pctxt->nodelist); |
xmlXPathFreeNodeSet(ctxt->pctxt->nodelist); |
ctxt->pctxt->nodelist = xmlXPathNodeSetCreate(ctxt->node); |
ctxt->pctxt->nodelist = xmlXPathNodeSetCreate(ctxt->node); |
list = xmlXPathEval((xmlChar *) arg, ctxt->pctxt); |
list = xmlXPathEval((xmlChar *) arg, ctxt->pctxt); |
|
#else |
|
list = NULL; |
|
#endif /* LIBXML_XPATH_ENABLED */ |
if (list != NULL) { |
if (list != NULL) { |
switch (list->type) { |
switch (list->type) { |
case XPATH_UNDEFINED: |
case XPATH_UNDEFINED: |
Line 1578 xmlShell(xmlDocPtr doc, char *filename,
|
Line 1623 xmlShell(xmlDocPtr doc, char *filename,
|
} else { |
} else { |
fprintf(stderr, "%s: no such node\n", arg); |
fprintf(stderr, "%s: no such node\n", arg); |
} |
} |
|
#ifdef LIBXML_XPATH_ENABLED |
if (ctxt->pctxt->nodelist != NULL) |
if (ctxt->pctxt->nodelist != NULL) |
xmlXPathFreeNodeSet(ctxt->pctxt->nodelist); |
xmlXPathFreeNodeSet(ctxt->pctxt->nodelist); |
|
#endif /* LIBXML_XPATH_ENABLED */ |
ctxt->pctxt->nodelist = NULL; |
ctxt->pctxt->nodelist = NULL; |
} |
} |
} else if (!strcmp(command, "cat")) { |
} else if (!strcmp(command, "cat")) { |
Line 1587 xmlShell(xmlDocPtr doc, char *filename,
|
Line 1634 xmlShell(xmlDocPtr doc, char *filename,
|
xmlShellCat(ctxt, NULL, ctxt->node, NULL); |
xmlShellCat(ctxt, NULL, ctxt->node, NULL); |
} else { |
} else { |
ctxt->pctxt->node = ctxt->node; |
ctxt->pctxt->node = ctxt->node; |
|
#ifdef LIBXML_XPATH_ENABLED |
if (ctxt->pctxt->nodelist != NULL) |
if (ctxt->pctxt->nodelist != NULL) |
xmlXPathFreeNodeSet(ctxt->pctxt->nodelist); |
xmlXPathFreeNodeSet(ctxt->pctxt->nodelist); |
ctxt->pctxt->nodelist = xmlXPathNodeSetCreate(ctxt->node); |
ctxt->pctxt->nodelist = xmlXPathNodeSetCreate(ctxt->node); |
list = xmlXPathEval((xmlChar *) arg, ctxt->pctxt); |
list = xmlXPathEval((xmlChar *) arg, ctxt->pctxt); |
|
#else |
|
list = NULL; |
|
#endif /* LIBXML_XPATH_ENABLED */ |
if (list != NULL) { |
if (list != NULL) { |
switch (list->type) { |
switch (list->type) { |
case XPATH_UNDEFINED: |
case XPATH_UNDEFINED: |
Line 1620 xmlShell(xmlDocPtr doc, char *filename,
|
Line 1671 xmlShell(xmlDocPtr doc, char *filename,
|
} else { |
} else { |
fprintf(stderr, "%s: no such node\n", arg); |
fprintf(stderr, "%s: no such node\n", arg); |
} |
} |
|
#ifdef LIBXML_XPATH_ENABLED |
if (ctxt->pctxt->nodelist != NULL) |
if (ctxt->pctxt->nodelist != NULL) |
xmlXPathFreeNodeSet(ctxt->pctxt->nodelist); |
xmlXPathFreeNodeSet(ctxt->pctxt->nodelist); |
|
#endif /* LIBXML_XPATH_ENABLED */ |
ctxt->pctxt->nodelist = NULL; |
ctxt->pctxt->nodelist = NULL; |
} |
} |
} else { |
} else { |
Line 1629 xmlShell(xmlDocPtr doc, char *filename,
|
Line 1682 xmlShell(xmlDocPtr doc, char *filename,
|
} |
} |
free(cmdline); /* not xmlFree here ! */ |
free(cmdline); /* not xmlFree here ! */ |
} |
} |
|
#ifdef LIBXML_XPATH_ENABLED |
xmlXPathFreeContext(ctxt->pctxt); |
xmlXPathFreeContext(ctxt->pctxt); |
|
#endif /* LIBXML_XPATH_ENABLED */ |
if (ctxt->loaded) { |
if (ctxt->loaded) { |
xmlFreeDoc(ctxt->doc); |
xmlFreeDoc(ctxt->doc); |
} |
} |
Line 1638 xmlShell(xmlDocPtr doc, char *filename,
|
Line 1693 xmlShell(xmlDocPtr doc, char *filename,
|
free(cmdline); /* not xmlFree here ! */ |
free(cmdline); /* not xmlFree here ! */ |
} |
} |
|
|
|
#endif /* LIBXML_DEBUG_ENABLED */ |