core/expat-2.0.1/xmlwf/xmlwf.c
author Jan Vrany <jan.vrany@fit.cvut.cz>
Tue, 02 Feb 2016 21:49:24 +0000
changeset 300 b6d834208d33
parent 296 xmlreaderimpl/support/expat-2.0.1/xmlwf/xmlwf.c@ea3dbc023c80
permissions -rw-r--r--
ExpatXMLReader and DOM3XMLReader moved to xmlsuite/core package ...to ease usage of the package. Therefore it's no longer needed to also build xmlsuite/xmlreaderimpl in order to actually parse something. Expat should provide a good default.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
172
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     1
/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     2
   See the file COPYING for copying permission.
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     3
*/
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     4
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     5
#include <stdio.h>
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     6
#include <stdlib.h>
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     7
#include <stddef.h>
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     8
#include <string.h>
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     9
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    10
#include "expat.h"
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    11
#include "codepage.h"
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    12
#include "xmlfile.h"
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    13
#include "xmltchar.h"
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    14
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    15
#ifdef _MSC_VER
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    16
#include <crtdbg.h>
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    17
#endif
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    18
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    19
#if defined(__amigaos__) && defined(__USE_INLINE__)
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    20
#include <proto/expat.h>
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    21
#endif
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    22
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    23
/* This ensures proper sorting. */
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    24
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    25
#define NSSEP T('\001')
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    26
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    27
static void XMLCALL
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    28
characterData(void *userData, const XML_Char *s, int len)
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    29
{
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    30
  FILE *fp = (FILE *)userData;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    31
  for (; len > 0; --len, ++s) {
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    32
    switch (*s) {
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    33
    case T('&'):
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    34
      fputts(T("&amp;"), fp);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    35
      break;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    36
    case T('<'):
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    37
      fputts(T("&lt;"), fp);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    38
      break;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    39
    case T('>'):
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    40
      fputts(T("&gt;"), fp);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    41
      break;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    42
#ifdef W3C14N
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    43
    case 13:
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    44
      fputts(T("&#xD;"), fp);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    45
      break;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    46
#else
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    47
    case T('"'):
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    48
      fputts(T("&quot;"), fp);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    49
      break;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    50
    case 9:
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    51
    case 10:
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    52
    case 13:
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    53
      ftprintf(fp, T("&#%d;"), *s);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    54
      break;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    55
#endif
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    56
    default:
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    57
      puttc(*s, fp);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    58
      break;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    59
    }
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    60
  }
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    61
}
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    62
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    63
static void
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    64
attributeValue(FILE *fp, const XML_Char *s)
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    65
{
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    66
  puttc(T('='), fp);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    67
  puttc(T('"'), fp);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    68
  for (;;) {
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    69
    switch (*s) {
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    70
    case 0:
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    71
    case NSSEP:
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    72
      puttc(T('"'), fp);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    73
      return;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    74
    case T('&'):
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    75
      fputts(T("&amp;"), fp);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    76
      break;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    77
    case T('<'):
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    78
      fputts(T("&lt;"), fp);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    79
      break;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    80
    case T('"'):
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    81
      fputts(T("&quot;"), fp);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    82
      break;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    83
#ifdef W3C14N
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    84
    case 9:
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    85
      fputts(T("&#x9;"), fp);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    86
      break;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    87
    case 10:
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    88
      fputts(T("&#xA;"), fp);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    89
      break;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    90
    case 13:
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    91
      fputts(T("&#xD;"), fp);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    92
      break;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    93
#else
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    94
    case T('>'):
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    95
      fputts(T("&gt;"), fp);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    96
      break;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    97
    case 9:
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    98
    case 10:
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    99
    case 13:
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   100
      ftprintf(fp, T("&#%d;"), *s);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   101
      break;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   102
#endif
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   103
    default:
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   104
      puttc(*s, fp);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   105
      break;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   106
    }
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   107
    s++;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   108
  }
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   109
}
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   110
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   111
/* Lexicographically comparing UTF-8 encoded attribute values,
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   112
is equivalent to lexicographically comparing based on the character number. */
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   113
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   114
static int
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   115
attcmp(const void *att1, const void *att2)
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   116
{
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   117
  return tcscmp(*(const XML_Char **)att1, *(const XML_Char **)att2);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   118
}
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   119
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   120
static void XMLCALL
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   121
startElement(void *userData, const XML_Char *name, const XML_Char **atts)
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   122
{
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   123
  int nAtts;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   124
  const XML_Char **p;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   125
  FILE *fp = (FILE *)userData;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   126
  puttc(T('<'), fp);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   127
  fputts(name, fp);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   128
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   129
  p = atts;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   130
  while (*p)
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   131
    ++p;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   132
  nAtts = (int)((p - atts) >> 1);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   133
  if (nAtts > 1)
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   134
    qsort((void *)atts, nAtts, sizeof(XML_Char *) * 2, attcmp);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   135
  while (*atts) {
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   136
    puttc(T(' '), fp);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   137
    fputts(*atts++, fp);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   138
    attributeValue(fp, *atts);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   139
    atts++;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   140
  }
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   141
  puttc(T('>'), fp);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   142
}
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   143
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   144
static void XMLCALL
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   145
endElement(void *userData, const XML_Char *name)
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   146
{
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   147
  FILE *fp = (FILE *)userData;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   148
  puttc(T('<'), fp);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   149
  puttc(T('/'), fp);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   150
  fputts(name, fp);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   151
  puttc(T('>'), fp);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   152
}
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   153
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   154
static int
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   155
nsattcmp(const void *p1, const void *p2)
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   156
{
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   157
  const XML_Char *att1 = *(const XML_Char **)p1;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   158
  const XML_Char *att2 = *(const XML_Char **)p2;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   159
  int sep1 = (tcsrchr(att1, NSSEP) != 0);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   160
  int sep2 = (tcsrchr(att1, NSSEP) != 0);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   161
  if (sep1 != sep2)
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   162
    return sep1 - sep2;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   163
  return tcscmp(att1, att2);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   164
}
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   165
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   166
static void XMLCALL
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   167
startElementNS(void *userData, const XML_Char *name, const XML_Char **atts)
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   168
{
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   169
  int nAtts;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   170
  int nsi;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   171
  const XML_Char **p;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   172
  FILE *fp = (FILE *)userData;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   173
  const XML_Char *sep;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   174
  puttc(T('<'), fp);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   175
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   176
  sep = tcsrchr(name, NSSEP);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   177
  if (sep) {
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   178
    fputts(T("n1:"), fp);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   179
    fputts(sep + 1, fp);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   180
    fputts(T(" xmlns:n1"), fp);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   181
    attributeValue(fp, name);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   182
    nsi = 2;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   183
  }
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   184
  else {
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   185
    fputts(name, fp);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   186
    nsi = 1;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   187
  }
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   188
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   189
  p = atts;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   190
  while (*p)
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   191
    ++p;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   192
  nAtts = (int)((p - atts) >> 1);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   193
  if (nAtts > 1)
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   194
    qsort((void *)atts, nAtts, sizeof(XML_Char *) * 2, nsattcmp);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   195
  while (*atts) {
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   196
    name = *atts++;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   197
    sep = tcsrchr(name, NSSEP);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   198
    puttc(T(' '), fp);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   199
    if (sep) {
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   200
      ftprintf(fp, T("n%d:"), nsi);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   201
      fputts(sep + 1, fp);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   202
    }
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   203
    else
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   204
      fputts(name, fp);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   205
    attributeValue(fp, *atts);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   206
    if (sep) {
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   207
      ftprintf(fp, T(" xmlns:n%d"), nsi++);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   208
      attributeValue(fp, name);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   209
    }
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   210
    atts++;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   211
  }
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   212
  puttc(T('>'), fp);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   213
}
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   214
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   215
static void XMLCALL
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   216
endElementNS(void *userData, const XML_Char *name)
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   217
{
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   218
  FILE *fp = (FILE *)userData;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   219
  const XML_Char *sep;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   220
  puttc(T('<'), fp);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   221
  puttc(T('/'), fp);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   222
  sep = tcsrchr(name, NSSEP);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   223
  if (sep) {
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   224
    fputts(T("n1:"), fp);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   225
    fputts(sep + 1, fp);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   226
  }
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   227
  else
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   228
    fputts(name, fp);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   229
  puttc(T('>'), fp);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   230
}
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   231
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   232
#ifndef W3C14N
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   233
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   234
static void XMLCALL
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   235
processingInstruction(void *userData, const XML_Char *target,
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   236
                      const XML_Char *data)
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   237
{
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   238
  FILE *fp = (FILE *)userData;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   239
  puttc(T('<'), fp);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   240
  puttc(T('?'), fp);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   241
  fputts(target, fp);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   242
  puttc(T(' '), fp);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   243
  fputts(data, fp);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   244
  puttc(T('?'), fp);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   245
  puttc(T('>'), fp);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   246
}
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   247
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   248
#endif /* not W3C14N */
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   249
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   250
static void XMLCALL
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   251
defaultCharacterData(void *userData, const XML_Char *s, int len)
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   252
{
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   253
  XML_DefaultCurrent((XML_Parser) userData);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   254
}
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   255
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   256
static void XMLCALL
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   257
defaultStartElement(void *userData, const XML_Char *name,
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   258
                    const XML_Char **atts)
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   259
{
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   260
  XML_DefaultCurrent((XML_Parser) userData);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   261
}
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   262
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   263
static void XMLCALL
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   264
defaultEndElement(void *userData, const XML_Char *name)
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   265
{
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   266
  XML_DefaultCurrent((XML_Parser) userData);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   267
}
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   268
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   269
static void XMLCALL
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   270
defaultProcessingInstruction(void *userData, const XML_Char *target,
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   271
                             const XML_Char *data)
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   272
{
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   273
  XML_DefaultCurrent((XML_Parser) userData);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   274
}
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   275
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   276
static void XMLCALL
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   277
nopCharacterData(void *userData, const XML_Char *s, int len)
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   278
{
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   279
}
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   280
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   281
static void XMLCALL
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   282
nopStartElement(void *userData, const XML_Char *name, const XML_Char **atts)
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   283
{
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   284
}
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   285
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   286
static void XMLCALL
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   287
nopEndElement(void *userData, const XML_Char *name)
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   288
{
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   289
}
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   290
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   291
static void XMLCALL
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   292
nopProcessingInstruction(void *userData, const XML_Char *target,
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   293
                         const XML_Char *data)
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   294
{
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   295
}
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   296
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   297
static void XMLCALL
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   298
markup(void *userData, const XML_Char *s, int len)
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   299
{
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   300
  FILE *fp = (FILE *)XML_GetUserData((XML_Parser) userData);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   301
  for (; len > 0; --len, ++s)
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   302
    puttc(*s, fp);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   303
}
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   304
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   305
static void
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   306
metaLocation(XML_Parser parser)
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   307
{
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   308
  const XML_Char *uri = XML_GetBase(parser);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   309
  if (uri)
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   310
    ftprintf((FILE *)XML_GetUserData(parser), T(" uri=\"%s\""), uri);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   311
  ftprintf((FILE *)XML_GetUserData(parser),
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   312
           T(" byte=\"%" XML_FMT_INT_MOD "d\" nbytes=\"%d\" \
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   313
			 line=\"%" XML_FMT_INT_MOD "u\" col=\"%" XML_FMT_INT_MOD "u\""),
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   314
           XML_GetCurrentByteIndex(parser),
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   315
           XML_GetCurrentByteCount(parser),
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   316
           XML_GetCurrentLineNumber(parser),
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   317
           XML_GetCurrentColumnNumber(parser));
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   318
}
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   319
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   320
static void
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   321
metaStartDocument(void *userData)
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   322
{
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   323
  fputts(T("<document>\n"), (FILE *)XML_GetUserData((XML_Parser) userData));
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   324
}
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   325
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   326
static void
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   327
metaEndDocument(void *userData)
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   328
{
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   329
  fputts(T("</document>\n"), (FILE *)XML_GetUserData((XML_Parser) userData));
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   330
}
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   331
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   332
static void XMLCALL
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   333
metaStartElement(void *userData, const XML_Char *name,
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   334
                 const XML_Char **atts)
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   335
{
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   336
  XML_Parser parser = (XML_Parser) userData;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   337
  FILE *fp = (FILE *)XML_GetUserData(parser);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   338
  const XML_Char **specifiedAttsEnd
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   339
    = atts + XML_GetSpecifiedAttributeCount(parser);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   340
  const XML_Char **idAttPtr;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   341
  int idAttIndex = XML_GetIdAttributeIndex(parser);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   342
  if (idAttIndex < 0)
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   343
    idAttPtr = 0;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   344
  else
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   345
    idAttPtr = atts + idAttIndex;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   346
    
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   347
  ftprintf(fp, T("<starttag name=\"%s\""), name);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   348
  metaLocation(parser);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   349
  if (*atts) {
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   350
    fputts(T(">\n"), fp);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   351
    do {
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   352
      ftprintf(fp, T("<attribute name=\"%s\" value=\""), atts[0]);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   353
      characterData(fp, atts[1], (int)tcslen(atts[1]));
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   354
      if (atts >= specifiedAttsEnd)
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   355
        fputts(T("\" defaulted=\"yes\"/>\n"), fp);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   356
      else if (atts == idAttPtr)
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   357
        fputts(T("\" id=\"yes\"/>\n"), fp);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   358
      else
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   359
        fputts(T("\"/>\n"), fp);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   360
    } while (*(atts += 2));
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   361
    fputts(T("</starttag>\n"), fp);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   362
  }
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   363
  else
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   364
    fputts(T("/>\n"), fp);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   365
}
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   366
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   367
static void XMLCALL
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   368
metaEndElement(void *userData, const XML_Char *name)
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   369
{
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   370
  XML_Parser parser = (XML_Parser) userData;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   371
  FILE *fp = (FILE *)XML_GetUserData(parser);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   372
  ftprintf(fp, T("<endtag name=\"%s\""), name);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   373
  metaLocation(parser);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   374
  fputts(T("/>\n"), fp);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   375
}
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   376
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   377
static void XMLCALL
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   378
metaProcessingInstruction(void *userData, const XML_Char *target,
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   379
                          const XML_Char *data)
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   380
{
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   381
  XML_Parser parser = (XML_Parser) userData;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   382
  FILE *fp = (FILE *)XML_GetUserData(parser);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   383
  ftprintf(fp, T("<pi target=\"%s\" data=\""), target);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   384
  characterData(fp, data, (int)tcslen(data));
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   385
  puttc(T('"'), fp);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   386
  metaLocation(parser);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   387
  fputts(T("/>\n"), fp);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   388
}
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   389
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   390
static void XMLCALL
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   391
metaComment(void *userData, const XML_Char *data)
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   392
{
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   393
  XML_Parser parser = (XML_Parser) userData;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   394
  FILE *fp = (FILE *)XML_GetUserData(parser);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   395
  fputts(T("<comment data=\""), fp);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   396
  characterData(fp, data, (int)tcslen(data));
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   397
  puttc(T('"'), fp);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   398
  metaLocation(parser);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   399
  fputts(T("/>\n"), fp);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   400
}
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   401
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   402
static void XMLCALL
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   403
metaStartCdataSection(void *userData)
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   404
{
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   405
  XML_Parser parser = (XML_Parser) userData;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   406
  FILE *fp = (FILE *)XML_GetUserData(parser);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   407
  fputts(T("<startcdata"), fp);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   408
  metaLocation(parser);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   409
  fputts(T("/>\n"), fp);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   410
}
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   411
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   412
static void XMLCALL
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   413
metaEndCdataSection(void *userData)
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   414
{
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   415
  XML_Parser parser = (XML_Parser) userData;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   416
  FILE *fp = (FILE *)XML_GetUserData(parser);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   417
  fputts(T("<endcdata"), fp);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   418
  metaLocation(parser);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   419
  fputts(T("/>\n"), fp);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   420
}
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   421
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   422
static void XMLCALL
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   423
metaCharacterData(void *userData, const XML_Char *s, int len)
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   424
{
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   425
  XML_Parser parser = (XML_Parser) userData;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   426
  FILE *fp = (FILE *)XML_GetUserData(parser);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   427
  fputts(T("<chars str=\""), fp);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   428
  characterData(fp, s, len);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   429
  puttc(T('"'), fp);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   430
  metaLocation(parser);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   431
  fputts(T("/>\n"), fp);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   432
}
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   433
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   434
static void XMLCALL
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   435
metaStartDoctypeDecl(void *userData,
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   436
                     const XML_Char *doctypeName,
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   437
                     const XML_Char *sysid,
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   438
                     const XML_Char *pubid,
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   439
                     int has_internal_subset)
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   440
{
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   441
  XML_Parser parser = (XML_Parser) userData;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   442
  FILE *fp = (FILE *)XML_GetUserData(parser);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   443
  ftprintf(fp, T("<startdoctype name=\"%s\""), doctypeName);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   444
  metaLocation(parser);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   445
  fputts(T("/>\n"), fp);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   446
}
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   447
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   448
static void XMLCALL
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   449
metaEndDoctypeDecl(void *userData)
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   450
{
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   451
  XML_Parser parser = (XML_Parser) userData;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   452
  FILE *fp = (FILE *)XML_GetUserData(parser);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   453
  fputts(T("<enddoctype"), fp);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   454
  metaLocation(parser);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   455
  fputts(T("/>\n"), fp);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   456
}
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   457
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   458
static void XMLCALL
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   459
metaNotationDecl(void *userData,
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   460
                 const XML_Char *notationName,
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   461
                 const XML_Char *base,
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   462
                 const XML_Char *systemId,
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   463
                 const XML_Char *publicId)
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   464
{
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   465
  XML_Parser parser = (XML_Parser) userData;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   466
  FILE *fp = (FILE *)XML_GetUserData(parser);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   467
  ftprintf(fp, T("<notation name=\"%s\""), notationName);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   468
  if (publicId)
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   469
    ftprintf(fp, T(" public=\"%s\""), publicId);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   470
  if (systemId) {
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   471
    fputts(T(" system=\""), fp);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   472
    characterData(fp, systemId, (int)tcslen(systemId));
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   473
    puttc(T('"'), fp);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   474
  }
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   475
  metaLocation(parser);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   476
  fputts(T("/>\n"), fp);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   477
}
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   478
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   479
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   480
static void XMLCALL
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   481
metaEntityDecl(void *userData,
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   482
               const XML_Char *entityName,
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   483
               int  is_param,
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   484
               const XML_Char *value,
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   485
               int  value_length,
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   486
               const XML_Char *base,
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   487
               const XML_Char *systemId,
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   488
               const XML_Char *publicId,
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   489
               const XML_Char *notationName)
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   490
{
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   491
  XML_Parser parser = (XML_Parser) userData;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   492
  FILE *fp = (FILE *)XML_GetUserData(parser);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   493
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   494
  if (value) {
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   495
    ftprintf(fp, T("<entity name=\"%s\""), entityName);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   496
    metaLocation(parser);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   497
    puttc(T('>'), fp);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   498
    characterData(fp, value, value_length);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   499
    fputts(T("</entity/>\n"), fp);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   500
  }
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   501
  else if (notationName) {
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   502
    ftprintf(fp, T("<entity name=\"%s\""), entityName);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   503
    if (publicId)
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   504
      ftprintf(fp, T(" public=\"%s\""), publicId);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   505
    fputts(T(" system=\""), fp);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   506
    characterData(fp, systemId, (int)tcslen(systemId));
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   507
    puttc(T('"'), fp);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   508
    ftprintf(fp, T(" notation=\"%s\""), notationName);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   509
    metaLocation(parser);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   510
    fputts(T("/>\n"), fp);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   511
  }
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   512
  else {
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   513
    ftprintf(fp, T("<entity name=\"%s\""), entityName);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   514
    if (publicId)
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   515
      ftprintf(fp, T(" public=\"%s\""), publicId);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   516
    fputts(T(" system=\""), fp);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   517
    characterData(fp, systemId, (int)tcslen(systemId));
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   518
    puttc(T('"'), fp);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   519
    metaLocation(parser);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   520
    fputts(T("/>\n"), fp);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   521
  }
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   522
}
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   523
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   524
static void XMLCALL
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   525
metaStartNamespaceDecl(void *userData,
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   526
                       const XML_Char *prefix,
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   527
                       const XML_Char *uri)
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   528
{
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   529
  XML_Parser parser = (XML_Parser) userData;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   530
  FILE *fp = (FILE *)XML_GetUserData(parser);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   531
  fputts(T("<startns"), fp);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   532
  if (prefix)
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   533
    ftprintf(fp, T(" prefix=\"%s\""), prefix);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   534
  if (uri) {
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   535
    fputts(T(" ns=\""), fp);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   536
    characterData(fp, uri, (int)tcslen(uri));
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   537
    fputts(T("\"/>\n"), fp);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   538
  }
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   539
  else
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   540
    fputts(T("/>\n"), fp);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   541
}
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   542
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   543
static void XMLCALL
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   544
metaEndNamespaceDecl(void *userData, const XML_Char *prefix)
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   545
{
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   546
  XML_Parser parser = (XML_Parser) userData;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   547
  FILE *fp = (FILE *)XML_GetUserData(parser);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   548
  if (!prefix)
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   549
    fputts(T("<endns/>\n"), fp);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   550
  else
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   551
    ftprintf(fp, T("<endns prefix=\"%s\"/>\n"), prefix);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   552
}
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   553
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   554
static int XMLCALL
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   555
unknownEncodingConvert(void *data, const char *p)
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   556
{
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   557
  return codepageConvert(*(int *)data, p);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   558
}
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   559
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   560
static int XMLCALL
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   561
unknownEncoding(void *userData, const XML_Char *name, XML_Encoding *info)
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   562
{
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   563
  int cp;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   564
  static const XML_Char prefixL[] = T("windows-");
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   565
  static const XML_Char prefixU[] = T("WINDOWS-");
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   566
  int i;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   567
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   568
  for (i = 0; prefixU[i]; i++)
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   569
    if (name[i] != prefixU[i] && name[i] != prefixL[i])
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   570
      return 0;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   571
  
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   572
  cp = 0;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   573
  for (; name[i]; i++) {
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   574
    static const XML_Char digits[] = T("0123456789");
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   575
    const XML_Char *s = tcschr(digits, name[i]);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   576
    if (!s)
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   577
      return 0;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   578
    cp *= 10;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   579
    cp += (int)(s - digits);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   580
    if (cp >= 0x10000)
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   581
      return 0;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   582
  }
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   583
  if (!codepageMap(cp, info->map))
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   584
    return 0;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   585
  info->convert = unknownEncodingConvert;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   586
  /* We could just cast the code page integer to a void *,
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   587
  and avoid the use of release. */
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   588
  info->release = free;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   589
  info->data = malloc(sizeof(int));
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   590
  if (!info->data)
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   591
    return 0;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   592
  *(int *)info->data = cp;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   593
  return 1;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   594
}
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   595
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   596
static int XMLCALL
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   597
notStandalone(void *userData)
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   598
{
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   599
  return 0;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   600
}
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   601
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   602
static void
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   603
showVersion(XML_Char *prog)
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   604
{
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   605
  XML_Char *s = prog;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   606
  XML_Char ch;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   607
  const XML_Feature *features = XML_GetFeatureList();
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   608
  while ((ch = *s) != 0) {
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   609
    if (ch == '/'
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   610
#if (defined(WIN32) || defined(__WATCOMC__))
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   611
        || ch == '\\'
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   612
#endif
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   613
        )
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   614
      prog = s + 1;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   615
    ++s;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   616
  }
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   617
  ftprintf(stdout, T("%s using %s\n"), prog, XML_ExpatVersion());
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   618
  if (features != NULL && features[0].feature != XML_FEATURE_END) {
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   619
    int i = 1;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   620
    ftprintf(stdout, T("%s"), features[0].name);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   621
    if (features[0].value)
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   622
      ftprintf(stdout, T("=%ld"), features[0].value);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   623
    while (features[i].feature != XML_FEATURE_END) {
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   624
      ftprintf(stdout, T(", %s"), features[i].name);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   625
      if (features[i].value)
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   626
        ftprintf(stdout, T("=%ld"), features[i].value);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   627
      ++i;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   628
    }
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   629
    ftprintf(stdout, T("\n"));
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   630
  }
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   631
}
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   632
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   633
static void
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   634
usage(const XML_Char *prog, int rc)
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   635
{
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   636
  ftprintf(stderr,
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   637
           T("usage: %s [-n] [-p] [-r] [-s] [-w] [-x] [-d output-dir] "
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   638
             "[-e encoding] file ...\n"), prog);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   639
  exit(rc);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   640
}
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   641
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   642
int
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   643
tmain(int argc, XML_Char **argv)
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   644
{
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   645
  int i, j;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   646
  const XML_Char *outputDir = NULL;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   647
  const XML_Char *encoding = NULL;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   648
  unsigned processFlags = XML_MAP_FILE;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   649
  int windowsCodePages = 0;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   650
  int outputType = 0;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   651
  int useNamespaces = 0;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   652
  int requireStandalone = 0;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   653
  enum XML_ParamEntityParsing paramEntityParsing = 
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   654
    XML_PARAM_ENTITY_PARSING_NEVER;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   655
  int useStdin = 0;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   656
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   657
#ifdef _MSC_VER
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   658
  _CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF|_CRTDBG_LEAK_CHECK_DF);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   659
