summaryrefslogtreecommitdiffstats
path: root/web/server/h2o/libh2o/deps/yoml
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-05 11:19:16 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-05 12:07:37 +0000
commitb485aab7e71c1625cfc27e0f92c9509f42378458 (patch)
treeae9abe108601079d1679194de237c9a435ae5b55 /web/server/h2o/libh2o/deps/yoml
parentAdding upstream version 1.44.3. (diff)
downloadnetdata-b485aab7e71c1625cfc27e0f92c9509f42378458.tar.xz
netdata-b485aab7e71c1625cfc27e0f92c9509f42378458.zip
Adding upstream version 1.45.3+dfsg.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'web/server/h2o/libh2o/deps/yoml')
-rw-r--r--web/server/h2o/libh2o/deps/yoml/.gitmodules3
-rw-r--r--web/server/h2o/libh2o/deps/yoml/Makefile3
-rw-r--r--web/server/h2o/libh2o/deps/yoml/README.md66
-rw-r--r--web/server/h2o/libh2o/deps/yoml/test-yoml.c278
-rw-r--r--web/server/h2o/libh2o/deps/yoml/yoml-parser.h391
-rw-r--r--web/server/h2o/libh2o/deps/yoml/yoml.h148
6 files changed, 0 insertions, 889 deletions
diff --git a/web/server/h2o/libh2o/deps/yoml/.gitmodules b/web/server/h2o/libh2o/deps/yoml/.gitmodules
deleted file mode 100644
index 37df0c6dc..000000000
--- a/web/server/h2o/libh2o/deps/yoml/.gitmodules
+++ /dev/null
@@ -1,3 +0,0 @@
-[submodule "deps/picotest"]
- path = deps/picotest
- url = https://github.com/h2o/picotest.git
diff --git a/web/server/h2o/libh2o/deps/yoml/Makefile b/web/server/h2o/libh2o/deps/yoml/Makefile
deleted file mode 100644
index 6f4859025..000000000
--- a/web/server/h2o/libh2o/deps/yoml/Makefile
+++ /dev/null
@@ -1,3 +0,0 @@
-test:
- $(CC) -Wall -g -I deps/picotest deps/picotest/picotest.c test-yoml.c -lyaml -o test-yoml
- ./test-yoml
diff --git a/web/server/h2o/libh2o/deps/yoml/README.md b/web/server/h2o/libh2o/deps/yoml/README.md
deleted file mode 100644
index f58678927..000000000
--- a/web/server/h2o/libh2o/deps/yoml/README.md
+++ /dev/null
@@ -1,66 +0,0 @@
-YOML - a DOM-like interface to YAML
-====
-
-YOML is a DOM-like interface to YAML, implemented as a wrapper around [libyaml](http://pyyaml.org/wiki/LibYAML).
-
-It is a header-only library. Just include the .h files to use the library.
-
-```
-#include "yoml.h" /* defines the structures */
-#include "yoml-parser.h" /* defines the parser */
-
-static yoml_t *parse_file(FILE *fp)
-{
- yaml_parser_t parser;
- yoml_t *doc;
-
- yaml_parser_initialize(&parser);
- yaml_parser_set_input_file(&parser, fp);
-
- doc = yoml_parse_document(&parser, NULL);
-
- yaml_parser_delete(&parser);
-
- return doc;
-}
-
-static void dump_node(yoml_t *node, int indent)
-{
- size_t i;
-
- switch (node->type) {
- case YOML_TYPE_SCALAR:
- printf("%*s[SCALAR] %s\n", indent, "", node->data.scalar);
- break;
- case YOML_TYPE_SEQUENCE:
- printf("%*s[SEQUENCE] (size:%zu)\n", indent, "", node->data.sequence.size);
- for (i = 0; i != node.data.sequence.size; ++i)
- dump_node(node->data.sequence.elements[i], indent + 2);
- break;
- case YOML_TYPE_MAPPING:
- printf("%*s[MAPPING] (size:%zu)\n", indent, "", node->data.mapping.size);
- indent += 2;
- for (i = 0; i != node.data.mapping.size; ++i) {
- printf(%*s[KEY]\n", indent, "");
- dump_node(node->data.mapping.elements[i].key, indent + 2);
- printf(%*s[VALUE]\n", indent, "");
- dump_node(node->data.mapping.elements[i].value, indent + 2);
- }
- indent -= 2;
- break;
- }
-}
-
-static void dump_file(FILE *fp)
-{
- yoml_t *doc = parse_file(fp);
-
- if (doc == NULL) {
- fprintf(stderr, "parse error!\n"); /* error info can be obtained from yaml_parser_t */
- return;
- }
-
- dump_node(doc, 0);
- yoml_free(doc);
-}
-```
diff --git a/web/server/h2o/libh2o/deps/yoml/test-yoml.c b/web/server/h2o/libh2o/deps/yoml/test-yoml.c
deleted file mode 100644
index d154138cc..000000000
--- a/web/server/h2o/libh2o/deps/yoml/test-yoml.c
+++ /dev/null
@@ -1,278 +0,0 @@
-/*
- * Copyright (c) 2014 DeNA Co., Ltd.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to
- * deal in the Software without restriction, including without limitation the
- * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
- * sell copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
- * IN THE SOFTWARE.
- */
-#include <stdio.h>
-#include "yoml.h"
-#include "yoml-parser.h"
-
-#include "picotest.h"
-
-static yoml_t *parse(const char *fn, const char *s)
-{
- yaml_parser_t parser;
- yoml_t *doc;
-
- yaml_parser_initialize(&parser);
- yaml_parser_set_input_string(&parser, (yaml_char_t*)s, strlen(s));
- doc = yoml_parse_document(&parser, NULL, NULL, fn);
- yaml_parser_delete(&parser);
-
- return doc;
-}
-
-static yoml_t *get_value(yoml_t *mapping, const char *key)
-{
- size_t i;
- for (i = 0; i != mapping->data.mapping.size; ++i)
- if (mapping->data.mapping.elements[i].key->type == YOML_TYPE_SCALAR &&
- strcmp(mapping->data.mapping.elements[i].key->data.scalar, key) == 0)
- return mapping->data.mapping.elements[i].value;
- return NULL;
-}
-
-int main(int argc, char **argv)
-{
- yoml_t *doc, *t;
- size_t i;
-
- doc = parse("foo.yaml", "abc");
- ok(doc != NULL);
- ok(strcmp(doc->filename, "foo.yaml") == 0);
- ok(doc->type == YOML_TYPE_SCALAR);
- ok(strcmp(doc->data.scalar, "abc") == 0);
- yoml_free(doc, NULL);
-
- doc = parse(
- "foo.yaml",
- "---\n"
- "a: b\n"
- "c: d\n"
- "---\n"
- "e: f\n");
- ok(doc != NULL);
- ok(strcmp(doc->filename, "foo.yaml") == 0);
- ok(doc->type == YOML_TYPE_MAPPING);
- ok(doc->data.mapping.size == 2);
- t = doc->data.mapping.elements[0].key;
- ok(strcmp(t->filename, "foo.yaml") == 0);
- ok(t->type == YOML_TYPE_SCALAR);
- ok(strcmp(t->data.scalar, "a") == 0);
- t = doc->data.mapping.elements[0].value;
- ok(strcmp(t->filename, "foo.yaml") == 0);
- ok(t->type == YOML_TYPE_SCALAR);
- ok(strcmp(t->data.scalar, "b") == 0);
- t = doc->data.mapping.elements[1].key;
- ok(strcmp(t->filename, "foo.yaml") == 0);
- ok(t->type == YOML_TYPE_SCALAR);
- ok(strcmp(t->data.scalar, "c") == 0);
- t = doc->data.mapping.elements[1].value;
- ok(strcmp(t->filename, "foo.yaml") == 0);
- ok(t->type == YOML_TYPE_SCALAR);
- ok(strcmp(t->data.scalar, "d") == 0);
- yoml_free(doc, NULL);
-
- doc = parse(
- "bar.yaml",
- "- a: b\n"
- " c: d\n"
- "- e\n");
- ok(doc != NULL);
- ok(strcmp(doc->filename, "bar.yaml") == 0);
- ok(doc->type == YOML_TYPE_SEQUENCE);
- ok(doc->data.sequence.size == 2);
- t = doc->data.sequence.elements[0];
- ok(strcmp(doc->filename, "bar.yaml") == 0);
- ok(t->type == YOML_TYPE_MAPPING);
- ok(t->data.mapping.size == 2);
- t = doc->data.sequence.elements[0]->data.mapping.elements[0].key;
- ok(strcmp(doc->filename, "bar.yaml") == 0);
- ok(t->type == YOML_TYPE_SCALAR);
- ok(strcmp(t->data.scalar, "a") == 0);
- t = doc->data.sequence.elements[0]->data.mapping.elements[0].value;
- ok(strcmp(doc->filename, "bar.yaml") == 0);
- ok(t->type == YOML_TYPE_SCALAR);
- ok(strcmp(t->data.scalar, "b") == 0);
- t = doc->data.sequence.elements[0]->data.mapping.elements[1].key;
- ok(strcmp(doc->filename, "bar.yaml") == 0);
- ok(t->type == YOML_TYPE_SCALAR);
- ok(strcmp(t->data.scalar, "c") == 0);
- t = doc->data.sequence.elements[0]->data.mapping.elements[1].value;
- ok(strcmp(doc->filename, "bar.yaml") == 0);
- ok(t->type == YOML_TYPE_SCALAR);
- ok(strcmp(t->data.scalar, "d") == 0);
- t = doc->data.sequence.elements[1];
- ok(strcmp(doc->filename, "bar.yaml") == 0);
- ok(t->type == YOML_TYPE_SCALAR);
- ok(strcmp(t->data.scalar, "e") == 0);
- yoml_free(doc, NULL);
-
- doc = parse(
- "baz.yaml",
- "- &abc\n"
- " - 1\n"
- " - 2\n"
- "- *abc\n");
- ok(doc != NULL);
- ok(strcmp(doc->filename, "baz.yaml") == 0);
- ok(doc->type == YOML_TYPE_SEQUENCE);
- ok(doc->data.sequence.size == 2);
- ok(doc->data.sequence.elements[0] == doc->data.sequence.elements[1]);
- t = doc->data.sequence.elements[0];
- ok(strcmp(t->filename, "baz.yaml") == 0);
- ok(t->_refcnt == 2);
- ok(t->type == YOML_TYPE_SEQUENCE);
- ok(t->data.sequence.size == 2);
- t = doc->data.sequence.elements[0]->data.sequence.elements[0];
- ok(strcmp(t->filename, "baz.yaml") == 0);
- ok(t->type == YOML_TYPE_SCALAR);
- ok(strcmp(t->data.scalar, "1") == 0);
- t = doc->data.sequence.elements[0]->data.sequence.elements[1];
- ok(strcmp(t->filename, "baz.yaml") == 0);
- ok(t->type == YOML_TYPE_SCALAR);
- ok(strcmp(t->data.scalar, "2") == 0);
-
- doc = parse(
- "foo.yaml",
- "- &link\n"
- " x: 1\n"
- " y: 2\n"
- "- <<: *link\n"
- " y: 3\n");
- ok(doc != NULL);
- ok(doc->type == YOML_TYPE_SEQUENCE);
- ok(doc->data.sequence.size == 2);
- ok(doc->data.sequence.elements[0]->type == YOML_TYPE_MAPPING);
- ok(doc->data.sequence.elements[0]->data.mapping.size == 2);
- ok(doc->data.sequence.elements[0]->data.mapping.elements[0].key->type == YOML_TYPE_SCALAR);
- ok(strcmp(doc->data.sequence.elements[0]->data.mapping.elements[0].key->data.scalar, "x") == 0);
- ok(doc->data.sequence.elements[0]->data.mapping.elements[0].value->type == YOML_TYPE_SCALAR);
- ok(strcmp(doc->data.sequence.elements[0]->data.mapping.elements[0].value->data.scalar, "1") == 0);
- ok(doc->data.sequence.elements[0]->data.mapping.elements[1].key->type == YOML_TYPE_SCALAR);
- ok(strcmp(doc->data.sequence.elements[0]->data.mapping.elements[1].key->data.scalar, "y") == 0);
- ok(doc->data.sequence.elements[0]->data.mapping.elements[1].value->type == YOML_TYPE_SCALAR);
- ok(strcmp(doc->data.sequence.elements[0]->data.mapping.elements[1].value->data.scalar, "2") == 0);
- ok(doc->data.sequence.elements[1]->data.mapping.elements[0].key->type == YOML_TYPE_SCALAR);
- ok(strcmp(doc->data.sequence.elements[1]->data.mapping.elements[0].key->data.scalar, "x") == 0);
- ok(doc->data.sequence.elements[1]->data.mapping.elements[0].value->type == YOML_TYPE_SCALAR);
- ok(strcmp(doc->data.sequence.elements[1]->data.mapping.elements[0].value->data.scalar, "1") == 0);
- ok(doc->data.sequence.elements[1]->data.mapping.elements[1].key->type == YOML_TYPE_SCALAR);
- ok(strcmp(doc->data.sequence.elements[1]->data.mapping.elements[1].key->data.scalar, "y") == 0);
- ok(doc->data.sequence.elements[1]->data.mapping.elements[1].value->type == YOML_TYPE_SCALAR);
- ok(strcmp(doc->data.sequence.elements[1]->data.mapping.elements[1].value->data.scalar, "3") == 0);
-
- doc = parse(
- "foo.yaml",
- "- &CENTER { x: 1, y: 2 }\n"
- "- &LEFT { x: 0, y: 2 }\n"
- "- &BIG { r: 10 }\n"
- "- &SMALL { r: 1 }\n"
- "- # Explicit keys\n"
- " x: 1\n"
- " y: 2\n"
- " r: 10\n"
- "- # Merge one map\n"
- " << : *CENTER\n"
- " r: 10\n"
- "- # Merge multiple maps\n"
- " << : [ *CENTER, *BIG ]\n"
- "- # Override\n"
- " << : [ *BIG, *LEFT, *SMALL ]\n"
- " x: 1\n");
- ok(doc != NULL);
- ok(doc->type == YOML_TYPE_SEQUENCE);
- for (i = 4; i <= 7; ++i) {
- ok(doc->data.sequence.elements[i]->type == YOML_TYPE_MAPPING);
- ok(doc->data.sequence.elements[i]->data.mapping.size == 3);
- t = get_value(doc->data.sequence.elements[i], "x");
- ok(t != NULL);
- ok(t->type == YOML_TYPE_SCALAR);
- ok(strcmp(t->data.scalar, "1") == 0);
- t = get_value(doc->data.sequence.elements[i], "y");
- ok(t != NULL);
- ok(t->type == YOML_TYPE_SCALAR);
- ok(strcmp(t->data.scalar, "2") == 0);
- t = get_value(doc->data.sequence.elements[i], "r");
- ok(t != NULL);
- ok(t->type == YOML_TYPE_SCALAR);
- ok(strcmp(t->data.scalar, "10") == 0);
- }
-
- doc = parse(
- "foo.yaml",
- "- &link\n"
- " x: 1\n"
- " x: 2\n"
- "-\n"
- " x: 3\n"
- " <<: *link\n");
- ok(doc != NULL);
- ok(doc->type == YOML_TYPE_SEQUENCE);
- ok(doc->data.sequence.size == 2);
- ok(doc->data.sequence.elements[0]->type == YOML_TYPE_MAPPING);
- ok(doc->data.sequence.elements[0]->data.mapping.size == 2);
- ok(doc->data.sequence.elements[0]->data.mapping.elements[0].key->type == YOML_TYPE_SCALAR);
- ok(strcmp(doc->data.sequence.elements[0]->data.mapping.elements[0].key->data.scalar, "x") == 0);
- ok(doc->data.sequence.elements[0]->data.mapping.elements[0].value->type == YOML_TYPE_SCALAR);
- ok(strcmp(doc->data.sequence.elements[0]->data.mapping.elements[0].value->data.scalar, "1") == 0);
- ok(doc->data.sequence.elements[0]->data.mapping.elements[1].key->type == YOML_TYPE_SCALAR);
- ok(strcmp(doc->data.sequence.elements[0]->data.mapping.elements[1].key->data.scalar, "x") == 0);
- ok(doc->data.sequence.elements[0]->data.mapping.elements[1].value->type == YOML_TYPE_SCALAR);
- ok(strcmp(doc->data.sequence.elements[0]->data.mapping.elements[1].value->data.scalar, "2") == 0);
- ok(doc->data.sequence.elements[1]->data.mapping.size == 3);
- ok(doc->data.sequence.elements[1]->data.mapping.elements[0].key->type == YOML_TYPE_SCALAR);
- ok(strcmp(doc->data.sequence.elements[1]->data.mapping.elements[0].key->data.scalar, "x") == 0);
- ok(doc->data.sequence.elements[1]->data.mapping.elements[0].value->type == YOML_TYPE_SCALAR);
- ok(strcmp(doc->data.sequence.elements[1]->data.mapping.elements[0].value->data.scalar, "3") == 0);
- ok(doc->data.sequence.elements[1]->data.mapping.elements[1].key->type == YOML_TYPE_SCALAR);
- ok(strcmp(doc->data.sequence.elements[1]->data.mapping.elements[1].key->data.scalar, "x") == 0);
- ok(doc->data.sequence.elements[1]->data.mapping.elements[1].value->type == YOML_TYPE_SCALAR);
- ok(strcmp(doc->data.sequence.elements[1]->data.mapping.elements[1].value->data.scalar, "1") == 0);
- ok(doc->data.sequence.elements[1]->data.mapping.elements[2].key->type == YOML_TYPE_SCALAR);
- ok(strcmp(doc->data.sequence.elements[1]->data.mapping.elements[2].key->data.scalar, "x") == 0);
- ok(doc->data.sequence.elements[1]->data.mapping.elements[2].value->type == YOML_TYPE_SCALAR);
- ok(strcmp(doc->data.sequence.elements[1]->data.mapping.elements[2].value->data.scalar, "2") == 0);
-
- doc = parse(
- "foo.yaml",
- "a: &link1\n"
- " x: 1\n"
- "b: &link2\n"
- " <<: *link1\n"
- " y: 2\n"
- "c:\n"
- " <<: *link2\n"
- );
- ok(doc != NULL);
- ok(doc->type == YOML_TYPE_MAPPING);
- ok(doc->data.mapping.size == 3);
- ok(doc->data.mapping.elements[2].value->type == YOML_TYPE_MAPPING);
- ok(doc->data.mapping.elements[2].value->data.mapping.size == 2);
- ok(doc->data.mapping.elements[2].value->data.mapping.elements[0].key->type == YOML_TYPE_SCALAR);
- ok(strcmp(doc->data.mapping.elements[2].value->data.mapping.elements[0].key->data.scalar, "x") == 0);
- ok(doc->data.mapping.elements[2].value->data.mapping.elements[0].value->type == YOML_TYPE_SCALAR);
- ok(strcmp(doc->data.mapping.elements[2].value->data.mapping.elements[0].value->data.scalar, "1") == 0);
- ok(doc->data.mapping.elements[2].value->data.mapping.elements[1].key->type == YOML_TYPE_SCALAR);
- ok(strcmp(doc->data.mapping.elements[2].value->data.mapping.elements[1].key->data.scalar, "y") == 0);
- ok(doc->data.mapping.elements[2].value->data.mapping.elements[1].value->type == YOML_TYPE_SCALAR);
- ok(strcmp(doc->data.mapping.elements[2].value->data.mapping.elements[1].value->data.scalar, "2") == 0);
-
- return done_testing();
-}
diff --git a/web/server/h2o/libh2o/deps/yoml/yoml-parser.h b/web/server/h2o/libh2o/deps/yoml/yoml-parser.h
deleted file mode 100644
index 78cdd4462..000000000
--- a/web/server/h2o/libh2o/deps/yoml/yoml-parser.h
+++ /dev/null
@@ -1,391 +0,0 @@
-/*
- * Copyright (c) 2014 DeNA Co., Ltd.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to
- * deal in the Software without restriction, including without limitation the
- * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
- * sell copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
- * IN THE SOFTWARE.
- */
-#ifndef yoml_parser_h
-#define yoml_parser_h
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <assert.h>
-#include <stddef.h>
-#include <stdlib.h>
-#include <string.h>
-#include <yaml.h>
-#include "yoml.h"
-
-typedef struct st_yoml_parse_args_t {
- const char *filename;
- void *(*mem_set)(void *, int, size_t);
- struct {
- yoml_t *(*cb)(const char *tag, yoml_t *node, void *cb_arg);
- void *cb_arg;
- } resolve_tag;
-} yoml_parse_args_t;
-
-static yoml_t *yoml__parse_node(yaml_parser_t *parser, yaml_event_type_t *last_event, yoml_parse_args_t *parse_args);
-
-static inline char *yoml__strdup(yaml_char_t *s)
-{
- return strdup((char *)s);
-}
-
-static inline yoml_t *yoml__new_node(const char *filename, yoml_type_t type, size_t sz, yaml_char_t *anchor, yaml_char_t *tag, yaml_event_t *event)
-{
- yoml_t *node = malloc(sz);
- node->filename = filename != NULL ? strdup(filename) : NULL;
- node->type = type;
- node->line = event->start_mark.line;
- if (type == YOML_TYPE_SCALAR) {
- switch (event->data.scalar.style) {
- case YAML_LITERAL_SCALAR_STYLE:
- case YAML_FOLDED_SCALAR_STYLE:
- ++node->line;
- break;
- default:
- break;
- }
- }
- node->column = event->start_mark.column;
- node->anchor = anchor != NULL ? yoml__strdup(anchor) : NULL;
- node->tag = tag != NULL ? yoml__strdup(tag) : NULL;
- node->_refcnt = 1;
- return node;
-}
-
-static inline yoml_t *yoml__parse_sequence(yaml_parser_t *parser, yaml_event_t *event, yoml_parse_args_t *parse_args)
-{
- yoml_t *seq = yoml__new_node(parse_args->filename, YOML_TYPE_SEQUENCE, offsetof(yoml_t, data.sequence.elements),
- event->data.sequence_start.anchor, event->data.sequence_start.tag, event);
-
- seq->data.sequence.size = 0;
-
- while (1) {
- yoml_t *new_node;
- yaml_event_type_t unhandled;
- if ((new_node = yoml__parse_node(parser, &unhandled, parse_args)) == NULL) {
- if (unhandled == YAML_SEQUENCE_END_EVENT) {
- break;
- } else {
- yoml_free(seq, parse_args->mem_set);
- seq = NULL;
- break;
- }
- }
- seq = realloc(seq, offsetof(yoml_t, data.sequence.elements) + sizeof(yoml_t *) * (seq->data.sequence.size + 1));
- seq->data.sequence.elements[seq->data.sequence.size++] = new_node;
- }
-
- return seq;
-}
-
-static inline yoml_t *yoml__parse_mapping(yaml_parser_t *parser, yaml_event_t *event, yoml_parse_args_t *parse_args)
-{
- yoml_t *map = yoml__new_node(parse_args->filename, YOML_TYPE_MAPPING, offsetof(yoml_t, data.mapping.elements),
- event->data.mapping_start.anchor, event->data.mapping_start.tag, event);
-
- map->data.mapping.size = 0;
-
- while (1) {
- yoml_t *key, *value;
- yaml_event_type_t unhandled;
- if ((key = yoml__parse_node(parser, &unhandled, parse_args)) == NULL) {
- if (unhandled == YAML_MAPPING_END_EVENT) {
- break;
- } else {
- yoml_free(map, parse_args->mem_set);
- map = NULL;
- break;
- }
- }
- if ((value = yoml__parse_node(parser, NULL, parse_args)) == NULL) {
- yoml_free(map, parse_args->mem_set);
- map = NULL;
- break;
- }
- map = realloc(map, offsetof(yoml_t, data.mapping.elements) + sizeof(yoml_mapping_element_t) * (map->data.mapping.size + 1));
- map->data.mapping.elements[map->data.mapping.size].key = key;
- map->data.mapping.elements[map->data.mapping.size].value = value;
- ++map->data.mapping.size;
- }
-
- return map;
-}
-
-static yoml_t *yoml__parse_node(yaml_parser_t *parser, yaml_event_type_t *unhandled, yoml_parse_args_t *parse_args)
-{
- yoml_t *node;
- yaml_event_t event;
-
- if (unhandled != NULL)
- *unhandled = YAML_NO_EVENT;
-
- /* wait for a node that is not a stream/doc start event */
- while (1) {
- if (!yaml_parser_parse(parser, &event))
- return NULL;
- if (!(event.type == YAML_STREAM_START_EVENT || event.type == YAML_DOCUMENT_START_EVENT))
- break;
- yaml_event_delete(&event);
- }
-
- switch (event.type) {
- case YAML_ALIAS_EVENT:
- node = yoml__new_node(parse_args->filename, YOML__TYPE_UNRESOLVED_ALIAS, sizeof(*node), NULL, NULL, &event);
- node->data.alias = yoml__strdup(event.data.alias.anchor);
- break;
- case YAML_SCALAR_EVENT:
- node = yoml__new_node(parse_args->filename, YOML_TYPE_SCALAR, sizeof(*node), event.data.scalar.anchor, event.data.scalar.tag, &event);
- node->data.scalar = yoml__strdup(event.data.scalar.value);
- if (parse_args->mem_set != NULL)
- parse_args->mem_set(event.data.scalar.value, 'A', strlen(node->data.scalar));
- break;
- case YAML_SEQUENCE_START_EVENT:
- node = yoml__parse_sequence(parser, &event, parse_args);
- break;
- case YAML_MAPPING_START_EVENT:
- node = yoml__parse_mapping(parser, &event, parse_args);
- break;
- default:
- node = NULL;
- if (unhandled != NULL)
- *unhandled = event.type;
- break;
- }
-
- yaml_event_delete(&event);
-
- return node;
-}
-
-static inline int yoml__merge(yoml_t **dest, size_t offset, yoml_t *src)
-{
- yoml_t *key, *value;
- size_t i, j;
-
- if (src->type != YOML_TYPE_MAPPING)
- return -1;
-
- for (i = 0; i != src->data.mapping.size; ++i) {
- key = src->data.mapping.elements[i].key;
- value = src->data.mapping.elements[i].value;
- if (key->type == YOML_TYPE_SCALAR) {
- for (j = offset; j != (*dest)->data.mapping.size; ++j) {
- if ((*dest)->data.mapping.elements[j].key->type == YOML_TYPE_SCALAR &&
- strcmp((*dest)->data.mapping.elements[j].key->data.scalar, key->data.scalar) == 0)
- goto Skip;
- }
- }
- *dest = realloc(*dest, offsetof(yoml_t, data.mapping.elements) +
- ((*dest)->data.mapping.size + 1) * sizeof((*dest)->data.mapping.elements[0]));
- memmove((*dest)->data.mapping.elements + offset + 1, (*dest)->data.mapping.elements + offset,
- ((*dest)->data.mapping.size - offset) * sizeof((*dest)->data.mapping.elements[0]));
- (*dest)->data.mapping.elements[offset].key = key;
- ++key->_refcnt;
- (*dest)->data.mapping.elements[offset].value = value;
- ++value->_refcnt;
- ++(*dest)->data.mapping.size;
- ++offset;
- Skip:
- ;
- }
-
- return 0;
-}
-
-static inline int yoml__resolve_merge(yoml_t **target, yaml_parser_t *parser, yoml_parse_args_t *parse_args)
-{
- size_t i, j;
-
- switch ((*target)->type) {
- case YOML_TYPE_SCALAR:
- break;
- case YOML_TYPE_SEQUENCE:
- for (i = 0; i != (*target)->data.sequence.size; ++i) {
- if (yoml__resolve_merge((*target)->data.sequence.elements + i, parser, parse_args) != 0)
- return -1;
- }
- break;
- case YOML_TYPE_MAPPING:
- if ((*target)->data.mapping.size != 0) {
- i = (*target)->data.mapping.size;
- do {
- --i;
- if (yoml__resolve_merge(&(*target)->data.mapping.elements[i].key, parser, parse_args) != 0)
- return -1;
- if (yoml__resolve_merge(&(*target)->data.mapping.elements[i].value, parser, parse_args) != 0)
- return -1;
- if ((*target)->data.mapping.elements[i].key->type == YOML_TYPE_SCALAR &&
- strcmp((*target)->data.mapping.elements[i].key->data.scalar, "<<") == 0) {
- /* erase the slot (as well as preserving the values) */
- yoml_mapping_element_t src = (*target)->data.mapping.elements[i];
- memmove((*target)->data.mapping.elements + i, (*target)->data.mapping.elements + i + 1,
- ((*target)->data.mapping.size - i - 1) * sizeof((*target)->data.mapping.elements[0]));
- --(*target)->data.mapping.size;
- /* merge */
- if (src.value->type == YOML_TYPE_SEQUENCE) {
- for (j = 0; j != src.value->data.sequence.size; ++j)
- if (yoml__merge(target, i, src.value->data.sequence.elements[j]) != 0) {
- MergeError:
- if (parser != NULL) {
- parser->problem = "value of the merge key MUST be a mapping or a sequence of mappings";
- parser->problem_mark.line = src.key->line;
- parser->problem_mark.column = src.key->column;
- }
- return -1;
- }
- } else {
- if (yoml__merge(target, i, src.value) != 0)
- goto MergeError;
- }
- /* cleanup */
- yoml_free(src.key, parse_args->mem_set);
- yoml_free(src.value, parse_args->mem_set);
- }
- } while (i != 0);
- }
- break;
- case YOML__TYPE_UNRESOLVED_ALIAS:
- assert(!"unreachable");
- break;
- }
-
- return 0;
-}
-
-
-static inline int yoml__resolve_alias(yoml_t **target, yoml_t *doc, yaml_parser_t *parser, yoml_parse_args_t *parse_args)
-{
- size_t i;
-
- switch ((*target)->type) {
- case YOML_TYPE_SCALAR:
- break;
- case YOML_TYPE_SEQUENCE:
- for (i = 0; i != (*target)->data.sequence.size; ++i) {
- if (yoml__resolve_alias((*target)->data.sequence.elements + i, doc, parser, parse_args) != 0)
- return -1;
- }
- break;
- case YOML_TYPE_MAPPING:
- for (i = 0; i != (*target)->data.mapping.size; ++i) {
- if (yoml__resolve_alias(&(*target)->data.mapping.elements[i].key, doc, parser, parse_args) != 0)
- return -1;
- if (yoml__resolve_alias(&(*target)->data.mapping.elements[i].value, doc, parser, parse_args) != 0)
- return -1;
- }
- break;
- case YOML__TYPE_UNRESOLVED_ALIAS: {
- yoml_t *node = yoml_find_anchor(doc, (*target)->data.alias);
- if (node == NULL) {
- if (parser != NULL) {
- parser->problem = "could not resolve the alias";
- parser->problem_mark.line = (*target)->line;
- parser->problem_mark.column = (*target)->column;
- }
- return -1;
- }
- yoml_free(*target, parse_args->mem_set);
- *target = node;
- ++node->_refcnt;
- } break;
- }
-
- return 0;
-}
-
-static inline int yoml__resolve_tag(yoml_t **target, yaml_parser_t *parser, yoml_parse_args_t *parse_args)
-{
- size_t i;
-
- if (parse_args->resolve_tag.cb == NULL)
- return 0;
-
- if ((*target)->tag != NULL) {
- yoml_t *resolved = parse_args->resolve_tag.cb((*target)->tag, *target, parse_args->resolve_tag.cb_arg);
- if (resolved == NULL) {
- if (parser != NULL) {
- parser->problem = "tag resolution failed";
- parser->problem_mark.line = (*target)->line;
- parser->problem_mark.column = (*target)->column;
- }
- return -1;
- }
- yoml_free(*target, parse_args->mem_set);
- *target = resolved;
- }
-
- switch ((*target)->type) {
- case YOML_TYPE_SCALAR:
- break;
- case YOML_TYPE_SEQUENCE:
- for (i = 0; i != (*target)->data.sequence.size; ++i) {
- if (yoml__resolve_tag((*target)->data.sequence.elements + i, parser, parse_args) != 0)
- return -1;
- }
- break;
- case YOML_TYPE_MAPPING:
- for (i = 0; i != (*target)->data.mapping.size; ++i) {
- if (yoml__resolve_tag(&(*target)->data.mapping.elements[i].key, parser, parse_args) != 0)
- return -1;
- if (yoml__resolve_tag(&(*target)->data.mapping.elements[i].value, parser, parse_args) != 0)
- return -1;
- }
- break;
- case YOML__TYPE_UNRESOLVED_ALIAS:
- break;
- }
-
- return 0;
-}
-
-static inline yoml_t *yoml_parse_document(yaml_parser_t *parser, yaml_event_type_t *unhandled, yoml_parse_args_t *parse_args)
-{
- yoml_t *doc;
-
- /* parse */
- if ((doc = yoml__parse_node(parser, unhandled, parse_args)) == NULL) {
- return NULL;
- }
- if (unhandled != NULL)
- *unhandled = YAML_NO_EVENT;
-
- /* resolve tags, aliases and merge */
- if (yoml__resolve_tag(&doc, parser, parse_args) != 0)
- goto Error;
- if (yoml__resolve_alias(&doc, doc, parser, parse_args) != 0)
- goto Error;
- if (yoml__resolve_merge(&doc, parser, parse_args) != 0)
- goto Error;
-
- return doc;
-
-Error:
- yoml_free(doc, parse_args->mem_set);
- return NULL;
-}
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/web/server/h2o/libh2o/deps/yoml/yoml.h b/web/server/h2o/libh2o/deps/yoml/yoml.h
deleted file mode 100644
index e1e669722..000000000
--- a/web/server/h2o/libh2o/deps/yoml/yoml.h
+++ /dev/null
@@ -1,148 +0,0 @@
-/*
- * Copyright (c) 2014 DeNA Co., Ltd.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to
- * deal in the Software without restriction, including without limitation the
- * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
- * sell copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
- * IN THE SOFTWARE.
- */
-#ifndef yoml_h
-#define yoml_h
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <stdlib.h>
-#include <string.h>
-
-typedef enum enum_yoml_type_t { YOML_TYPE_SCALAR, YOML_TYPE_SEQUENCE, YOML_TYPE_MAPPING, YOML__TYPE_UNRESOLVED_ALIAS } yoml_type_t;
-
-typedef struct st_yoml_t yoml_t;
-
-typedef struct st_yoml_sequence_t {
- size_t size;
- yoml_t *elements[1];
-} yoml_sequence_t;
-
-typedef struct st_yoml_mapping_element_t {
- yoml_t *key;
- yoml_t *value;
-} yoml_mapping_element_t;
-
-typedef struct st_yoml_mapping_t {
- size_t size;
- yoml_mapping_element_t elements[1];
-} yoml_mapping_t;
-
-struct st_yoml_t {
- yoml_type_t type;
- char *filename;
- size_t line;
- size_t column;
- char *anchor;
- char *tag;
- size_t _refcnt;
- union {
- char *scalar;
- yoml_sequence_t sequence;
- yoml_mapping_t mapping;
- char *alias;
- } data;
-};
-
-static inline void yoml_free(yoml_t *node, void *(*mem_set)(void *, int, size_t))
-{
- size_t i;
-
- if (node == NULL)
- return;
-
- if (--node->_refcnt == 0) {
- free(node->filename);
- free(node->anchor);
- free(node->tag);
- switch (node->type) {
- case YOML_TYPE_SCALAR:
- if (mem_set != NULL)
- mem_set(node->data.scalar, 0, strlen(node->data.scalar));
- free(node->data.scalar);
- break;
- case YOML_TYPE_SEQUENCE:
- for (i = 0; i != node->data.sequence.size; ++i) {
- yoml_free(node->data.sequence.elements[i], mem_set);
- }
- break;
- case YOML_TYPE_MAPPING:
- for (i = 0; i != node->data.mapping.size; ++i) {
- yoml_free(node->data.mapping.elements[i].key, mem_set);
- yoml_free(node->data.mapping.elements[i].value, mem_set);
- }
- break;
- case YOML__TYPE_UNRESOLVED_ALIAS:
- free(node->data.alias);
- break;
- }
- free(node);
- }
-}
-
-static inline yoml_t *yoml_find_anchor(yoml_t *node, const char *name)
-{
- yoml_t *n;
- size_t i;
-
- if (node->anchor != NULL && strcmp(node->anchor, name) == 0)
- return node;
-
- switch (node->type) {
- case YOML_TYPE_SEQUENCE:
- for (i = 0; i != node->data.sequence.size; ++i)
- if ((n = yoml_find_anchor(node->data.sequence.elements[i], name)) != NULL)
- return n;
- break;
- case YOML_TYPE_MAPPING:
- for (i = 0; i != node->data.mapping.size; ++i)
- if ((n = yoml_find_anchor(node->data.mapping.elements[i].key, name)) != NULL ||
- (n = yoml_find_anchor(node->data.mapping.elements[i].value, name)) != NULL)
- return n;
- break;
- default:
- break;
- }
-
- return NULL;
-}
-
-static inline yoml_t *yoml_get(yoml_t *node, const char *name)
-{
- size_t i;
-
- if (node->type != YOML_TYPE_MAPPING)
- return NULL;
- for (i = 0; i != node->data.mapping.size; ++i) {
- yoml_t *key = node->data.mapping.elements[i].key;
- if (key->type == YOML_TYPE_SCALAR && strcmp(key->data.scalar, name) == 0)
- return node->data.mapping.elements[i].value;
- }
- return NULL;
-}
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif