nutcracker 0.2.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (149) hide show
  1. data/README.md +22 -0
  2. data/Rakefile +55 -0
  3. data/bin/nutcracker +2 -0
  4. data/ext/nutcracker/ChangeLog +66 -0
  5. data/ext/nutcracker/LICENSE +177 -0
  6. data/ext/nutcracker/Makefile.am +7 -0
  7. data/ext/nutcracker/Makefile.in +726 -0
  8. data/ext/nutcracker/NOTICE +124 -0
  9. data/ext/nutcracker/README.md +240 -0
  10. data/ext/nutcracker/aclocal.m4 +956 -0
  11. data/ext/nutcracker/conf/nutcracker.leaf.yml +10 -0
  12. data/ext/nutcracker/conf/nutcracker.root.yml +8 -0
  13. data/ext/nutcracker/conf/nutcracker.yml +67 -0
  14. data/ext/nutcracker/config.h.in +316 -0
  15. data/ext/nutcracker/config/config.guess +1561 -0
  16. data/ext/nutcracker/config/config.sub +1686 -0
  17. data/ext/nutcracker/config/depcomp +630 -0
  18. data/ext/nutcracker/config/install-sh +520 -0
  19. data/ext/nutcracker/config/ltmain.sh +8413 -0
  20. data/ext/nutcracker/config/missing +376 -0
  21. data/ext/nutcracker/configure +18862 -0
  22. data/ext/nutcracker/configure.ac +155 -0
  23. data/ext/nutcracker/contrib/Makefile.am +3 -0
  24. data/ext/nutcracker/contrib/Makefile.in +560 -0
  25. data/ext/nutcracker/contrib/yaml-0.1.4.tar.gz +0 -0
  26. data/ext/nutcracker/contrib/yaml-0.1.4/LICENSE +19 -0
  27. data/ext/nutcracker/contrib/yaml-0.1.4/Makefile.am +20 -0
  28. data/ext/nutcracker/contrib/yaml-0.1.4/Makefile.in +736 -0
  29. data/ext/nutcracker/contrib/yaml-0.1.4/README +27 -0
  30. data/ext/nutcracker/contrib/yaml-0.1.4/aclocal.m4 +956 -0
  31. data/ext/nutcracker/contrib/yaml-0.1.4/config.h.in +80 -0
  32. data/ext/nutcracker/contrib/yaml-0.1.4/config/config.guess +1561 -0
  33. data/ext/nutcracker/contrib/yaml-0.1.4/config/config.sub +1686 -0
  34. data/ext/nutcracker/contrib/yaml-0.1.4/config/depcomp +630 -0
  35. data/ext/nutcracker/contrib/yaml-0.1.4/config/install-sh +520 -0
  36. data/ext/nutcracker/contrib/yaml-0.1.4/config/ltmain.sh +8406 -0
  37. data/ext/nutcracker/contrib/yaml-0.1.4/config/missing +376 -0
  38. data/ext/nutcracker/contrib/yaml-0.1.4/configure +13085 -0
  39. data/ext/nutcracker/contrib/yaml-0.1.4/configure.ac +75 -0
  40. data/ext/nutcracker/contrib/yaml-0.1.4/doc/doxygen.cfg +222 -0
  41. data/ext/nutcracker/contrib/yaml-0.1.4/include/yaml.h +1971 -0
  42. data/ext/nutcracker/contrib/yaml-0.1.4/m4/libtool.m4 +7357 -0
  43. data/ext/nutcracker/contrib/yaml-0.1.4/m4/ltoptions.m4 +368 -0
  44. data/ext/nutcracker/contrib/yaml-0.1.4/m4/ltsugar.m4 +123 -0
  45. data/ext/nutcracker/contrib/yaml-0.1.4/m4/ltversion.m4 +23 -0
  46. data/ext/nutcracker/contrib/yaml-0.1.4/m4/lt~obsolete.m4 +92 -0
  47. data/ext/nutcracker/contrib/yaml-0.1.4/src/Makefile.am +4 -0
  48. data/ext/nutcracker/contrib/yaml-0.1.4/src/Makefile.in +484 -0
  49. data/ext/nutcracker/contrib/yaml-0.1.4/src/api.c +1392 -0
  50. data/ext/nutcracker/contrib/yaml-0.1.4/src/dumper.c +394 -0
  51. data/ext/nutcracker/contrib/yaml-0.1.4/src/emitter.c +2329 -0
  52. data/ext/nutcracker/contrib/yaml-0.1.4/src/loader.c +432 -0
  53. data/ext/nutcracker/contrib/yaml-0.1.4/src/parser.c +1374 -0
  54. data/ext/nutcracker/contrib/yaml-0.1.4/src/reader.c +465 -0
  55. data/ext/nutcracker/contrib/yaml-0.1.4/src/scanner.c +3570 -0
  56. data/ext/nutcracker/contrib/yaml-0.1.4/src/writer.c +141 -0
  57. data/ext/nutcracker/contrib/yaml-0.1.4/src/yaml_private.h +640 -0
  58. data/ext/nutcracker/contrib/yaml-0.1.4/tests/Makefile.am +8 -0
  59. data/ext/nutcracker/contrib/yaml-0.1.4/tests/Makefile.in +675 -0
  60. data/ext/nutcracker/contrib/yaml-0.1.4/tests/example-deconstructor-alt.c +800 -0
  61. data/ext/nutcracker/contrib/yaml-0.1.4/tests/example-deconstructor.c +1130 -0
  62. data/ext/nutcracker/contrib/yaml-0.1.4/tests/example-reformatter-alt.c +217 -0
  63. data/ext/nutcracker/contrib/yaml-0.1.4/tests/example-reformatter.c +202 -0
  64. data/ext/nutcracker/contrib/yaml-0.1.4/tests/run-dumper.c +311 -0
  65. data/ext/nutcracker/contrib/yaml-0.1.4/tests/run-emitter.c +327 -0
  66. data/ext/nutcracker/contrib/yaml-0.1.4/tests/run-loader.c +63 -0
  67. data/ext/nutcracker/contrib/yaml-0.1.4/tests/run-parser.c +63 -0
  68. data/ext/nutcracker/contrib/yaml-0.1.4/tests/run-scanner.c +63 -0
  69. data/ext/nutcracker/contrib/yaml-0.1.4/tests/test-reader.c +354 -0
  70. data/ext/nutcracker/contrib/yaml-0.1.4/tests/test-version.c +29 -0
  71. data/ext/nutcracker/extconf.rb +5 -0
  72. data/ext/nutcracker/m4/libtool.m4 +7376 -0
  73. data/ext/nutcracker/m4/ltoptions.m4 +368 -0
  74. data/ext/nutcracker/m4/ltsugar.m4 +123 -0
  75. data/ext/nutcracker/m4/ltversion.m4 +23 -0
  76. data/ext/nutcracker/m4/lt~obsolete.m4 +92 -0
  77. data/ext/nutcracker/notes/c-styleguide.txt +425 -0
  78. data/ext/nutcracker/notes/debug.txt +96 -0
  79. data/ext/nutcracker/notes/memcache.txt +123 -0
  80. data/ext/nutcracker/notes/recommendation.md +118 -0
  81. data/ext/nutcracker/notes/redis.md +415 -0
  82. data/ext/nutcracker/notes/socket.txt +131 -0
  83. data/ext/nutcracker/scripts/multi_get.sh +26 -0
  84. data/ext/nutcracker/scripts/nutcracker.init +73 -0
  85. data/ext/nutcracker/scripts/nutcracker.spec +52 -0
  86. data/ext/nutcracker/scripts/pipelined_read.sh +23 -0
  87. data/ext/nutcracker/scripts/pipelined_write.sh +29 -0
  88. data/ext/nutcracker/scripts/populate_memcached.sh +24 -0
  89. data/ext/nutcracker/scripts/redis-check.py +23 -0
  90. data/ext/nutcracker/scripts/redis-check.sh +564 -0
  91. data/ext/nutcracker/src/Makefile.am +46 -0
  92. data/ext/nutcracker/src/Makefile.in +726 -0
  93. data/ext/nutcracker/src/hashkit/Makefile.am +22 -0
  94. data/ext/nutcracker/src/hashkit/Makefile.in +501 -0
  95. data/ext/nutcracker/src/hashkit/nc_crc32.c +105 -0
  96. data/ext/nutcracker/src/hashkit/nc_fnv.c +82 -0
  97. data/ext/nutcracker/src/hashkit/nc_hashkit.h +74 -0
  98. data/ext/nutcracker/src/hashkit/nc_hsieh.c +93 -0
  99. data/ext/nutcracker/src/hashkit/nc_jenkins.c +230 -0
  100. data/ext/nutcracker/src/hashkit/nc_ketama.c +240 -0
  101. data/ext/nutcracker/src/hashkit/nc_md5.c +379 -0
  102. data/ext/nutcracker/src/hashkit/nc_modula.c +144 -0
  103. data/ext/nutcracker/src/hashkit/nc_murmur.c +99 -0
  104. data/ext/nutcracker/src/hashkit/nc_one_at_a_time.c +51 -0
  105. data/ext/nutcracker/src/hashkit/nc_random.c +146 -0
  106. data/ext/nutcracker/src/nc.c +573 -0
  107. data/ext/nutcracker/src/nc_array.c +204 -0
  108. data/ext/nutcracker/src/nc_array.h +73 -0
  109. data/ext/nutcracker/src/nc_client.c +189 -0
  110. data/ext/nutcracker/src/nc_client.h +28 -0
  111. data/ext/nutcracker/src/nc_conf.c +1766 -0
  112. data/ext/nutcracker/src/nc_conf.h +134 -0
  113. data/ext/nutcracker/src/nc_connection.c +392 -0
  114. data/ext/nutcracker/src/nc_connection.h +99 -0
  115. data/ext/nutcracker/src/nc_core.c +334 -0
  116. data/ext/nutcracker/src/nc_core.h +131 -0
  117. data/ext/nutcracker/src/nc_event.c +214 -0
  118. data/ext/nutcracker/src/nc_event.h +39 -0
  119. data/ext/nutcracker/src/nc_log.c +254 -0
  120. data/ext/nutcracker/src/nc_log.h +120 -0
  121. data/ext/nutcracker/src/nc_mbuf.c +285 -0
  122. data/ext/nutcracker/src/nc_mbuf.h +67 -0
  123. data/ext/nutcracker/src/nc_message.c +828 -0
  124. data/ext/nutcracker/src/nc_message.h +253 -0
  125. data/ext/nutcracker/src/nc_proxy.c +359 -0
  126. data/ext/nutcracker/src/nc_proxy.h +34 -0
  127. data/ext/nutcracker/src/nc_queue.h +788 -0
  128. data/ext/nutcracker/src/nc_rbtree.c +348 -0
  129. data/ext/nutcracker/src/nc_rbtree.h +47 -0
  130. data/ext/nutcracker/src/nc_request.c +588 -0
  131. data/ext/nutcracker/src/nc_response.c +332 -0
  132. data/ext/nutcracker/src/nc_server.c +841 -0
  133. data/ext/nutcracker/src/nc_server.h +143 -0
  134. data/ext/nutcracker/src/nc_signal.c +131 -0
  135. data/ext/nutcracker/src/nc_signal.h +34 -0
  136. data/ext/nutcracker/src/nc_stats.c +1188 -0
  137. data/ext/nutcracker/src/nc_stats.h +206 -0
  138. data/ext/nutcracker/src/nc_string.c +109 -0
  139. data/ext/nutcracker/src/nc_string.h +112 -0
  140. data/ext/nutcracker/src/nc_util.c +619 -0
  141. data/ext/nutcracker/src/nc_util.h +214 -0
  142. data/ext/nutcracker/src/proto/Makefile.am +14 -0
  143. data/ext/nutcracker/src/proto/Makefile.in +482 -0
  144. data/ext/nutcracker/src/proto/nc_memcache.c +1306 -0
  145. data/ext/nutcracker/src/proto/nc_proto.h +155 -0
  146. data/ext/nutcracker/src/proto/nc_redis.c +2102 -0
  147. data/lib/nutcracker.rb +7 -0
  148. data/lib/nutcracker/version.rb +3 -0
  149. metadata +194 -0
