summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKirill Simonov <xi@resolvent.net>2009-02-23 19:59:19 +0000
committerKirill Simonov <xi@resolvent.net>2009-02-23 19:59:19 +0000
commit252c575a5cd67b2207ef79e6b29d6f4d12f21ada (patch)
tree3741e793285211f31b87564f372d22709f437bb4
parent45bc975e7b3b34f1f6e29c1b2941de14fb815a55 (diff)
downloadlibyaml-hg-252c575a5cd67b2207ef79e6b29d6f4d12f21ada.tar.gz
Fixed non-ANSI initializations (fixes #115).
-rw-r--r--src/api.c6
-rw-r--r--src/emitter.c64
-rw-r--r--src/loader.c4
-rw-r--r--src/parser.c8
-rw-r--r--src/scanner.c8
-rw-r--r--src/yaml_private.h5
6 files changed, 70 insertions, 25 deletions
diff --git a/src/api.c b/src/api.c
index 02e7b14..0c4732e 100644
--- a/src/api.c
+++ b/src/api.c
@@ -1365,7 +1365,8 @@ yaml_document_append_mapping_pair(yaml_document_t *document,
struct {
yaml_error_type_t error;
} context;
- yaml_node_pair_t pair = { key, value };
+
+ yaml_node_pair_t pair;
assert(document); /* Non-NULL document is required. */
assert(mapping > 0
@@ -1378,6 +1379,9 @@ yaml_document_append_mapping_pair(yaml_document_t *document,
assert(value > 0 && document->nodes.start + value <= document->nodes.top);
/* Valid value id is required. */
+ pair.key = key;
+ pair.value = value;
+
if (!PUSH(&context,
document->nodes.start[mapping-1].data.mapping.pairs, pair))
return 0;
diff --git a/src/emitter.c b/src/emitter.c
index e4e3d26..9a5b3fa 100644
--- a/src/emitter.c
+++ b/src/emitter.c
@@ -1349,10 +1349,15 @@ static int
yaml_emitter_analyze_tag_directive(yaml_emitter_t *emitter,
yaml_tag_directive_t tag_directive)
{
- yaml_string_t handle = STRING(tag_directive.handle,
- strlen((char *)tag_directive.handle));
- yaml_string_t prefix = STRING(tag_directive.prefix,
- strlen((char *)tag_directive.prefix));
+ yaml_string_t handle;
+ yaml_string_t prefix;
+ size_t handle_length;
+ size_t prefix_length;
+
+ handle_length = strlen((char *)tag_directive.handle);
+ prefix_length = strlen((char *)tag_directive.prefix);
+ STRING_ASSIGN(handle, tag_directive.handle, handle_length);
+ STRING_ASSIGN(prefix, tag_directive.prefix, prefix_length);
if (handle.start == handle.end) {
return yaml_emitter_set_emitter_error(emitter,
@@ -1395,7 +1400,11 @@ static int
yaml_emitter_analyze_anchor(yaml_emitter_t *emitter,
yaml_char_t *anchor, int alias)
{
- yaml_string_t string = STRING(anchor, strlen((char *)anchor));
+ size_t anchor_length;
+ yaml_string_t string;
+
+ anchor_length = strlen((char *)anchor);
+ STRING_ASSIGN(string, anchor, anchor_length);
if (string.start == string.end) {
return yaml_emitter_set_emitter_error(emitter, alias ?
@@ -1427,9 +1436,13 @@ static int
yaml_emitter_analyze_tag(yaml_emitter_t *emitter,
yaml_char_t *tag)
{
- yaml_string_t string = STRING(tag, strlen((char *)tag));
+ size_t tag_length;
+ yaml_string_t string;
yaml_tag_directive_t *tag_directive;
+ tag_length = strlen((char *)tag);
+ STRING_ASSIGN(string, tag, tag_length);
+
if (string.start == string.end) {
return yaml_emitter_set_emitter_error(emitter,
"tag value must not be empty");
@@ -1466,7 +1479,7 @@ static int
yaml_emitter_analyze_scalar(yaml_emitter_t *emitter,
yaml_char_t *value, size_t length)
{
- yaml_string_t string = STRING(value, length);
+ yaml_string_t string;
int block_indicators = 0;
int flow_indicators = 0;
@@ -1485,6 +1498,8 @@ yaml_emitter_analyze_scalar(yaml_emitter_t *emitter,
int previous_space = 0;
int previous_break = 0;
+ STRING_ASSIGN(string, value, length);
+
emitter->scalar_data.value = value;
emitter->scalar_data.length = length;
@@ -1772,7 +1787,11 @@ yaml_emitter_write_indicator(yaml_emitter_t *emitter,
char *indicator, int need_whitespace,
int is_whitespace, int is_indention)
{
- yaml_string_t string = STRING((yaml_char_t *)indicator, strlen(indicator));
+ size_t indicator_length;
+ yaml_string_t string;
+
+ indicator_length = strlen(indicator);
+ STRING_ASSIGN(string, (yaml_char_t *)indicator, indicator_length);
if (need_whitespace && !emitter->whitespace) {
if (!PUT(emitter, ' ')) return 0;
@@ -1793,7 +1812,8 @@ static int
yaml_emitter_write_anchor(yaml_emitter_t *emitter,
yaml_char_t *value, size_t length)
{
- yaml_string_t string = STRING(value, length);
+ yaml_string_t string;
+ STRING_ASSIGN(string, value, length);
while (string.pointer != string.end) {
if (!WRITE(emitter, string)) return 0;
@@ -1809,7 +1829,8 @@ static int
yaml_emitter_write_tag_handle(yaml_emitter_t *emitter,
yaml_char_t *value, size_t length)
{
- yaml_string_t string = STRING(value, length);
+ yaml_string_t string;
+ STRING_ASSIGN(string, value, length);
if (!emitter->whitespace) {
if (!PUT(emitter, ' ')) return 0;
@@ -1830,7 +1851,8 @@ yaml_emitter_write_tag_content(yaml_emitter_t *emitter,
yaml_char_t *value, size_t length,
int need_whitespace)
{
- yaml_string_t string = STRING(value, length);
+ yaml_string_t string;
+ STRING_ASSIGN(string, value, length);
if (need_whitespace && !emitter->whitespace) {
if (!PUT(emitter, ' ')) return 0;
@@ -1876,10 +1898,12 @@ static int
yaml_emitter_write_plain_scalar(yaml_emitter_t *emitter,
yaml_char_t *value, size_t length, int allow_breaks)
{
- yaml_string_t string = STRING(value, length);
+ yaml_string_t string;
int spaces = 0;
int breaks = 0;
+ STRING_ASSIGN(string, value, length);
+
if (!emitter->whitespace) {
if (!PUT(emitter, ' ')) return 0;
}
@@ -1934,10 +1958,12 @@ static int
yaml_emitter_write_single_quoted_scalar(yaml_emitter_t *emitter,
yaml_char_t *value, size_t length, int allow_breaks)
{
- yaml_string_t string = STRING(value, length);
+ yaml_string_t string;
int spaces = 0;
int breaks = 0;
+ STRING_ASSIGN(string, value, length);
+
if (!yaml_emitter_write_indicator(emitter, "'", 1, 0, 0))
return 0;
@@ -1995,9 +2021,11 @@ static int
yaml_emitter_write_double_quoted_scalar(yaml_emitter_t *emitter,
yaml_char_t *value, size_t length, int allow_breaks)
{
- yaml_string_t string = STRING(value, length);
+ yaml_string_t string;
int spaces = 0;
+ STRING_ASSIGN(string, value, length);
+
if (!yaml_emitter_write_indicator(emitter, "\"", 1, 0, 0))
return 0;
@@ -2207,9 +2235,11 @@ static int
yaml_emitter_write_literal_scalar(yaml_emitter_t *emitter,
yaml_char_t *value, size_t length)
{
- yaml_string_t string = STRING(value, length);
+ yaml_string_t string;
int breaks = 1;
+ STRING_ASSIGN(string, value, length);
+
if (!yaml_emitter_write_indicator(emitter, "|", 1, 0, 0))
return 0;
if (!yaml_emitter_write_block_scalar_hints(emitter, string))
@@ -2244,10 +2274,12 @@ static int
yaml_emitter_write_folded_scalar(yaml_emitter_t *emitter,
yaml_char_t *value, size_t length)
{
- yaml_string_t string = STRING(value, length);
+ yaml_string_t string;
int breaks = 1;
int leading_spaces = 1;
+ STRING_ASSIGN(string, value, length);
+
if (!yaml_emitter_write_indicator(emitter, ">", 1, 0, 0))
return 0;
if (!yaml_emitter_write_block_scalar_hints(emitter, string))
diff --git a/src/loader.c b/src/loader.c
index 3c96116..9d3d912 100644
--- a/src/loader.c
+++ b/src/loader.c
@@ -225,11 +225,13 @@ static int
yaml_parser_register_anchor(yaml_parser_t *parser,
int index, yaml_char_t *anchor)
{
- yaml_alias_data_t data = { anchor, index, { 0, 0, 0 } };
+ yaml_alias_data_t data;
yaml_alias_data_t *alias_data;
if (!anchor) return 1;
+ data.anchor = anchor;
+ data.index = index;
data.mark = parser->document->nodes.start[index-1].start_mark;
for (alias_data = parser->aliases.start;
diff --git a/src/parser.c b/src/parser.c
index 4d4d3b7..eb2a2c7 100644
--- a/src/parser.c
+++ b/src/parser.c
@@ -1280,10 +1280,10 @@ yaml_parser_process_directives(yaml_parser_t *parser,
}
else if (token->type == YAML_TAG_DIRECTIVE_TOKEN) {
- yaml_tag_directive_t value = {
- token->data.tag_directive.handle,
- token->data.tag_directive.prefix
- };
+ yaml_tag_directive_t value;
+ value.handle = token->data.tag_directive.handle;
+ value.prefix = token->data.tag_directive.prefix;
+
if (!yaml_parser_append_tag_directive(parser, value, 0,
token->start_mark))
goto error;
diff --git a/src/scanner.c b/src/scanner.c
index f96a9f4..86e2050 100644
--- a/src/scanner.c
+++ b/src/scanner.c
@@ -1118,9 +1118,11 @@ yaml_parser_save_simple_key(yaml_parser_t *parser)
if (parser->simple_key_allowed)
{
- yaml_simple_key_t simple_key = { 1, required,
- parser->tokens_parsed + parser->tokens.tail - parser->tokens.head,
- { 0, 0, 0 } };
+ yaml_simple_key_t simple_key;
+ simple_key.possible = 1;
+ simple_key.required = required;
+ simple_key.token_number =
+ parser->tokens_parsed + parser->tokens.tail - parser->tokens.head;
simple_key.mark = parser->mark;
if (!yaml_parser_remove_simple_key(parser)) return 0;
diff --git a/src/yaml_private.h b/src/yaml_private.h
index 6320caf..ed5ea66 100644
--- a/src/yaml_private.h
+++ b/src/yaml_private.h
@@ -113,6 +113,11 @@ yaml_string_join(
#define STRING(string,length) { (string), (string)+(length), (string) }
+#define STRING_ASSIGN(value,string,length) \
+ ((value).start = (string), \
+ (value).end = (string)+(length), \
+ (value).pointer = (string))
+
#define STRING_INIT(context,string,size) \
(((string).start = yaml_malloc(size)) ? \
((string).pointer = (string).start, \