#endif
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   660
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   661
  i = 1;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   662
  j = 0;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   663
  while (i < argc) {
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   664
    if (j == 0) {
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   665
      if (argv[i][0] != T('-'))
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   666
        break;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   667
      if (argv[i][1] == T('-') && argv[i][2] == T('\0')) {
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   668
        i++;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   669
        break;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   670
      }
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   671
      j++;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   672
    }
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   673
    switch (argv[i][j]) {
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   674
    case T('r'):
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   675
      processFlags &= ~XML_MAP_FILE;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   676
      j++;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   677
      break;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   678
    case T('s'):
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   679
      requireStandalone = 1;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   680
      j++;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   681
      break;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   682
    case T('n'):
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   683
      useNamespaces = 1;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   684
      j++;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   685
      break;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   686
    case T('p'):
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   687
      paramEntityParsing = XML_PARAM_ENTITY_PARSING_ALWAYS;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   688
      /* fall through */
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   689
    case T('x'):
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   690
      processFlags |= XML_EXTERNAL_ENTITIES;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   691
      j++;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   692
      break;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   693
    case T('w'):
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   694
      windowsCodePages = 1;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   695
      j++;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   696
      break;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   697
    case T('m'):
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   698
      outputType = 'm';
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   699
      j++;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   700
      break;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   701
    case T('c'):
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   702
      outputType = 'c';
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   703
      useNamespaces = 0;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   704
      j++;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   705
      break;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   706
    case T('t'):
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   707
      outputType = 't';
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   708
      j++;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   709
      break;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   710
    case T('d'):
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   711
      if (argv[i][j + 1] == T('\0')) {
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   712
        if (++i == argc)
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   713
          usage(argv[0], 2);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   714
        outputDir = argv[i];
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   715
      }
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   716
      else
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   717
        outputDir = argv[i] + j + 1;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   718
      i++;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   719
      j = 0;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   720
      break;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   721
    case T('e'):
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   722
      if (argv[i][j + 1] == T('\0')) {
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   723
        if (++i == argc)
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   724
          usage(argv[0], 2);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   725
        encoding = argv[i];
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   726
      }
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   727
      else
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   728
        encoding = argv[i] + j + 1;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   729
      i++;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   730
      j = 0;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   731
      break;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   732
    case T('h'):
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   733
      usage(argv[0], 0);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   734
      return 0;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   735
    case T('v'):
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   736
      showVersion(argv[0]);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   737
      return 0;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   738
    case T('\0'):
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   739
      if (j > 1) {
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   740
        i++;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   741
        j = 0;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   742
        break;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   743
      }
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   744
      /* fall through */
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   745
    default:
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   746
      usage(argv[0], 2);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   747
    }
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   748
  }
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   749
  if (i == argc) {
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   750
    useStdin = 1;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   751
    processFlags &= ~XML_MAP_FILE;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   752
    i--;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   753
  }
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   754
  for (; i < argc; i++) {
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   755
    FILE *fp = 0;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   756
    XML_Char *outName = 0;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   757
    int result;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   758
    XML_Parser parser;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   759
    if (useNamespaces)
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   760
      parser = XML_ParserCreateNS(encoding, NSSEP);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   761
    else
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   762
      parser = XML_ParserCreate(encoding);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   763
    if (requireStandalone)
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   764
      XML_SetNotStandaloneHandler(parser, notStandalone);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   765
    XML_SetParamEntityParsing(parser, paramEntityParsing);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   766
    if (outputType == 't') {
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   767
      /* This is for doing timings; this gives a more realistic estimate of
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   768
         the parsing time. */
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   769
      outputDir = 0;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   770
      XML_SetElementHandler(parser, nopStartElement, nopEndElement);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   771
      XML_SetCharacterDataHandler(parser, nopCharacterData);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   772
      XML_SetProcessingInstructionHandler(parser, nopProcessingInstruction);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   773
    }
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   774
    else if (outputDir) {
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   775
      const XML_Char * delim = T("/");
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   776
      const XML_Char *file = useStdin ? T("STDIN") : argv[i];
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   777
      if (!useStdin) {
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   778
        /* Jump after last (back)slash */
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   779
        const XML_Char * lastDelim = tcsrchr(file, delim[0]);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   780
        if (lastDelim)
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   781
          file = lastDelim + 1;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   782
#if (defined(WIN32) || defined(__WATCOMC__))
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   783
        else {
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   784
          const XML_Char * winDelim = T("\\");
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   785
          lastDelim = tcsrchr(file, winDelim[0]);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   786
          if (lastDelim) {
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   787
            file = lastDelim + 1;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   788
            delim = winDelim;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   789
          }
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   790
        }
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   791
#endif
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   792
      }
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   793
      outName = (XML_Char *)malloc((tcslen(outputDir) + tcslen(file) + 2)
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   794
                       * sizeof(XML_Char));
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   795
      tcscpy(outName, outputDir);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   796
      tcscat(outName, delim);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   797
      tcscat(outName, file);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   798
      fp = tfopen(outName, T("wb"));
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   799
      if (!fp) {
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   800
        tperror(outName);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   801
        exit(1);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   802
      }
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   803
      setvbuf(fp, NULL, _IOFBF, 16384);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   804
#ifdef XML_UNICODE
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   805
      puttc(0xFEFF, fp);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   806
#endif
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   807
      XML_SetUserData(parser, fp);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   808
      switch (outputType) {
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   809
      case 'm':
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   810
        XML_UseParserAsHandlerArg(parser);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   811
        XML_SetElementHandler(parser, metaStartElement, metaEndElement);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   812
        XML_SetProcessingInstructionHandler(parser, metaProcessingInstruction);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   813
        XML_SetCommentHandler(parser, metaComment);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   814
        XML_SetCdataSectionHandler(parser, metaStartCdataSection,
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   815
                                   metaEndCdataSection);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   816
        XML_SetCharacterDataHandler(parser, metaCharacterData);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   817
        XML_SetDoctypeDeclHandler(parser, metaStartDoctypeDecl,
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   818
                                  metaEndDoctypeDecl);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   819
        XML_SetEntityDeclHandler(parser, metaEntityDecl);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   820
        XML_SetNotationDeclHandler(parser, metaNotationDecl);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   821
        XML_SetNamespaceDeclHandler(parser, metaStartNamespaceDecl,
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   822
                                    metaEndNamespaceDecl);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   823
        metaStartDocument(parser);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   824
        break;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   825
      case 'c':
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   826
        XML_UseParserAsHandlerArg(parser);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   827
        XML_SetDefaultHandler(parser, markup);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   828
        XML_SetElementHandler(parser, defaultStartElement, defaultEndElement);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   829
        XML_SetCharacterDataHandler(parser, defaultCharacterData);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   830
        XML_SetProcessingInstructionHandler(parser,
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   831
                                            defaultProcessingInstruction);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   832
        break;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   833
      default:
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   834
        if (useNamespaces)
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   835
          XML_SetElementHandler(parser, startElementNS, endElementNS);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   836
        else
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   837
          XML_SetElementHandler(parser, startElement, endElement);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   838
        XML_SetCharacterDataHandler(parser, characterData);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   839
#ifndef W3C14N
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   840
        XML_SetProcessingInstructionHandler(parser, processingInstruction);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   841
#endif /* not W3C14N */
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   842
        break;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   843
      }
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   844
    }
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   845
    if (windowsCodePages)
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   846
      XML_SetUnknownEncodingHandler(parser, unknownEncoding, 0);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   847
    result = XML_ProcessFile(parser, useStdin ? NULL : argv[i], processFlags);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   848
    if (outputDir) {
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   849
      if (outputType == 'm')
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   850
        metaEndDocument(parser);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   851
      fclose(fp);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   852
      if (!result)
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   853
        tremove(outName);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   854
      free(outName);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   855
    }
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   856
    XML_ParserFree(parser);
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   857
  }
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   858
  return 0;
b831df7d33f9 Expat source code added
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   859
}