@helm2/poc_jenki_rce 0.0.1

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of @helm2/poc_jenki_rce might be problematic. Click here for more details.

Files changed (160) hide show
  1. package/LICENSE +19 -0
  2. package/Makefile +18 -0
  3. package/README.md +52 -0
  4. package/binding.gyp +81 -0
  5. package/index.d.ts +273 -0
  6. package/index.js +45 -0
  7. package/lib/bindings.js +1 -0
  8. package/lib/document.js +118 -0
  9. package/lib/element.js +82 -0
  10. package/lib/sax_parser.js +38 -0
  11. package/package.json +70 -0
  12. package/src/html_document.cc +7 -0
  13. package/src/html_document.h +18 -0
  14. package/src/libxmljs.cc +252 -0
  15. package/src/libxmljs.h +53 -0
  16. package/src/xml_attribute.cc +173 -0
  17. package/src/xml_attribute.h +40 -0
  18. package/src/xml_comment.cc +117 -0
  19. package/src/xml_comment.h +30 -0
  20. package/src/xml_document.cc +810 -0
  21. package/src/xml_document.h +67 -0
  22. package/src/xml_element.cc +565 -0
  23. package/src/xml_element.h +61 -0
  24. package/src/xml_namespace.cc +158 -0
  25. package/src/xml_namespace.h +39 -0
  26. package/src/xml_node.cc +761 -0
  27. package/src/xml_node.h +73 -0
  28. package/src/xml_pi.cc +161 -0
  29. package/src/xml_pi.h +34 -0
  30. package/src/xml_sax_parser.cc +424 -0
  31. package/src/xml_sax_parser.h +73 -0
  32. package/src/xml_syntax_error.cc +66 -0
  33. package/src/xml_syntax_error.h +25 -0
  34. package/src/xml_text.cc +320 -0
  35. package/src/xml_text.h +48 -0
  36. package/src/xml_textwriter.cc +315 -0
  37. package/src/xml_textwriter.h +62 -0
  38. package/src/xml_xpath_context.cc +70 -0
  39. package/src/xml_xpath_context.h +23 -0
  40. package/vendor/libxml/Copyright +23 -0
  41. package/vendor/libxml/DOCBparser.c +305 -0
  42. package/vendor/libxml/HTMLparser.c +7287 -0
  43. package/vendor/libxml/HTMLtree.c +1200 -0
  44. package/vendor/libxml/Makefile +2983 -0
  45. package/vendor/libxml/SAX.c +180 -0
  46. package/vendor/libxml/SAX2.c +3036 -0
  47. package/vendor/libxml/buf.c +1351 -0
  48. package/vendor/libxml/buf.h +72 -0
  49. package/vendor/libxml/c14n.c +2234 -0
  50. package/vendor/libxml/catalog.c +3828 -0
  51. package/vendor/libxml/chvalid.c +336 -0
  52. package/vendor/libxml/config.h +294 -0
  53. package/vendor/libxml/config.h.gch +0 -0
  54. package/vendor/libxml/debugXML.c +3423 -0
  55. package/vendor/libxml/dict.c +1298 -0
  56. package/vendor/libxml/elfgcchack.h +17818 -0
  57. package/vendor/libxml/enc.h +32 -0
  58. package/vendor/libxml/encoding.c +3975 -0
  59. package/vendor/libxml/entities.c +1163 -0
  60. package/vendor/libxml/error.c +998 -0
  61. package/vendor/libxml/globals.c +1126 -0
  62. package/vendor/libxml/hash.c +1146 -0
  63. package/vendor/libxml/include/libxml/DOCBparser.h +96 -0
  64. package/vendor/libxml/include/libxml/HTMLparser.h +306 -0
  65. package/vendor/libxml/include/libxml/HTMLtree.h +147 -0
  66. package/vendor/libxml/include/libxml/Makefile +725 -0
  67. package/vendor/libxml/include/libxml/Makefile.am +54 -0
  68. package/vendor/libxml/include/libxml/Makefile.in +725 -0
  69. package/vendor/libxml/include/libxml/SAX.h +173 -0
  70. package/vendor/libxml/include/libxml/SAX2.h +178 -0
  71. package/vendor/libxml/include/libxml/c14n.h +128 -0
  72. package/vendor/libxml/include/libxml/catalog.h +182 -0
  73. package/vendor/libxml/include/libxml/chvalid.h +230 -0
  74. package/vendor/libxml/include/libxml/debugXML.h +217 -0
  75. package/vendor/libxml/include/libxml/dict.h +79 -0
  76. package/vendor/libxml/include/libxml/encoding.h +245 -0
  77. package/vendor/libxml/include/libxml/entities.h +151 -0
  78. package/vendor/libxml/include/libxml/globals.h +508 -0
  79. package/vendor/libxml/include/libxml/hash.h +236 -0
  80. package/vendor/libxml/include/libxml/list.h +137 -0
  81. package/vendor/libxml/include/libxml/nanoftp.h +163 -0
  82. package/vendor/libxml/include/libxml/nanohttp.h +81 -0
  83. package/vendor/libxml/include/libxml/parser.h +1243 -0
  84. package/vendor/libxml/include/libxml/parserInternals.h +644 -0
  85. package/vendor/libxml/include/libxml/pattern.h +100 -0
  86. package/vendor/libxml/include/libxml/relaxng.h +217 -0
  87. package/vendor/libxml/include/libxml/schemasInternals.h +958 -0
  88. package/vendor/libxml/include/libxml/schematron.h +142 -0
  89. package/vendor/libxml/include/libxml/threads.h +89 -0
  90. package/vendor/libxml/include/libxml/tree.h +1311 -0
  91. package/vendor/libxml/include/libxml/uri.h +94 -0
  92. package/vendor/libxml/include/libxml/valid.h +458 -0
  93. package/vendor/libxml/include/libxml/xinclude.h +129 -0
  94. package/vendor/libxml/include/libxml/xlink.h +189 -0
  95. package/vendor/libxml/include/libxml/xmlIO.h +368 -0
  96. package/vendor/libxml/include/libxml/xmlautomata.h +146 -0
  97. package/vendor/libxml/include/libxml/xmlerror.h +945 -0
  98. package/vendor/libxml/include/libxml/xmlexports.h +77 -0
  99. package/vendor/libxml/include/libxml/xmlmemory.h +224 -0
  100. package/vendor/libxml/include/libxml/xmlmodule.h +57 -0
  101. package/vendor/libxml/include/libxml/xmlreader.h +428 -0
  102. package/vendor/libxml/include/libxml/xmlregexp.h +222 -0
  103. package/vendor/libxml/include/libxml/xmlsave.h +88 -0
  104. package/vendor/libxml/include/libxml/xmlschemas.h +246 -0
  105. package/vendor/libxml/include/libxml/xmlschemastypes.h +151 -0
  106. package/vendor/libxml/include/libxml/xmlstring.h +140 -0
  107. package/vendor/libxml/include/libxml/xmlunicode.h +202 -0
  108. package/vendor/libxml/include/libxml/xmlversion.h +484 -0
  109. package/vendor/libxml/include/libxml/xmlwin32version.h +239 -0
  110. package/vendor/libxml/include/libxml/xmlwriter.h +488 -0
  111. package/vendor/libxml/include/libxml/xpath.h +564 -0
  112. package/vendor/libxml/include/libxml/xpathInternals.h +632 -0
  113. package/vendor/libxml/include/libxml/xpointer.h +114 -0
  114. package/vendor/libxml/include/win32config.h +122 -0
  115. package/vendor/libxml/include/wsockcompat.h +54 -0
  116. package/vendor/libxml/legacy.c +1343 -0
  117. package/vendor/libxml/libxml.h +134 -0
  118. package/vendor/libxml/list.c +779 -0
  119. package/vendor/libxml/nanoftp.c +2118 -0
  120. package/vendor/libxml/nanohttp.c +1899 -0
  121. package/vendor/libxml/parser.c +15553 -0
  122. package/vendor/libxml/parserInternals.c +2164 -0
  123. package/vendor/libxml/pattern.c +2621 -0
  124. package/vendor/libxml/relaxng.c +11101 -0
  125. package/vendor/libxml/rngparser.c +1595 -0
  126. package/vendor/libxml/runsuite.c +1157 -0
  127. package/vendor/libxml/save.h +36 -0
  128. package/vendor/libxml/schematron.c +1787 -0
  129. package/vendor/libxml/threads.c +1049 -0
  130. package/vendor/libxml/timsort.h +601 -0
  131. package/vendor/libxml/tree.c +10183 -0
  132. package/vendor/libxml/trio.c +6895 -0
  133. package/vendor/libxml/trio.h +230 -0
  134. package/vendor/libxml/triodef.h +228 -0
  135. package/vendor/libxml/trionan.c +914 -0
  136. package/vendor/libxml/trionan.h +84 -0
  137. package/vendor/libxml/triop.h +150 -0
  138. package/vendor/libxml/triostr.c +2112 -0
  139. package/vendor/libxml/triostr.h +144 -0
  140. package/vendor/libxml/uri.c +2561 -0
  141. package/vendor/libxml/valid.c +7138 -0
  142. package/vendor/libxml/xinclude.c +2657 -0
  143. package/vendor/libxml/xlink.c +183 -0
  144. package/vendor/libxml/xmlIO.c +4135 -0
  145. package/vendor/libxml/xmlcatalog.c +624 -0
  146. package/vendor/libxml/xmllint.c +3796 -0
  147. package/vendor/libxml/xmlmemory.c +1163 -0
  148. package/vendor/libxml/xmlmodule.c +468 -0
  149. package/vendor/libxml/xmlreader.c +6033 -0
  150. package/vendor/libxml/xmlregexp.c +8271 -0
  151. package/vendor/libxml/xmlsave.c +2735 -0
  152. package/vendor/libxml/xmlschemas.c +29173 -0
  153. package/vendor/libxml/xmlschemastypes.c +6276 -0
  154. package/vendor/libxml/xmlstring.c +1050 -0
  155. package/vendor/libxml/xmlunicode.c +3179 -0
  156. package/vendor/libxml/xmlwriter.c +4738 -0
  157. package/vendor/libxml/xpath.c +14734 -0
  158. package/vendor/libxml/xpointer.c +2969 -0
  159. package/vendor/libxml/xzlib.c +815 -0
  160. package/vendor/libxml/xzlib.h +19 -0
