Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2)

Unified Diff: third_party/libxslt/libxslt/attrvt.c

Issue 2865973002: Check in the libxslt roll script. (Closed)
Patch Set: Consistent quotes. Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « third_party/libxslt/libxslt/attributes.c ('k') | third_party/libxslt/libxslt/documents.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: third_party/libxslt/libxslt/attrvt.c
diff --git a/third_party/libxslt/libxslt/attrvt.c b/third_party/libxslt/libxslt/attrvt.c
deleted file mode 100644
index 125159cedf3de40aa69b2d61659bf70d6036e2d3..0000000000000000000000000000000000000000
--- a/third_party/libxslt/libxslt/attrvt.c
+++ /dev/null
@@ -1,387 +0,0 @@
-/*
- * attrvt.c: Implementation of the XSL Transformation 1.0 engine
- * attribute value template handling part.
- *
- * References:
- * http://www.w3.org/TR/1999/REC-xslt-19991116
- *
- * Michael Kay "XSLT Programmer's Reference" pp 637-643
- * Writing Multiple Output Files
- *
- * See Copyright for the status of this software.
- *
- * daniel@veillard.com
- */
-
-#define IN_LIBXSLT
-#include "libxslt.h"
-
-#include <string.h>
-
-#include <libxml/xmlmemory.h>
-#include <libxml/tree.h>
-#include <libxml/xpath.h>
-#include <libxml/xpathInternals.h>
-#include "xslt.h"
-#include "xsltutils.h"
-#include "xsltInternals.h"
-#include "templates.h"
-
-#ifdef WITH_XSLT_DEBUG
-#define WITH_XSLT_DEBUG_AVT
-#endif
-
-#define MAX_AVT_SEG 10
-
-typedef struct _xsltAttrVT xsltAttrVT;
-typedef xsltAttrVT *xsltAttrVTPtr;
-struct _xsltAttrVT {
- struct _xsltAttrVT *next; /* next xsltAttrVT */
- int nb_seg; /* Number of segments */
- int max_seg; /* max capacity before re-alloc needed */
- int strstart; /* is the start a string */
- /*
- * the namespaces in scope
- */
- xmlNsPtr *nsList;
- int nsNr;
- /*
- * the content is an alternate of string and xmlXPathCompExprPtr
- */
- void *segments[MAX_AVT_SEG];
-};
-
-/**
- * xsltNewAttrVT:
- * @style: a XSLT process context
- *
- * Build a new xsltAttrVT structure
- *
- * Returns the structure or NULL in case of error
- */
-static xsltAttrVTPtr
-xsltNewAttrVT(xsltStylesheetPtr style) {
- xsltAttrVTPtr cur;
-
- cur = (xsltAttrVTPtr) xmlMalloc(sizeof(xsltAttrVT));
- if (cur == NULL) {
- xsltTransformError(NULL, style, NULL,
- "xsltNewAttrVTPtr : malloc failed\n");
- if (style != NULL) style->errors++;
- return(NULL);
- }
- memset(cur, 0, sizeof(xsltAttrVT));
-
- cur->nb_seg = 0;
- cur->max_seg = MAX_AVT_SEG;
- cur->strstart = 0;
- cur->next = style->attVTs;
- /*
- * Note: this pointer may be changed by a re-alloc within xsltCompileAttr,
- * so that code may change the stylesheet pointer also!
- */
- style->attVTs = (xsltAttrVTPtr) cur;
-
- return(cur);
-}
-
-/**
- * xsltFreeAttrVT:
- * @avt: pointer to an xsltAttrVT structure
- *
- * Free up the memory associated to the attribute value template
- */
-static void
-xsltFreeAttrVT(xsltAttrVTPtr avt) {
- int i;
-
- if (avt == NULL) return;
-
- if (avt->strstart == 1) {
- for (i = 0;i < avt->nb_seg; i += 2)
- if (avt->segments[i] != NULL)
- xmlFree((xmlChar *) avt->segments[i]);
- for (i = 1;i < avt->nb_seg; i += 2)
- xmlXPathFreeCompExpr((xmlXPathCompExprPtr) avt->segments[i]);
- } else {
- for (i = 0;i < avt->nb_seg; i += 2)
- xmlXPathFreeCompExpr((xmlXPathCompExprPtr) avt->segments[i]);
- for (i = 1;i < avt->nb_seg; i += 2)
- if (avt->segments[i] != NULL)
- xmlFree((xmlChar *) avt->segments[i]);
- }
- if (avt->nsList != NULL)
- xmlFree(avt->nsList);
- xmlFree(avt);
-}
-
-/**
- * xsltFreeAVTList:
- * @avt: pointer to an list of AVT structures
- *
- * Free up the memory associated to the attribute value templates
- */
-void
-xsltFreeAVTList(void *avt) {
- xsltAttrVTPtr cur = (xsltAttrVTPtr) avt, next;
-
- while (cur != NULL) {
- next = cur->next;
- xsltFreeAttrVT(cur);
- cur = next;
- }
-}
-/**
- * xsltSetAttrVTsegment:
- * @ avt: pointer to an xsltAttrVT structure
- * @ val: the value to be set to the next available segment
- *
- * Within xsltCompileAttr there are several places where a value
- * needs to be added to the 'segments' array within the xsltAttrVT
- * structure, and at each place the allocated size may have to be
- * re-allocated. This routine takes care of that situation.
- *
- * Returns the avt pointer, which may have been changed by a re-alloc
- */
-static xsltAttrVTPtr
-xsltSetAttrVTsegment(xsltAttrVTPtr avt, void *val) {
- if (avt->nb_seg >= avt->max_seg) {
- avt = (xsltAttrVTPtr) xmlRealloc(avt, sizeof(xsltAttrVT) +
- avt->max_seg * sizeof(void *));
- if (avt == NULL) {
- return NULL;
- }
- memset(&avt->segments[avt->nb_seg], 0, MAX_AVT_SEG*sizeof(void *));
- avt->max_seg += MAX_AVT_SEG;
- }
- avt->segments[avt->nb_seg++] = val;
- return avt;
-}
-
-/**
- * xsltCompileAttr:
- * @style: a XSLT process context
- * @attr: the attribute coming from the stylesheet.
- *
- * Precompile an attribute in a stylesheet, basically it checks if it is
- * an attrubute value template, and if yes establish some structures needed
- * to process it at transformation time.
- */
-void
-xsltCompileAttr(xsltStylesheetPtr style, xmlAttrPtr attr) {
- const xmlChar *str;
- const xmlChar *cur;
- xmlChar *ret = NULL;
- xmlChar *expr = NULL;
- xsltAttrVTPtr avt;
- int i = 0, lastavt = 0;
-
- if ((style == NULL) || (attr == NULL) || (attr->children == NULL))
- return;
- if ((attr->children->type != XML_TEXT_NODE) ||
- (attr->children->next != NULL)) {
- xsltTransformError(NULL, style, attr->parent,
- "Attribute '%s': The content is expected to be a single text "
- "node when compiling an AVT.\n", attr->name);
- style->errors++;
- return;
- }
- str = attr->children->content;
- if ((xmlStrchr(str, '{') == NULL) &&
- (xmlStrchr(str, '}') == NULL)) return;
-
-#ifdef WITH_XSLT_DEBUG_AVT
- xsltGenericDebug(xsltGenericDebugContext,
- "Found AVT %s: %s\n", attr->name, str);
-#endif
- if (attr->psvi != NULL) {
-#ifdef WITH_XSLT_DEBUG_AVT
- xsltGenericDebug(xsltGenericDebugContext,
- "AVT %s: already compiled\n", attr->name);
-#endif
- return;
- }
- /*
- * Create a new AVT object.
- */
- avt = xsltNewAttrVT(style);
- if (avt == NULL)
- return;
- attr->psvi = avt;
-
- avt->nsList = xmlGetNsList(attr->doc, attr->parent);
- if (avt->nsList != NULL) {
- while (avt->nsList[i] != NULL)
- i++;
- }
- avt->nsNr = i;
-
- cur = str;
- while (*cur != 0) {
- if (*cur == '{') {
- if (*(cur+1) == '{') { /* escaped '{' */
- cur++;
- ret = xmlStrncat(ret, str, cur - str);
- cur++;
- str = cur;
- continue;
- }
- if (*(cur+1) == '}') { /* skip empty AVT */
- ret = xmlStrncat(ret, str, cur - str);
- cur += 2;
- str = cur;
- continue;
- }
- if ((ret != NULL) || (cur - str > 0)) {
- ret = xmlStrncat(ret, str, cur - str);
- str = cur;
- if (avt->nb_seg == 0)
- avt->strstart = 1;
- if ((avt = xsltSetAttrVTsegment(avt, (void *) ret)) == NULL)
- goto error;
- ret = NULL;
- lastavt = 0;
- }
-
- cur++;
- while ((*cur != 0) && (*cur != '}')) {
- /* Need to check for literal (bug539741) */
- if ((*cur == '\'') || (*cur == '"')) {
- char delim = *(cur++);
- while ((*cur != 0) && (*cur != delim))
- cur++;
- if (*cur != 0)
- cur++; /* skip the ending delimiter */
- } else
- cur++;
- }
- if (*cur == 0) {
- xsltTransformError(NULL, style, attr->parent,
- "Attribute '%s': The AVT has an unmatched '{'.\n",
- attr->name);
- style->errors++;
- goto error;
- }
- str++;
- expr = xmlStrndup(str, cur - str);
- if (expr == NULL) {
- /*
- * TODO: What needs to be done here?
- */
- XSLT_TODO
- goto error;
- } else {
- xmlXPathCompExprPtr comp;
-
- comp = xsltXPathCompile(style, expr);
- if (comp == NULL) {
- xsltTransformError(NULL, style, attr->parent,
- "Attribute '%s': Failed to compile the expression "
- "'%s' in the AVT.\n", attr->name, expr);
- style->errors++;
- goto error;
- }
- if (avt->nb_seg == 0)
- avt->strstart = 0;
- if (lastavt == 1) {
- if ((avt = xsltSetAttrVTsegment(avt, NULL)) == NULL)
- goto error;
- }
- if ((avt = xsltSetAttrVTsegment(avt, (void *) comp)) == NULL)
- goto error;
- lastavt = 1;
- xmlFree(expr);
- expr = NULL;
- }
- cur++;
- str = cur;
- } else if (*cur == '}') {
- cur++;
- if (*cur == '}') { /* escaped '}' */
- ret = xmlStrncat(ret, str, cur - str);
- cur++;
- str = cur;
- continue;
- } else {
- xsltTransformError(NULL, style, attr->parent,
- "Attribute '%s': The AVT has an unmatched '}'.\n",
- attr->name);
- goto error;
- }
- } else
- cur++;
- }
- if ((ret != NULL) || (cur - str > 0)) {
- ret = xmlStrncat(ret, str, cur - str);
- str = cur;
- if (avt->nb_seg == 0)
- avt->strstart = 1;
- if ((avt = xsltSetAttrVTsegment(avt, (void *) ret)) == NULL)
- goto error;
- ret = NULL;
- }
-
-error:
- if (avt == NULL) {
- xsltTransformError(NULL, style, attr->parent,
- "xsltCompileAttr: malloc problem\n");
- } else {
- if (attr->psvi != avt) { /* may have changed from realloc */
- attr->psvi = avt;
- /*
- * This is a "hack", but I can't see any clean method of
- * doing it. If a re-alloc has taken place, then the pointer
- * for this AVT may have changed. style->attVTs was set by
- * xsltNewAttrVT, so it needs to be re-set to the new value!
- */
- style->attVTs = avt;
- }
- }
- if (ret != NULL)
- xmlFree(ret);
- if (expr != NULL)
- xmlFree(expr);
-}
-
-
-/**
- * xsltEvalAVT:
- * @ctxt: the XSLT transformation context
- * @avt: the prevompiled attribute value template info
- * @node: the node hosting the attribute
- *
- * Process the given AVT, and return the new string value.
- *
- * Returns the computed string value or NULL, must be deallocated by the
- * caller.
- */
-xmlChar *
-xsltEvalAVT(xsltTransformContextPtr ctxt, void *avt, xmlNodePtr node) {
- xmlChar *ret = NULL, *tmp;
- xmlXPathCompExprPtr comp;
- xsltAttrVTPtr cur = (xsltAttrVTPtr) avt;
- int i;
- int str;
-
- if ((ctxt == NULL) || (avt == NULL) || (node == NULL))
- return(NULL);
- str = cur->strstart;
- for (i = 0;i < cur->nb_seg;i++) {
- if (str) {
- ret = xmlStrcat(ret, (const xmlChar *) cur->segments[i]);
- } else {
- comp = (xmlXPathCompExprPtr) cur->segments[i];
- tmp = xsltEvalXPathStringNs(ctxt, comp, cur->nsNr, cur->nsList);
- if (tmp != NULL) {
- if (ret != NULL) {
- ret = xmlStrcat(ret, tmp);
- xmlFree(tmp);
- } else {
- ret = tmp;
- }
- }
- }
- str = !str;
- }
- return(ret);
-}
« no previous file with comments | « third_party/libxslt/libxslt/attributes.c ('k') | third_party/libxslt/libxslt/documents.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698