@@ -0,0 +1,800 @@
1
+
2
+ #include <yaml.h>
3
+
4
+ #include <stdlib.h>
5
+ #include <stdio.h>
6
+
7
+ int
8
+ main(int argc, char *argv[])
9
+ {
10
+ int help = 0;
11
+ int canonical = 0;
12
+ int unicode = 0;
13
+ int k;
14
+ int done = 0;
15
+
16
+ yaml_parser_t parser;
17
+ yaml_emitter_t emitter;
18
+ yaml_event_t input_event;
19
+ yaml_document_t output_document;
20
+
21
+ int root;
22
+
23
+ /* Clear the objects. */
24
+
25
+ memset(&parser, 0, sizeof(parser));
26
+ memset(&emitter, 0, sizeof(emitter));
27
+ memset(&input_event, 0, sizeof(input_event));
28
+ memset(&output_document, 0, sizeof(output_document));
29
+
30
+ /* Analyze command line options. */
31
+
32
+ for (k = 1; k < argc; k ++)
33
+ {
34
+ if (strcmp(argv[k], "-h") == 0
35
+ || strcmp(argv[k], "--help") == 0) {
36
+ help = 1;
37
+ }
38
+
39
+ else if (strcmp(argv[k], "-c") == 0
40
+ || strcmp(argv[k], "--canonical") == 0) {
41
+ canonical = 1;
42
+ }
43
+
44
+ else if (strcmp(argv[k], "-u") == 0
45
+ || strcmp(argv[k], "--unicode") == 0) {
46
+ unicode = 1;
47
+ }
48
+
49
+ else {
50
+ fprintf(stderr, "Unrecognized option: %s\n"
51
+ "Try `%s --help` for more information.\n",
52
+ argv[k], argv[0]);
53
+ return 1;
54
+ }
55
+ }
56
+
57
+ /* Display the help string. */
58
+
59
+ if (help)
60
+ {
61
+ printf("%s <input\n"
62
+ "or\n%s -h | --help\nDeconstruct a YAML stream\n\nOptions:\n"
63
+ "-h, --help\t\tdisplay this help and exit\n"
64
+ "-c, --canonical\t\toutput in the canonical YAML format\n"
65
+ "-u, --unicode\t\toutput unescaped non-ASCII characters\n",
66
+ argv[0], argv[0]);
67
+ return 0;
68
+ }
69
+
70
+ /* Initialize the parser and emitter objects. */
71
+
72
+ if (!yaml_parser_initialize(&parser)) {
73
+ fprintf(stderr, "Could not initialize the parser object\n");
74
+ return 1;
75
+ }
76
+
77
+ if (!yaml_emitter_initialize(&emitter)) {
78
+ yaml_parser_delete(&parser);
79
+ fprintf(stderr, "Could not inialize the emitter object\n");
80
+ return 1;
81
+ }
82
+
83
+ /* Set the parser parameters. */
84
+
85
+ yaml_parser_set_input_file(&parser, stdin);
86
+
87
+ /* Set the emitter parameters. */
88
+
89
+ yaml_emitter_set_output_file(&emitter, stdout);
90
+
91
+ yaml_emitter_set_canonical(&emitter, canonical);
92
+ yaml_emitter_set_unicode(&emitter, unicode);
93
+
94
+ /* Create and emit the STREAM-START event. */
95
+
96
+ if (!yaml_emitter_open(&emitter))
97
+ goto emitter_error;
98
+
99
+ /* Create a output_document object. */
100
+
101
+ if (!yaml_document_initialize(&output_document, NULL, NULL, NULL, 0, 0))
102
+ goto document_error;
103
+
104
+ /* Create the root sequence. */
105
+
106
+ root = yaml_document_add_sequence(&output_document, NULL,
107
+ YAML_BLOCK_SEQUENCE_STYLE);
108
+ if (!root) goto document_error;
109
+
110
+ /* Loop through the input events. */
111
+
112
+ while (!done)
113
+ {
114
+ int properties, key, value, map, seq;
115
+
116
+ /* Get the next event. */
117
+
118
+ if (!yaml_parser_parse(&parser, &input_event))
119
+ goto parser_error;
120
+
121
+ /* Check if this is the stream end. */
122
+
123
+ if (input_event.type == YAML_STREAM_END_EVENT) {
124
+ done = 1;
125
+ }
126
+
127
+ /* Create a mapping node and attach it to the root sequence. */
128
+
129
+ properties = yaml_document_add_mapping(&output_document, NULL,
130
+ YAML_BLOCK_MAPPING_STYLE);
131
+ if (!properties) goto document_error;
132
+ if (!yaml_document_append_sequence_item(&output_document,
133
+ root, properties)) goto document_error;
134
+
135
+ /* Analyze the event. */
136
+
137
+ switch (input_event.type)
138
+ {
139
+ case YAML_STREAM_START_EVENT:
140
+
141
+ /* Add 'type': 'STREAM-START'. */
142
+
143
+ key = yaml_document_add_scalar(&output_document, NULL,
144
+ "type", -1, YAML_PLAIN_SCALAR_STYLE);
145
+ if (!key) goto document_error;
146
+ value = yaml_document_add_scalar(&output_document, NULL,
147
+ "STREAM-START", -1, YAML_PLAIN_SCALAR_STYLE);
148
+ if (!value) goto document_error;
149
+ if (!yaml_document_append_mapping_pair(&output_document,
150
+ properties, key, value)) goto document_error;
151
+
152
+ /* Add 'encoding': <encoding>. */
153
+
154
+ if (input_event.data.stream_start.encoding)
155
+ {
156
+ yaml_encoding_t encoding
157
+ = input_event.data.stream_start.encoding;
158
+
159
+ key = yaml_document_add_scalar(&output_document, NULL,
160
+ "encoding", -1, YAML_PLAIN_SCALAR_STYLE);
161
+ if (!key) goto document_error;
162
+ value = yaml_document_add_scalar(&output_document, NULL,
163
+ (encoding == YAML_UTF8_ENCODING ? "utf-8" :
164
+ encoding == YAML_UTF16LE_ENCODING ? "utf-16-le" :
165
+ encoding == YAML_UTF16BE_ENCODING ? "utf-16-be" :
166
+ "unknown"), -1, YAML_PLAIN_SCALAR_STYLE);
167
+ if (!value) goto document_error;
168
+ if (!yaml_document_append_mapping_pair(&output_document,
169
+ properties, key, value)) goto document_error;
170
+ }
171
+
172
+ break;
173
+
174
+ case YAML_STREAM_END_EVENT:
175
+
176
+ /* Add 'type': 'STREAM-END'. */
177
+
178
+ key = yaml_document_add_scalar(&output_document, NULL,
179
+ "type", -1, YAML_PLAIN_SCALAR_STYLE);
180
+ if (!key) goto document_error;
181
+ value = yaml_document_add_scalar(&output_document, NULL,
182
+ "STREAM-END", -1, YAML_PLAIN_SCALAR_STYLE);
183
+ if (!value) goto document_error;
184
+ if (!yaml_document_append_mapping_pair(&output_document,
185
+ properties, key, value)) goto document_error;
186
+
187
+ break;
188
+
189
+ case YAML_DOCUMENT_START_EVENT:
190
+
191
+ /* Add 'type': 'DOCUMENT-START'. */
192
+
193
+ key = yaml_document_add_scalar(&output_document, NULL,
194
+ "type", -1, YAML_PLAIN_SCALAR_STYLE);
195
+ if (!key) goto document_error;
196
+ value = yaml_document_add_scalar(&output_document, NULL,
197
+ "DOCUMENT-START", -1, YAML_PLAIN_SCALAR_STYLE);
198
+ if (!value) goto document_error;
199
+ if (!yaml_document_append_mapping_pair(&output_document,
200
+ properties, key, value)) goto document_error;
201
+
202
+ /* Display the output_document version numbers. */
203
+
204
+ if (input_event.data.document_start.version_directive)
205
+ {
206
+ yaml_version_directive_t *version
207
+ = input_event.data.document_start.version_directive;
208
+ char number[64];
209
+
210
+ /* Add 'version': {}. */
211
+
212
+ key = yaml_document_add_scalar(&output_document, NULL,
213
+ "version", -1, YAML_PLAIN_SCALAR_STYLE);
214
+ if (!key) goto document_error;
215
+ map = yaml_document_add_mapping(&output_document, NULL,
216
+ YAML_FLOW_MAPPING_STYLE);
217
+ if (!map) goto document_error;
218
+ if (!yaml_document_append_mapping_pair(&output_document,
219
+ properties, key, map)) goto document_error;
220
+
221
+ /* Add 'major': <number>. */
222
+
223
+ key = yaml_document_add_scalar(&output_document, NULL,
224
+ "major", -1, YAML_PLAIN_SCALAR_STYLE);
225
+ if (!key) goto document_error;
226
+ sprintf(number, "%d", version->major);
227
+ value = yaml_document_add_scalar(&output_document, YAML_INT_TAG,
228
+ number, -1, YAML_PLAIN_SCALAR_STYLE);
229
+ if (!value) goto document_error;
230
+ if (!yaml_document_append_mapping_pair(&output_document,
231
+ map, key, value)) goto document_error;
232
+
233
+ /* Add 'minor': <number>. */
234
+
235
+ key = yaml_document_add_scalar(&output_document, NULL,
236
+ "minor", -1, YAML_PLAIN_SCALAR_STYLE);
237
+ if (!key) goto document_error;
238
+ sprintf(number, "%d", version->minor);
239
+ value = yaml_document_add_scalar(&output_document, YAML_INT_TAG,
240
+ number, -1, YAML_PLAIN_SCALAR_STYLE);
241
+ if (!value) goto document_error;
242
+ if (!yaml_document_append_mapping_pair(&output_document,
243
+ map, key, value)) goto document_error;
244
+ }
245
+
246
+ /* Display the output_document tag directives. */
247
+
248
+ if (input_event.data.document_start.tag_directives.start
249
+ != input_event.data.document_start.tag_directives.end)
250
+ {
251
+ yaml_tag_directive_t *tag;
252
+
253
+ /* Add 'tags': []. */
254
+
255
+ key = yaml_document_add_scalar(&output_document, NULL,
256
+ "tags", -1, YAML_PLAIN_SCALAR_STYLE);
257
+ if (!key) goto document_error;
258
+ seq = yaml_document_add_sequence(&output_document, NULL,
259
+ YAML_BLOCK_SEQUENCE_STYLE);
260
+ if (!seq) goto document_error;
261
+ if (!yaml_document_append_mapping_pair(&output_document,
262
+ properties, key, seq)) goto document_error;
263
+
264
+ for (tag = input_event.data.document_start.tag_directives.start;
265
+ tag != input_event.data.document_start.tag_directives.end;
266
+ tag ++)
267
+ {
268
+ /* Add {}. */
269
+
270
+ map = yaml_document_add_mapping(&output_document, NULL,
271
+ YAML_FLOW_MAPPING_STYLE);
272
+ if (!map) goto document_error;
273
+ if (!yaml_document_append_sequence_item(&output_document,
274
+ seq, map)) goto document_error;
275
+
276
+ /* Add 'handle': <handle>. */
277
+
278
+ key = yaml_document_add_scalar(&output_document, NULL,
279
+ "handle", -1, YAML_PLAIN_SCALAR_STYLE);
280
+ if (!key) goto document_error;
281
+ value = yaml_document_add_scalar(&output_document, NULL,
282
+ tag->handle, -1, YAML_DOUBLE_QUOTED_SCALAR_STYLE);
283
+ if (!value) goto document_error;
284
+ if (!yaml_document_append_mapping_pair(&output_document,
285
+ map, key, value)) goto document_error;
286
+
287
+ /* Add 'prefix': <prefix>. */
288
+
289
+ key = yaml_document_add_scalar(&output_document, NULL,
290
+ "prefix", -1, YAML_PLAIN_SCALAR_STYLE);
291
+ if (!key) goto document_error;
292
+ value = yaml_document_add_scalar(&output_document, NULL,
293
+ tag->prefix, -1, YAML_DOUBLE_QUOTED_SCALAR_STYLE);
294
+ if (!value) goto document_error;
295
+ if (!yaml_document_append_mapping_pair(&output_document,
296
+ map, key, value)) goto document_error;
297
+ }
298
+ }
299
+
300
+ /* Add 'implicit': <flag>. */
301
+
302
+ key = yaml_document_add_scalar(&output_document, NULL,
303
+ "implicit", -1, YAML_PLAIN_SCALAR_STYLE);
304
+ if (!key) goto document_error;
305
+ value = yaml_document_add_scalar(&output_document, YAML_BOOL_TAG,
306
+ (input_event.data.document_start.implicit ?
307
+ "true" : "false"), -1, YAML_PLAIN_SCALAR_STYLE);
308
+ if (!value) goto document_error;
309
+ if (!yaml_document_append_mapping_pair(&output_document,
310
+ properties, key, value)) goto document_error;
311
+
312
+ break;
313
+
314
+ case YAML_DOCUMENT_END_EVENT:
315
+
316
+ /* Add 'type': 'DOCUMENT-END'. */
317
+
318
+ key = yaml_document_add_scalar(&output_document, NULL,
319
+ "type", -1, YAML_PLAIN_SCALAR_STYLE);
320
+ if (!key) goto document_error;
321
+ value = yaml_document_add_scalar(&output_document, NULL,
322
+ "DOCUMENT-END", -1, YAML_PLAIN_SCALAR_STYLE);
323
+ if (!value) goto document_error;
324
+ if (!yaml_document_append_mapping_pair(&output_document,
325
+ properties, key, value)) goto document_error;
326
+
327
+ /* Add 'implicit': <flag>. */
328
+
329
+ key = yaml_document_add_scalar(&output_document, NULL,
330
+ "implicit", -1, YAML_PLAIN_SCALAR_STYLE);
331
+ if (!key) goto document_error;
332
+ value = yaml_document_add_scalar(&output_document, YAML_BOOL_TAG,
333
+ (input_event.data.document_end.implicit ?
334
+ "true" : "false"), -1, YAML_PLAIN_SCALAR_STYLE);
335
+ if (!value) goto document_error;
336
+ if (!yaml_document_append_mapping_pair(&output_document,
337
+ properties, key, value)) goto document_error;
338
+
339
+ break;
340
+
341
+ case YAML_ALIAS_EVENT:
342
+
343
+ /* Add 'type': 'ALIAS'. */
344
+
345
+ key = yaml_document_add_scalar(&output_document, NULL,
346
+ "type", -1, YAML_PLAIN_SCALAR_STYLE);
347
+ if (!key) goto document_error;
348
+ value = yaml_document_add_scalar(&output_document, NULL,
349
+ "ALIAS", -1, YAML_PLAIN_SCALAR_STYLE);
350
+ if (!value) goto document_error;
351
+ if (!yaml_document_append_mapping_pair(&output_document,
352
+ properties, key, value)) goto document_error;
353
+
354
+ /* Add 'anchor': <anchor>. */
355
+
356
+ key = yaml_document_add_scalar(&output_document, NULL,
357
+ "anchor", -1, YAML_PLAIN_SCALAR_STYLE);
358
+ if (!key) goto document_error;
359
+ value = yaml_document_add_scalar(&output_document, NULL,
360
+ input_event.data.alias.anchor, -1,
361
+ YAML_DOUBLE_QUOTED_SCALAR_STYLE);
362
+ if (!value) goto document_error;
363
+ if (!yaml_document_append_mapping_pair(&output_document,
364
+ properties, key, value)) goto document_error;
365
+
366
+ break;
367
+
368
+ case YAML_SCALAR_EVENT:
369
+
370
+ /* Add 'type': 'SCALAR'. */
371
+
372
+ key = yaml_document_add_scalar(&output_document, NULL,
373
+ "type", -1, YAML_PLAIN_SCALAR_STYLE);
374
+ if (!key) goto document_error;
375
+ value = yaml_document_add_scalar(&output_document, NULL,
376
+ "SCALAR", -1, YAML_PLAIN_SCALAR_STYLE);
377
+ if (!value) goto document_error;
378
+ if (!yaml_document_append_mapping_pair(&output_document,
379
+ properties, key, value)) goto document_error;
380
+
381
+ /* Add 'anchor': <anchor>. */
382
+
383
+ if (input_event.data.scalar.anchor)
384
+ {
385
+ key = yaml_document_add_scalar(&output_document, NULL,
386
+ "anchor", -1, YAML_PLAIN_SCALAR_STYLE);
387
+ if (!key) goto document_error;
388
+ value = yaml_document_add_scalar(&output_document, NULL,
389
+ input_event.data.scalar.anchor, -1,
390
+ YAML_DOUBLE_QUOTED_SCALAR_STYLE);
391
+ if (!value) goto document_error;
392
+ if (!yaml_document_append_mapping_pair(&output_document,
393
+ properties, key, value)) goto document_error;
394
+ }
395
+
396
+ /* Add 'tag': <tag>. */
397
+
398
+ if (input_event.data.scalar.tag)
399
+ {
400
+ key = yaml_document_add_scalar(&output_document, NULL,
401
+ "tag", -1, YAML_PLAIN_SCALAR_STYLE);
402
+ if (!key) goto document_error;
403
+ value = yaml_document_add_scalar(&output_document, NULL,
404
+ input_event.data.scalar.tag, -1,
405
+ YAML_DOUBLE_QUOTED_SCALAR_STYLE);
406
+ if (!value) goto document_error;
407
+ if (!yaml_document_append_mapping_pair(&output_document,
408
+ properties, key, value)) goto document_error;
409
+ }
410
+
411
+ /* Add 'value': <value>. */
412
+
413
+ key = yaml_document_add_scalar(&output_document, NULL,
414
+ "value", -1, YAML_PLAIN_SCALAR_STYLE);
415
+ if (!key) goto document_error;
416
+ value = yaml_document_add_scalar(&output_document, NULL,
417
+ input_event.data.scalar.value,
418
+ input_event.data.scalar.length,
419
+ YAML_DOUBLE_QUOTED_SCALAR_STYLE);
420
+ if (!value) goto document_error;
421
+ if (!yaml_document_append_mapping_pair(&output_document,
422
+ properties, key, value)) goto document_error;
423
+
424
+ /* Display if the scalar tag is implicit. */
425
+
426
+ /* Add 'implicit': {} */
427
+
428
+ key = yaml_document_add_scalar(&output_document, NULL,
429
+ "version", -1, YAML_PLAIN_SCALAR_STYLE);
430
+ if (!key) goto document_error;
431
+ map = yaml_document_add_mapping(&output_document, NULL,
432
+ YAML_FLOW_MAPPING_STYLE);
433
+ if (!map) goto document_error;
434
+ if (!yaml_document_append_mapping_pair(&output_document,
435
+ properties, key, map)) goto document_error;
436
+
437
+ /* Add 'plain': <flag>. */
438
+
439
+ key = yaml_document_add_scalar(&output_document, NULL,
440
+ "plain", -1, YAML_PLAIN_SCALAR_STYLE);
441
+ if (!key) goto document_error;
442
+ value = yaml_document_add_scalar(&output_document, YAML_BOOL_TAG,
443
+ (input_event.data.scalar.plain_implicit ?
444
+ "true" : "false"), -1, YAML_PLAIN_SCALAR_STYLE);
445
+ if (!value) goto document_error;
446
+ if (!yaml_document_append_mapping_pair(&output_document,
447
+ map, key, value)) goto document_error;
448
+
449
+ /* Add 'quoted': <flag>. */
450
+
451
+ key = yaml_document_add_scalar(&output_document, NULL,
452
+ "quoted", -1, YAML_PLAIN_SCALAR_STYLE);
453
+ if (!key) goto document_error;
454
+ value = yaml_document_add_scalar(&output_document, YAML_BOOL_TAG,
455
+ (input_event.data.scalar.quoted_implicit ?
456
+ "true" : "false"), -1, YAML_PLAIN_SCALAR_STYLE);
457
+ if (!value) goto document_error;
458
+ if (!yaml_document_append_mapping_pair(&output_document,
459
+ map, key, value)) goto document_error;
460
+
461
+ /* Display the style information. */
462
+
463
+ if (input_event.data.scalar.style)
464
+ {
465
+ yaml_scalar_style_t style = input_event.data.scalar.style;
466
+
467
+ /* Add 'style': <style>. */
468
+
469
+ key = yaml_document_add_scalar(&output_document, NULL,
470
+ "style", -1, YAML_PLAIN_SCALAR_STYLE);
471
+ if (!key) goto document_error;
472
+ value = yaml_document_add_scalar(&output_document, NULL,
473
+ (style == YAML_PLAIN_SCALAR_STYLE ? "plain" :
474
+ style == YAML_SINGLE_QUOTED_SCALAR_STYLE ?
475
+ "single-quoted" :
476
+ style == YAML_DOUBLE_QUOTED_SCALAR_STYLE ?
477
+ "double-quoted" :
478
+ style == YAML_LITERAL_SCALAR_STYLE ? "literal" :
479
+ style == YAML_FOLDED_SCALAR_STYLE ? "folded" :
480
+ "unknown"), -1, YAML_PLAIN_SCALAR_STYLE);
481
+ if (!value) goto document_error;
482
+ if (!yaml_document_append_mapping_pair(&output_document,
483
+ properties, key, value)) goto document_error;
484
+ }
485
+
486
+ break;
487
+
488
+ case YAML_SEQUENCE_START_EVENT:
489
+
490
+ /* Add 'type': 'SEQUENCE-START'. */
491
+
492
+ key = yaml_document_add_scalar(&output_document, NULL,
493
+ "type", -1, YAML_PLAIN_SCALAR_STYLE);
494
+ if (!key) goto document_error;
495
+ value = yaml_document_add_scalar(&output_document, NULL,
496
+ "SEQUENCE-START", -1, YAML_PLAIN_SCALAR_STYLE);
497
+ if (!value) goto document_error;
498
+ if (!yaml_document_append_mapping_pair(&output_document,
499
+ properties, key, value)) goto document_error;
500
+
501
+ /* Add 'anchor': <anchor>. */
502
+
503
+ if (input_event.data.sequence_start.anchor)
504
+ {
505
+ key = yaml_document_add_scalar(&output_document, NULL,
506
+ "anchor", -1, YAML_PLAIN_SCALAR_STYLE);
507
+ if (!key) goto document_error;
508
+ value = yaml_document_add_scalar(&output_document, NULL,
509
+ input_event.data.sequence_start.anchor, -1,
510
+ YAML_DOUBLE_QUOTED_SCALAR_STYLE);
511
+ if (!value) goto document_error;
512
+ if (!yaml_document_append_mapping_pair(&output_document,
513
+ properties, key, value)) goto document_error;
514
+ }
515
+
516
+ /* Add 'tag': <tag>. */
517
+
518
+ if (input_event.data.sequence_start.tag)
519
+ {
520
+ key = yaml_document_add_scalar(&output_document, NULL,
521
+ "tag", -1, YAML_PLAIN_SCALAR_STYLE);
522
+ if (!key) goto document_error;
523
+ value = yaml_document_add_scalar(&output_document, NULL,
524
+ input_event.data.sequence_start.tag, -1,
525
+ YAML_DOUBLE_QUOTED_SCALAR_STYLE);
526
+ if (!value) goto document_error;
527
+ if (!yaml_document_append_mapping_pair(&output_document,
528
+ properties, key, value)) goto document_error;
529
+ }
530
+
531
+ /* Add 'implicit': <flag>. */
532
+
533
+ key = yaml_document_add_scalar(&output_document, NULL,
534
+ "implicit", -1, YAML_PLAIN_SCALAR_STYLE);
535
+ if (!key) goto document_error;
536
+ value = yaml_document_add_scalar(&output_document, YAML_BOOL_TAG,
537
+ (input_event.data.sequence_start.implicit ?
538
+ "true" : "false"), -1, YAML_PLAIN_SCALAR_STYLE);
539
+ if (!value) goto document_error;
540
+ if (!yaml_document_append_mapping_pair(&output_document,
541
+ properties, key, value)) goto document_error;
542
+
543
+ /* Display the style information. */
544
+
545
+ if (input_event.data.sequence_start.style)
546
+ {
547
+ yaml_sequence_style_t style
548
+ = input_event.data.sequence_start.style;
549
+
550
+ /* Add 'style': <style>. */
551
+
552
+ key = yaml_document_add_scalar(&output_document, NULL,
553
+ "style", -1, YAML_PLAIN_SCALAR_STYLE);
554
+ if (!key) goto document_error;
555
+ value = yaml_document_add_scalar(&output_document, NULL,
556
+ (style == YAML_BLOCK_SEQUENCE_STYLE ? "block" :
557
+ style == YAML_FLOW_SEQUENCE_STYLE ? "flow" :
558
+ "unknown"), -1, YAML_PLAIN_SCALAR_STYLE);
559
+ if (!value) goto document_error;
560
+ if (!yaml_document_append_mapping_pair(&output_document,
561
+ properties, key, value)) goto document_error;
562
+ }
563
+
564
+ break;
565
+
566
+ case YAML_SEQUENCE_END_EVENT:
567
+
568
+ /* Add 'type': 'SEQUENCE-END'. */
569
+
570
+ key = yaml_document_add_scalar(&output_document, NULL,
571
+ "type", -1, YAML_PLAIN_SCALAR_STYLE);
572
+ if (!key) goto document_error;
573
+ value = yaml_document_add_scalar(&output_document, NULL,
574
+ "SEQUENCE-END", -1, YAML_PLAIN_SCALAR_STYLE);
575
+ if (!value) goto document_error;
576
+ if (!yaml_document_append_mapping_pair(&output_document,
577
+ properties, key, value)) goto document_error;
578
+
579
+ break;
580
+
581
+ case YAML_MAPPING_START_EVENT:
582
+
583
+ /* Add 'type': 'MAPPING-START'. */
584
+
585
+ key = yaml_document_add_scalar(&output_document, NULL,
586
+ "type", -1, YAML_PLAIN_SCALAR_STYLE);
587
+ if (!key) goto document_error;
588
+ value = yaml_document_add_scalar(&output_document, NULL,
589
+ "MAPPING-START", -1, YAML_PLAIN_SCALAR_STYLE);
590
+ if (!value) goto document_error;
591
+ if (!yaml_document_append_mapping_pair(&output_document,
592
+ properties, key, value)) goto document_error;
593
+
594
+ /* Add 'anchor': <anchor>. */
595
+
596
+ if (input_event.data.mapping_start.anchor)
597
+ {
598
+ key = yaml_document_add_scalar(&output_document, NULL,
599
+ "anchor", -1, YAML_PLAIN_SCALAR_STYLE);
600
+ if (!key) goto document_error;
601
+ value = yaml_document_add_scalar(&output_document, NULL,
602
+ input_event.data.mapping_start.anchor, -1,
603
+ YAML_DOUBLE_QUOTED_SCALAR_STYLE);
604
+ if (!value) goto document_error;
605
+ if (!yaml_document_append_mapping_pair(&output_document,
606
+ properties, key, value)) goto document_error;
607
+ }
608
+
609
+ /* Add 'tag': <tag>. */
610
+
611
+ if (input_event.data.mapping_start.tag)
612
+ {
613
+ key = yaml_document_add_scalar(&output_document, NULL,
614
+ "tag", -1, YAML_PLAIN_SCALAR_STYLE);
615
+ if (!key) goto document_error;
616
+ value = yaml_document_add_scalar(&output_document, NULL,
617
+ input_event.data.mapping_start.tag, -1,
618
+ YAML_DOUBLE_QUOTED_SCALAR_STYLE);
619
+ if (!value) goto document_error;
620
+ if (!yaml_document_append_mapping_pair(&output_document,
621
+ properties, key, value)) goto document_error;
622
+ }
623
+
624
+ /* Add 'implicit': <flag>. */
625
+
626
+ key = yaml_document_add_scalar(&output_document, NULL,
627
+ "implicit", -1, YAML_PLAIN_SCALAR_STYLE);
628
+ if (!key) goto document_error;
629
+ value = yaml_document_add_scalar(&output_document, YAML_BOOL_TAG,
630
+ (input_event.data.mapping_start.implicit ?
631
+ "true" : "false"), -1, YAML_PLAIN_SCALAR_STYLE);
632
+ if (!value) goto document_error;
633
+ if (!yaml_document_append_mapping_pair(&output_document,
634
+ properties, key, value)) goto document_error;
635
+
636
+ /* Display the style information. */
637
+
638
+ if (input_event.data.sequence_start.style)
639
+ {
640
+ yaml_sequence_style_t style
641
+ = input_event.data.mapping_start.style;
642
+
643
+ /* Add 'style': <style>. */
644
+
645
+ key = yaml_document_add_scalar(&output_document, NULL,
646
+ "style", -1, YAML_PLAIN_SCALAR_STYLE);
647
+ if (!key) goto document_error;
648
+ value = yaml_document_add_scalar(&output_document, NULL,
649
+ (style == YAML_BLOCK_MAPPING_STYLE ? "block" :
650
+ style == YAML_FLOW_MAPPING_STYLE ? "flow" :
651
+ "unknown"), -1, YAML_PLAIN_SCALAR_STYLE);
652
+ if (!value) goto document_error;
653
+ if (!yaml_document_append_mapping_pair(&output_document,
654
+ properties, key, value)) goto document_error;
655
+ }
656
+
657
+ break;
658
+
659
+ case YAML_MAPPING_END_EVENT:
660
+
661
+ /* Add 'type': 'MAPPING-END'. */
662
+
663
+ key = yaml_document_add_scalar(&output_document, NULL,
664
+ "type", -1, YAML_PLAIN_SCALAR_STYLE);
665
+ if (!key) goto document_error;
666
+ value = yaml_document_add_scalar(&output_document, NULL,
667
+ "MAPPING-END", -1, YAML_PLAIN_SCALAR_STYLE);
668
+ if (!value) goto document_error;
669
+ if (!yaml_document_append_mapping_pair(&output_document,
670
+ properties, key, value)) goto document_error;
671
+
672
+ break;
673
+
674
+ default:
675
+ /* It couldn't really happen. */
676
+ break;
677
+ }
678
+
679
+ /* Delete the event object. */
680
+
681
+ yaml_event_delete(&input_event);
682
+ }
683
+
684
+ if (!yaml_emitter_dump(&emitter, &output_document))
685
+ goto emitter_error;
686
+ if (!yaml_emitter_close(&emitter))
687
+ goto emitter_error;
688
+
689
+ yaml_parser_delete(&parser);
690
+ yaml_emitter_delete(&emitter);
691
+
692
+ return 0;
693
+
694
+ parser_error:
695
+
696
+ /* Display a parser error message. */
697
+
698
+ switch (parser.error)
699
+ {
700
+ case YAML_MEMORY_ERROR:
701
+ fprintf(stderr, "Memory error: Not enough memory for parsing\n");
702
+ break;
703
+
704
+ case YAML_READER_ERROR:
705
+ if (parser.problem_value != -1) {
706
+ fprintf(stderr, "Reader error: %s: #%X at %d\n", parser.problem,
707
+ parser.problem_value, parser.problem_offset);
708
+ }
709
+ else {
710
+ fprintf(stderr, "Reader error: %s at %d\n", parser.problem,
711
+ parser.problem_offset);
712
+ }
713
+ break;
714
+
715
+ case YAML_SCANNER_ERROR:
716
+ if (parser.context) {
717
+ fprintf(stderr, "Scanner error: %s at line %d, column %d\n"
718
+ "%s at line %d, column %d\n", parser.context,
719
+ parser.context_mark.line+1, parser.context_mark.column+1,
720
+ parser.problem, parser.problem_mark.line+1,
721
+ parser.problem_mark.column+1);
722
+ }
723
+ else {
724
+ fprintf(stderr, "Scanner error: %s at line %d, column %d\n",
725
+ parser.problem, parser.problem_mark.line+1,
726
+ parser.problem_mark.column+1);
727
+ }
728
+ break;
729
+
730
+ case YAML_PARSER_ERROR:
731
+ if (parser.context) {
732
+ fprintf(stderr, "Parser error: %s at line %d, column %d\n"
733
+ "%s at line %d, column %d\n", parser.context,
734
+ parser.context_mark.line+1, parser.context_mark.column+1,
735
+ parser.problem, parser.problem_mark.line+1,
736
+ parser.problem_mark.column+1);
737
+ }
738
+ else {
739
+ fprintf(stderr, "Parser error: %s at line %d, column %d\n",
740
+ parser.problem, parser.problem_mark.line+1,
741
+ parser.problem_mark.column+1);
742
+ }
743
+ break;
744
+
745
+ default:
746
+ /* Couldn't happen. */
747
+ fprintf(stderr, "Internal error\n");
748
+ break;
749
+ }
750
+
751
+ yaml_event_delete(&input_event);
752
+ yaml_document_delete(&output_document);
753
+ yaml_parser_delete(&parser);
754
+ yaml_emitter_delete(&emitter);
755
+
756
+ return 1;
757
+
758
+ emitter_error:
759
+
760
+ /* Display an emitter error message. */
761
+
762
+ switch (emitter.error)
763
+ {
764
+ case YAML_MEMORY_ERROR:
765
+ fprintf(stderr, "Memory error: Not enough memory for emitting\n");
766
+ break;
767
+
768
+ case YAML_WRITER_ERROR:
769
+ fprintf(stderr, "Writer error: %s\n", emitter.problem);
770
+ break;
771
+
772
+ case YAML_EMITTER_ERROR:
773
+ fprintf(stderr, "Emitter error: %s\n", emitter.problem);
774
+ break;
775
+
776
+ default:
777
+ /* Couldn't happen. */
778
+ fprintf(stderr, "Internal error\n");
779
+ break;
780
+ }
781
+
782
+ yaml_event_delete(&input_event);
783
+ yaml_document_delete(&output_document);
784
+ yaml_parser_delete(&parser);
785
+ yaml_emitter_delete(&emitter);
786
+
787
+ return 1;
788
+
789
+ document_error:
790
+
791
+ fprintf(stderr, "Memory error: Not enough memory for creating a document\n");
792
+
793
+ yaml_event_delete(&input_event);
794
+ yaml_document_delete(&output_document);
795
+ yaml_parser_delete(&parser);
796
+ yaml_emitter_delete(&emitter);
797
+
798
+ return 1;
799
+ }
800
+