@@ -0,0 +1,624 @@
1
+ /*
2
+ * xmlcatalog.c : a small utility program to handle XML catalogs
3
+ *
4
+ * See Copyright for the status of this software.
5
+ *
6
+ * daniel@veillard.com
7
+ */
8
+
9
+ #include "libxml.h"
10
+
11
+ #include <string.h>
12
+ #include <stdio.h>
13
+ #include <stdarg.h>
14
+
15
+ #ifdef HAVE_STDLIB_H
16
+ #include <stdlib.h>
17
+ #endif
18
+
19
+ #ifdef HAVE_LIBREADLINE
20
+ #include <readline/readline.h>
21
+ #ifdef HAVE_LIBHISTORY
22
+ #include <readline/history.h>
23
+ #endif
24
+ #endif
25
+
26
+ #include <libxml/xmlmemory.h>
27
+ #include <libxml/uri.h>
28
+ #include <libxml/catalog.h>
29
+ #include <libxml/parser.h>
30
+ #include <libxml/globals.h>
31
+
32
+ #if defined(LIBXML_CATALOG_ENABLED) && defined(LIBXML_OUTPUT_ENABLED)
33
+ static int shell = 0;
34
+ static int sgml = 0;
35
+ static int noout = 0;
36
+ static int create = 0;
37
+ static int add = 0;
38
+ static int del = 0;
39
+ static int convert = 0;
40
+ static int no_super_update = 0;
41
+ static int verbose = 0;
42
+ static char *filename = NULL;
43
+
44
+
45
+ #ifndef XML_SGML_DEFAULT_CATALOG
46
+ #define XML_SGML_DEFAULT_CATALOG "/etc/sgml/catalog"
47
+ #endif
48
+
49
+ /************************************************************************
50
+ * *
51
+ * Shell Interface *
52
+ * *
53
+ ************************************************************************/
54
+ /**
55
+ * xmlShellReadline:
56
+ * @prompt: the prompt value
57
+ *
58
+ * Read a string
59
+ *
60
+ * Returns a pointer to it or NULL on EOF the caller is expected to
61
+ * free the returned string.
62
+ */
63
+ static char *
64
+ xmlShellReadline(const char *prompt) {
65
+ #ifdef HAVE_LIBREADLINE
66
+ char *line_read;
67
+
68
+ /* Get a line from the user. */
69
+ line_read = readline (prompt);
70
+
71
+ /* If the line has any text in it, save it on the history. */
72
+ if (line_read && *line_read)
73
+ add_history (line_read);
74
+
75
+ return (line_read);
76
+ #else
77
+ char line_read[501];
78
+ char *ret;
79
+ int len;
80
+
81
+ if (prompt != NULL)
82
+ fprintf(stdout, "%s", prompt);
83
+ fflush(stdout);
84
+ if (!fgets(line_read, 500, stdin))
85
+ return(NULL);
86
+ line_read[500] = 0;
87
+ len = strlen(line_read);
88
+ ret = (char *) malloc(len + 1);
89
+ if (ret != NULL) {
90
+ memcpy (ret, line_read, len + 1);
91
+ }
92
+ return(ret);
93
+ #endif
94
+ }
95
+
96
+ static void usershell(void) {
97
+ char *cmdline = NULL, *cur;
98
+ int nbargs;
99
+ char command[100];
100
+ char arg[400];
101
+ char *argv[20];
102
+ int i, ret;
103
+ xmlChar *ans;
104
+
105
+ while (1) {
106
+ cmdline = xmlShellReadline("> ");
107
+ if (cmdline == NULL)
108
+ return;
109
+
110
+ /*
111
+ * Parse the command itself
112
+ */
113
+ cur = cmdline;
114
+ nbargs = 0;
115
+ while ((*cur == ' ') || (*cur == '\t')) cur++;
116
+ i = 0;
117
+ while ((*cur != ' ') && (*cur != '\t') &&
118
+ (*cur != '\n') && (*cur != '\r')) {
119
+ if (*cur == 0)
120
+ break;
121
+ command[i++] = *cur++;
122
+ }
123
+ command[i] = 0;
124
+ if (i == 0) {
125
+ free(cmdline);
126
+ continue;
127
+ }
128
+
129
+ /*
130
+ * Parse the argument string
131
+ */
132
+ memset(arg, 0, sizeof(arg));
133
+ while ((*cur == ' ') || (*cur == '\t')) cur++;
134
+ i = 0;
135
+ while ((*cur != '\n') && (*cur != '\r') && (*cur != 0)) {
136
+ if (*cur == 0)
137
+ break;
138
+ arg[i++] = *cur++;
139
+ }
140
+ arg[i] = 0;
141
+
142
+ /*
143
+ * Parse the arguments
144
+ */
145
+ i = 0;
146
+ nbargs = 0;
147
+ cur = arg;
148
+ memset(argv, 0, sizeof(argv));
149
+ while (*cur != 0) {
150
+ while ((*cur == ' ') || (*cur == '\t')) cur++;
151
+ if (*cur == '\'') {
152
+ cur++;
153
+ argv[i] = cur;
154
+ while ((*cur != 0) && (*cur != '\'')) cur++;
155
+ if (*cur == '\'') {
156
+ *cur = 0;
157
+ nbargs++;
158
+ i++;
159
+ cur++;
160
+ }
161
+ } else if (*cur == '"') {
162
+ cur++;
163
+ argv[i] = cur;
164
+ while ((*cur != 0) && (*cur != '"')) cur++;
165
+ if (*cur == '"') {
166
+ *cur = 0;
167
+ nbargs++;
168
+ i++;
169
+ cur++;
170
+ }
171
+ } else {
172
+ argv[i] = cur;
173
+ while ((*cur != 0) && (*cur != ' ') && (*cur != '\t'))
174
+ cur++;
175
+ *cur = 0;
176
+ nbargs++;
177
+ i++;
178
+ cur++;
179
+ }
180
+ }
181
+
182
+ /*
183
+ * start interpreting the command
184
+ */
185
+ if (!strcmp(command, "exit") ||
186
+ !strcmp(command, "quit") ||
187
+ !strcmp(command, "bye")) {
188
+ free(cmdline);
189
+ break;
190
+ }
191
+
192
+ if (!strcmp(command, "public")) {
193
+ if (nbargs != 1) {
194
+ printf("public requires 1 arguments\n");
195
+ } else {
196
+ ans = xmlCatalogResolvePublic((const xmlChar *) argv[0]);
197
+ if (ans == NULL) {
198
+ printf("No entry for PUBLIC %s\n", argv[0]);
199
+ } else {
200
+ printf("%s\n", (char *) ans);
201
+ xmlFree(ans);
202
+ }
203
+ }
204
+ } else if (!strcmp(command, "system")) {
205
+ if (nbargs != 1) {
206
+ printf("system requires 1 arguments\n");
207
+ } else {
208
+ ans = xmlCatalogResolveSystem((const xmlChar *) argv[0]);
209
+ if (ans == NULL) {
210
+ printf("No entry for SYSTEM %s\n", argv[0]);
211
+ } else {
212
+ printf("%s\n", (char *) ans);
213
+ xmlFree(ans);
214
+ }
215
+ }
216
+ } else if (!strcmp(command, "add")) {
217
+ if (sgml) {
218
+ if ((nbargs != 3) && (nbargs != 2)) {
219
+ printf("add requires 2 or 3 arguments\n");
220
+ } else {
221
+ if (argv[2] == NULL)
222
+ ret = xmlCatalogAdd(BAD_CAST argv[0], NULL,
223
+ BAD_CAST argv[1]);
224
+ else
225
+ ret = xmlCatalogAdd(BAD_CAST argv[0], BAD_CAST argv[1],
226
+ BAD_CAST argv[2]);
227
+ if (ret != 0)
228
+ printf("add command failed\n");
229
+ }
230
+ } else {
231
+ if ((nbargs != 3) && (nbargs != 2)) {
232
+ printf("add requires 2 or 3 arguments\n");
233
+ } else {
234
+ if (argv[2] == NULL)
235
+ ret = xmlCatalogAdd(BAD_CAST argv[0], NULL,
236
+ BAD_CAST argv[1]);
237
+ else
238
+ ret = xmlCatalogAdd(BAD_CAST argv[0], BAD_CAST argv[1],
239
+ BAD_CAST argv[2]);
240
+ if (ret != 0)
241
+ printf("add command failed\n");
242
+ }
243
+ }
244
+ } else if (!strcmp(command, "del")) {
245
+ if (nbargs != 1) {
246
+ printf("del requires 1\n");
247
+ } else {
248
+ ret = xmlCatalogRemove(BAD_CAST argv[0]);
249
+ if (ret <= 0)
250
+ printf("del command failed\n");
251
+
252
+ }
253
+ } else if (!strcmp(command, "resolve")) {
254
+ if (nbargs != 2) {
255
+ printf("resolve requires 2 arguments\n");
256
+ } else {
257
+ ans = xmlCatalogResolve(BAD_CAST argv[0],
258
+ BAD_CAST argv[1]);
259
+ if (ans == NULL) {
260
+ printf("Resolver failed to find an answer\n");
261
+ } else {
262
+ printf("%s\n", (char *) ans);
263
+ xmlFree(ans);
264
+ }
265
+ }
266
+ } else if (!strcmp(command, "dump")) {
267
+ if (nbargs != 0) {
268
+ printf("dump has no arguments\n");
269
+ } else {
270
+ xmlCatalogDump(stdout);
271
+ }
272
+ } else if (!strcmp(command, "debug")) {
273
+ if (nbargs != 0) {
274
+ printf("debug has no arguments\n");
275
+ } else {
276
+ verbose++;
277
+ xmlCatalogSetDebug(verbose);
278
+ }
279
+ } else if (!strcmp(command, "quiet")) {
280
+ if (nbargs != 0) {
281
+ printf("quiet has no arguments\n");
282
+ } else {
283
+ if (verbose > 0)
284
+ verbose--;
285
+ xmlCatalogSetDebug(verbose);
286
+ }
287
+ } else {
288
+ if (strcmp(command, "help")) {
289
+ printf("Unrecognized command %s\n", command);
290
+ }
291
+ printf("Commands available:\n");
292
+ printf("\tpublic PublicID: make a PUBLIC identifier lookup\n");
293
+ printf("\tsystem SystemID: make a SYSTEM identifier lookup\n");
294
+ printf("\tresolve PublicID SystemID: do a full resolver lookup\n");
295
+ printf("\tadd 'type' 'orig' 'replace' : add an entry\n");
296
+ printf("\tdel 'values' : remove values\n");
297
+ printf("\tdump: print the current catalog state\n");
298
+ printf("\tdebug: increase the verbosity level\n");
299
+ printf("\tquiet: decrease the verbosity level\n");
300
+ printf("\texit: quit the shell\n");
301
+ }
302
+ free(cmdline); /* not xmlFree here ! */
303
+ }
304
+ }
305
+
306
+ /************************************************************************
307
+ * *
308
+ * Main *
309
+ * *
310
+ ************************************************************************/
311
+ static void usage(const char *name) {
312
+ /* split into 2 printf's to avoid overly long string (gcc warning) */
313
+ printf("\
314
+ Usage : %s [options] catalogfile entities...\n\
315
+ \tParse the catalog file (void specification possibly expressed as \"\"\n\
316
+ \tappoints the default system one) and query it for the entities\n\
317
+ \t--sgml : handle SGML Super catalogs for --add and --del\n\
318
+ \t--shell : run a shell allowing interactive queries\n\
319
+ \t--create : create a new catalog\n\
320
+ \t--add 'type' 'orig' 'replace' : add an XML entry\n\
321
+ \t--add 'entry' : add an SGML entry\n", name);
322
+ printf("\
323
+ \t--del 'values' : remove values\n\
324
+ \t--noout: avoid dumping the result on stdout\n\
325
+ \t used with --add or --del, it saves the catalog changes\n\
326
+ \t and with --sgml it automatically updates the super catalog\n\
327
+ \t--no-super-update: do not update the SGML super catalog\n\
328
+ \t-v --verbose : provide debug information\n");
329
+ }
330
+ int main(int argc, char **argv) {
331
+ int i;
332
+ int ret;
333
+ int exit_value = 0;
334
+
335
+
336
+ if (argc <= 1) {
337
+ usage(argv[0]);
338
+ return(1);
339
+ }
340
+
341
+ LIBXML_TEST_VERSION
342
+ for (i = 1; i < argc ; i++) {
343
+ if (!strcmp(argv[i], "-"))
344
+ break;
345
+
346
+ if (argv[i][0] != '-')
347
+ break;
348
+ if ((!strcmp(argv[i], "-verbose")) ||
349
+ (!strcmp(argv[i], "-v")) ||
350
+ (!strcmp(argv[i], "--verbose"))) {
351
+ verbose++;
352
+ xmlCatalogSetDebug(verbose);
353
+ } else if ((!strcmp(argv[i], "-noout")) ||
354
+ (!strcmp(argv[i], "--noout"))) {
355
+ noout = 1;
356
+ } else if ((!strcmp(argv[i], "-shell")) ||
357
+ (!strcmp(argv[i], "--shell"))) {
358
+ shell++;
359
+ noout = 1;
360
+ } else if ((!strcmp(argv[i], "-sgml")) ||
361
+ (!strcmp(argv[i], "--sgml"))) {
362
+ sgml++;
363
+ } else if ((!strcmp(argv[i], "-create")) ||
364
+ (!strcmp(argv[i], "--create"))) {
365
+ create++;
366
+ } else if ((!strcmp(argv[i], "-convert")) ||
367
+ (!strcmp(argv[i], "--convert"))) {
368
+ convert++;
369
+ } else if ((!strcmp(argv[i], "-no-super-update")) ||
370
+ (!strcmp(argv[i], "--no-super-update"))) {
371
+ no_super_update++;
372
+ } else if ((!strcmp(argv[i], "-add")) ||
373
+ (!strcmp(argv[i], "--add"))) {
374
+ if (sgml)
375
+ i += 2;
376
+ else
377
+ i += 3;
378
+ add++;
379
+ } else if ((!strcmp(argv[i], "-del")) ||
380
+ (!strcmp(argv[i], "--del"))) {
381
+ i += 1;
382
+ del++;
383
+ } else {
384
+ fprintf(stderr, "Unknown option %s\n", argv[i]);
385
+ usage(argv[0]);
386
+ return(1);
387
+ }
388
+ }
389
+
390
+ for (i = 1; i < argc; i++) {
391
+ if ((!strcmp(argv[i], "-add")) ||
392
+ (!strcmp(argv[i], "--add"))) {
393
+ if (sgml)
394
+ i += 2;
395
+ else
396
+ i += 3;
397
+ continue;
398
+ } else if ((!strcmp(argv[i], "-del")) ||
399
+ (!strcmp(argv[i], "--del"))) {
400
+ i += 1;
401
+
402
+ /* No catalog entry specified */
403
+ if (i == argc || (sgml && i + 1 == argc)) {
404
+ fprintf(stderr, "No catalog entry specified to remove from\n");
405
+ usage (argv[0]);
406
+ return(1);
407
+ }
408
+
409
+ continue;
410
+ } else if (argv[i][0] == '-')
411
+ continue;
412
+
413
+ if (filename == NULL && argv[i][0] == '\0') {
414
+ /* Interpret empty-string catalog specification as
415
+ a shortcut for a default system catalog. */
416
+ xmlInitializeCatalog();
417
+ } else {
418
+ filename = argv[i];
419
+ ret = xmlLoadCatalog(argv[i]);
420
+ if ((ret < 0) && (create)) {
421
+ xmlCatalogAdd(BAD_CAST "catalog", BAD_CAST argv[i], NULL);
422
+ }
423
+ }
424
+ break;
425
+ }
426
+
427
+ if (convert)
428
+ ret = xmlCatalogConvert();
429
+
430
+ if ((add) || (del)) {
431
+ for (i = 1; i < argc ; i++) {
432
+ if (!strcmp(argv[i], "-"))
433
+ break;
434
+
435
+ if (argv[i][0] != '-')
436
+ continue;
437
+ if (strcmp(argv[i], "-add") && strcmp(argv[i], "--add") &&
438
+ strcmp(argv[i], "-del") && strcmp(argv[i], "--del"))
439
+ continue;
440
+
441
+ if (sgml) {
442
+ /*
443
+ * Maintenance of SGML catalogs.
444
+ */
445
+ xmlCatalogPtr catal = NULL;
446
+ xmlCatalogPtr super = NULL;
447
+
448
+ catal = xmlLoadSGMLSuperCatalog(argv[i + 1]);
449
+
450
+ if ((!strcmp(argv[i], "-add")) ||
451
+ (!strcmp(argv[i], "--add"))) {
452
+ if (catal == NULL)
453
+ catal = xmlNewCatalog(1);
454
+ xmlACatalogAdd(catal, BAD_CAST "CATALOG",
455
+ BAD_CAST argv[i + 2], NULL);
456
+
457
+ if (!no_super_update) {
458
+ super = xmlLoadSGMLSuperCatalog(XML_SGML_DEFAULT_CATALOG);
459
+ if (super == NULL)
460
+ super = xmlNewCatalog(1);
461
+
462
+ xmlACatalogAdd(super, BAD_CAST "CATALOG",
463
+ BAD_CAST argv[i + 1], NULL);
464
+ }
465
+ } else {
466
+ if (catal != NULL)
467
+ ret = xmlACatalogRemove(catal, BAD_CAST argv[i + 2]);
468
+ else
469
+ ret = -1;
470
+ if (ret < 0) {
471
+ fprintf(stderr, "Failed to remove entry from %s\n",
472
+ argv[i + 1]);
473
+ exit_value = 1;
474
+ }
475
+ if ((!no_super_update) && (noout) && (catal != NULL) &&
476
+ (xmlCatalogIsEmpty(catal))) {
477
+ super = xmlLoadSGMLSuperCatalog(
478
+ XML_SGML_DEFAULT_CATALOG);
479
+ if (super != NULL) {
480
+ ret = xmlACatalogRemove(super,
481
+ BAD_CAST argv[i + 1]);
482
+ if (ret < 0) {
483
+ fprintf(stderr,
484
+ "Failed to remove entry from %s\n",
485
+ XML_SGML_DEFAULT_CATALOG);
486
+ exit_value = 1;
487
+ }
488
+ }
489
+ }
490
+ }
491
+ if (noout) {
492
+ FILE *out;
493
+
494
+ if (xmlCatalogIsEmpty(catal)) {
495
+ remove(argv[i + 1]);
496
+ } else {
497
+ out = fopen(argv[i + 1], "w");
498
+ if (out == NULL) {
499
+ fprintf(stderr, "could not open %s for saving\n",
500
+ argv[i + 1]);
501
+ exit_value = 2;
502
+ noout = 0;
503
+ } else {
504
+ xmlACatalogDump(catal, out);
505
+ fclose(out);
506
+ }
507
+ }
508
+ if (!no_super_update && super != NULL) {
509
+ if (xmlCatalogIsEmpty(super)) {
510
+ remove(XML_SGML_DEFAULT_CATALOG);
511
+ } else {
512
+ out = fopen(XML_SGML_DEFAULT_CATALOG, "w");
513
+ if (out == NULL) {
514
+ fprintf(stderr,
515
+ "could not open %s for saving\n",
516
+ XML_SGML_DEFAULT_CATALOG);
517
+ exit_value = 2;
518
+ noout = 0;
519
+ } else {
520
+
521
+ xmlACatalogDump(super, out);
522
+ fclose(out);
523
+ }
524
+ }
525
+ }
526
+ } else {
527
+ xmlACatalogDump(catal, stdout);
528
+ }
529
+ i += 2;
530
+ } else {
531
+ if ((!strcmp(argv[i], "-add")) ||
532
+ (!strcmp(argv[i], "--add"))) {
533
+ if ((argv[i + 3] == NULL) || (argv[i + 3][0] == 0))
534
+ ret = xmlCatalogAdd(BAD_CAST argv[i + 1], NULL,
535
+ BAD_CAST argv[i + 2]);
536
+ else
537
+ ret = xmlCatalogAdd(BAD_CAST argv[i + 1],
538
+ BAD_CAST argv[i + 2],
539
+ BAD_CAST argv[i + 3]);
540
+ if (ret != 0) {
541
+ printf("add command failed\n");
542
+ exit_value = 3;
543
+ }
544
+ i += 3;
545
+ } else if ((!strcmp(argv[i], "-del")) ||
546
+ (!strcmp(argv[i], "--del"))) {
547
+ ret = xmlCatalogRemove(BAD_CAST argv[i + 1]);
548
+ if (ret < 0) {
549
+ fprintf(stderr, "Failed to remove entry %s\n",
550
+ argv[i + 1]);
551
+ exit_value = 1;
552
+ }
553
+ i += 1;
554
+ }
555
+ }
556
+ }
557
+
558
+ } else if (shell) {
559
+ usershell();
560
+ } else {
561
+ for (i++; i < argc; i++) {
562
+ xmlURIPtr uri;
563
+ xmlChar *ans;
564
+
565
+ uri = xmlParseURI(argv[i]);
566
+ if (uri == NULL) {
567
+ ans = xmlCatalogResolvePublic((const xmlChar *) argv[i]);
568
+ if (ans == NULL) {
569
+ printf("No entry for PUBLIC %s\n", argv[i]);
570
+ exit_value = 4;
571
+ } else {
572
+ printf("%s\n", (char *) ans);
573
+ xmlFree(ans);
574
+ }
575
+ } else {
576
+ xmlFreeURI(uri);
577
+ ans = xmlCatalogResolveSystem((const xmlChar *) argv[i]);
578
+ if (ans == NULL) {
579
+ printf("No entry for SYSTEM %s\n", argv[i]);
580
+ ans = xmlCatalogResolveURI ((const xmlChar *) argv[i]);
581
+ if (ans == NULL) {
582
+ printf ("No entry for URI %s\n", argv[i]);
583
+ exit_value = 4;
584
+ } else {
585
+ printf("%s\n", (char *) ans);
586
+ xmlFree (ans);
587
+ }
588
+ } else {
589
+ printf("%s\n", (char *) ans);
590
+ xmlFree(ans);
591
+ }
592
+ }
593
+ }
594
+ }
595
+ if ((!sgml) && ((add) || (del) || (create) || (convert))) {
596
+ if (noout && filename && *filename) {
597
+ FILE *out;
598
+
599
+ out = fopen(filename, "w");
600
+ if (out == NULL) {
601
+ fprintf(stderr, "could not open %s for saving\n", filename);
602
+ exit_value = 2;
603
+ noout = 0;
604
+ } else {
605
+ xmlCatalogDump(out);
606
+ }
607
+ } else {
608
+ xmlCatalogDump(stdout);
609
+ }
610
+ }
611
+
612
+ /*
613
+ * Cleanup and check for memory leaks
614
+ */
615
+ xmlCleanupParser();
616
+ xmlMemoryDump();
617
+ return(exit_value);
618
+ }
619
+ #else
620
+ int main(int argc ATTRIBUTE_UNUSED, char **argv ATTRIBUTE_UNUSED) {
621
+ fprintf(stderr, "libxml was not compiled with catalog and output support\n");
622
+ return(1);
623
+ }
624
+ #endif