Skip to content

Commit 6a46125

Browse files
committed
Auto-quote values in obsoletes, streams, translations
1 parent cb8d47e commit 6a46125

39 files changed

+656
-112
lines changed

modulemd/include/private/modulemd-yaml.h

Lines changed: 75 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1156,6 +1156,43 @@ skip_unknown_yaml (yaml_parser_t *parser, GError **error);
11561156
EMIT_KEY_VALUE_FULL (emitter, error, key, value, YAML_PLAIN_SCALAR_STYLE)
11571157

11581158

1159+
/**
1160+
* EMIT_KEY_VALUE_STRING:
1161+
* @emitter: (inout): A libyaml emitter object positioned where a scalar
1162+
* belongs in the YAML document.
1163+
* @error: (out): A #GError that will return the reason for an output error.
1164+
* @key: (in): The key (string) to be written.
1165+
* @value: (in): The scalar (string) to be written.
1166+
*
1167+
* Emits key/value pair (@key: @value) using YAML_DOUBLE_QUOTED_SCALAR_STYLE
1168+
* style for number-like keys/values, YAML_PLAIN_SCALAR_STYLE otherwise.
1169+
*
1170+
* NOTE: This macro outputs both a key and a value for that key, thus it must
1171+
* only be used from within a YAML mapping.
1172+
*
1173+
* Returns: Continues on if the YAML key/value pair was written successfully.
1174+
* Returns FALSE if an error occurred and sets @error appropriately.
1175+
*
1176+
* Since: 2.15
1177+
*/
1178+
#define EMIT_KEY_VALUE_STRING(emitter, error, key, value) \
1179+
do \
1180+
{ \
1181+
if ((value) == NULL) \
1182+
{ \
1183+
g_set_error ((error), \
1184+
MODULEMD_YAML_ERROR, \
1185+
MMD_YAML_ERROR_EMIT, \
1186+
"Value for key %s was NULL on emit", \
1187+
(key)); \
1188+
return FALSE; \
1189+
} \
1190+
EMIT_SCALAR_STRING ((emitter), (error), (key)); \
1191+
EMIT_SCALAR_STRING ((emitter), (error), (value)); \
1192+
} \
1193+
while (0)
1194+
1195+
11591196
/**
11601197
* EMIT_KEY_VALUE_IF_SET:
11611198
* @emitter: (inout): A libyaml emitter object positioned where a scalar
@@ -1164,7 +1201,8 @@ skip_unknown_yaml (yaml_parser_t *parser, GError **error);
11641201
* @key: (in): The key (string) to be written.
11651202
* @value: (in): The scalar (string) to be written.
11661203
*
1167-
* Emits key/value pair (@key: @value) only if @value is not NULL.
1204+
* Emits key/value pair (@key: @value) only if @value is not NULL. The
1205+
* emission is performed in YAML_PLAIN_SCALAR_STYLE style.
11681206
*
11691207
* NOTE: This macro outputs both a key and a value for that key, thus it must
11701208
* only be used from within a YAML mapping.
@@ -1178,13 +1216,46 @@ skip_unknown_yaml (yaml_parser_t *parser, GError **error);
11781216
#define EMIT_KEY_VALUE_IF_SET(emitter, error, key, value) \
11791217
do \
11801218
{ \
1181-
if (value != NULL) \
1219+
if ((value) != NULL) \
11821220
{ \
1183-
EMIT_KEY_VALUE (emitter, error, key, value); \
1221+
EMIT_KEY_VALUE ((emitter), (error), (key), (value)); \
11841222
} \
11851223
} \
11861224
while (0)
11871225

1226+
1227+
/**
1228+
* EMIT_KEY_VALUE_STRING_IF_SET:
1229+
* @emitter: (inout): A libyaml emitter object positioned where a scalar
1230+
* belongs in the YAML document.
1231+
* @error: (out): A #GError that will return the reason for an output error.
1232+
* @key: (in): The key (string) to be written.
1233+
* @value: (in): The scalar (string) to be written.
1234+
*
1235+
* Emits key/value pair (@key: @value) only if @value is not NULL. The
1236+
* emission is performed in YAML_DOUBLE_QUOTED_SCALAR_STYLE style if the
1237+
* key/value looks like a number, otherwise in YAML_PLAIN_SCALAR_STYLE style.
1238+
*
1239+
* NOTE: This macro outputs both a key and a value for that key, thus it must
1240+
* only be used from within a YAML mapping.
1241+
*
1242+
* Returns: Continues on if @value is NULL or the YAML key/value pair was
1243+
* written successfully. Returns FALSE if an error occurred and sets @error
1244+
* appropriately.
1245+
*
1246+
* Since: 2.15
1247+
*/
1248+
#define EMIT_KEY_VALUE_STRING_IF_SET(emitter, error, key, value) \
1249+
do \
1250+
{ \
1251+
if ((value) != NULL) \
1252+
{ \
1253+
EMIT_KEY_VALUE_STRING ((emitter), (error), (key), (value)); \
1254+
} \
1255+
} \
1256+
while (0)
1257+
1258+
11881259
/**
11891260
* EMIT_MAPPING_START_WITH_STYLE:
11901261
* @emitter: (inout): A libyaml emitter object that is positioned at the start
@@ -1472,7 +1543,7 @@ skip_unknown_yaml (yaml_parser_t *parser, GError **error);
14721543
#define EMIT_STRING_SET_FULL(emitter, error, key, table, sequence_style) \
14731544
do \
14741545
{ \
1475-
EMIT_SCALAR (emitter, error, key); \
1546+
EMIT_SCALAR_STRING (emitter, error, key); \
14761547
EMIT_SEQUENCE_START_WITH_STYLE (emitter, error, sequence_style); \
14771548
gsize i; \
14781549
g_autoptr (GPtrArray) keys = \

modulemd/modulemd-build-config.c

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -441,8 +441,8 @@ modulemd_build_config_emit_yaml (ModulemdBuildConfig *self,
441441
return FALSE;
442442
}
443443

444-
EMIT_KEY_VALUE_IF_SET (emitter, error, "context", self->context);
445-
EMIT_KEY_VALUE_IF_SET (emitter, error, "platform", self->platform);
444+
EMIT_KEY_VALUE_STRING_IF_SET (emitter, error, "context", self->context);
445+
EMIT_KEY_VALUE_STRING_IF_SET (emitter, error, "platform", self->platform);
446446

447447
if (!modulemd_build_config_emit_deptable (
448448
self->buildrequires, "buildrequires", emitter, error))
@@ -526,8 +526,7 @@ modulemd_build_config_emit_deptable (GHashTable *deptable,
526526
nested_set, g_strdup (module_name), g_steal_pointer (&stream_table));
527527
}
528528

529-
ret = mmd_emitter_scalar (
530-
emitter, table_key, YAML_PLAIN_SCALAR_STYLE, &nested_error);
529+
ret = mmd_emitter_scalar_string (emitter, table_key, &nested_error);
531530
if (!ret)
532531
{
533532
g_propagate_prefixed_error (error,

modulemd/modulemd-component-module.c

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -263,10 +263,8 @@ modulemd_component_module_emit_yaml (ModulemdComponentModule *self,
263263
return FALSE;
264264
}
265265

266-
if (!mmd_emitter_scalar (emitter,
267-
modulemd_component_module_get_repository (self),
268-
YAML_PLAIN_SCALAR_STYLE,
269-
error))
266+
if (!mmd_emitter_scalar_string (
267+
emitter, modulemd_component_module_get_repository (self), error))
270268
{
271269
return FALSE;
272270
}
@@ -279,10 +277,8 @@ modulemd_component_module_emit_yaml (ModulemdComponentModule *self,
279277
return FALSE;
280278
}
281279

282-
if (!mmd_emitter_scalar (emitter,
283-
modulemd_component_module_get_ref (self),
284-
YAML_PLAIN_SCALAR_STYLE,
285-
error))
280+
if (!mmd_emitter_scalar_string (
281+
emitter, modulemd_component_module_get_ref (self), error))
286282
{
287283
return FALSE;
288284
}

modulemd/modulemd-component-rpm.c

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -574,13 +574,14 @@ modulemd_component_rpm_emit_yaml (ModulemdComponentRpm *self,
574574
return FALSE;
575575
}
576576

577-
EMIT_KEY_VALUE_IF_SET (emitter, error, "name", self->override_name);
577+
EMIT_KEY_VALUE_STRING_IF_SET (emitter, error, "name", self->override_name);
578578

579-
EMIT_KEY_VALUE_IF_SET (emitter, error, "repository", self->repository);
579+
EMIT_KEY_VALUE_STRING_IF_SET (
580+
emitter, error, "repository", self->repository);
580581

581-
EMIT_KEY_VALUE_IF_SET (emitter, error, "cache", self->cache);
582+
EMIT_KEY_VALUE_STRING_IF_SET (emitter, error, "cache", self->cache);
582583

583-
EMIT_KEY_VALUE_IF_SET (emitter, error, "ref", self->ref);
584+
EMIT_KEY_VALUE_STRING_IF_SET (emitter, error, "ref", self->ref);
584585

585586
/* Only output buildroot if it's TRUE */
586587
if (modulemd_component_rpm_get_buildroot (self))

modulemd/modulemd-component.c

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -620,8 +620,7 @@ modulemd_component_emit_yaml_start (ModulemdComponent *self,
620620
return FALSE;
621621
}
622622

623-
if (!mmd_emitter_scalar (
624-
emitter, priv->name, YAML_PLAIN_SCALAR_STYLE, error))
623+
if (!mmd_emitter_scalar_string (emitter, priv->name, error))
625624
{
626625
return FALSE;
627626
}
@@ -639,10 +638,8 @@ modulemd_component_emit_yaml_start (ModulemdComponent *self,
639638
return FALSE;
640639
}
641640

642-
if (!mmd_emitter_scalar (emitter,
643-
modulemd_component_get_rationale (self),
644-
YAML_PLAIN_SCALAR_STYLE,
645-
error))
641+
if (!mmd_emitter_scalar_string (
642+
emitter, modulemd_component_get_rationale (self), error))
646643
{
647644
return FALSE;
648645
}

modulemd/modulemd-module-stream-v1.c

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2523,7 +2523,7 @@ modulemd_module_stream_v1_emit_yaml (ModulemdModuleStreamV1 *self,
25232523
return FALSE;
25242524
}
25252525

2526-
EMIT_KEY_VALUE_IF_SET (
2526+
EMIT_KEY_VALUE_STRING_IF_SET (
25272527
emitter, error, "arch", modulemd_module_stream_v1_get_arch (self));
25282528
EMIT_KEY_VALUE (emitter, error, "summary", self->summary);
25292529
EMIT_KEY_VALUE_FULL (emitter,
@@ -2579,10 +2579,11 @@ modulemd_module_stream_v1_emit_yaml (ModulemdModuleStreamV1 *self,
25792579
{
25802580
EMIT_SCALAR (emitter, error, "references");
25812581
EMIT_MAPPING_START (emitter, error);
2582-
EMIT_KEY_VALUE_IF_SET (emitter, error, "community", self->community);
2583-
EMIT_KEY_VALUE_IF_SET (
2582+
EMIT_KEY_VALUE_STRING_IF_SET (
2583+
emitter, error, "community", self->community);
2584+
EMIT_KEY_VALUE_STRING_IF_SET (
25842585
emitter, error, "documentation", self->documentation);
2585-
EMIT_KEY_VALUE_IF_SET (emitter, error, "tracker", self->tracker);
2586+
EMIT_KEY_VALUE_STRING_IF_SET (emitter, error, "tracker", self->tracker);
25862587
EMIT_MAPPING_END (emitter, error);
25872588
}
25882589

modulemd/modulemd-module-stream-v2.c

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3083,9 +3083,9 @@ modulemd_module_stream_v2_emit_yaml (ModulemdModuleStreamV2 *self,
30833083
EMIT_KEY_VALUE (emitter, error, "static_context", "true");
30843084
}
30853085

3086-
EMIT_KEY_VALUE_IF_SET (
3086+
EMIT_KEY_VALUE_STRING_IF_SET (
30873087
emitter, error, "arch", modulemd_module_stream_v2_get_arch (self));
3088-
EMIT_KEY_VALUE (emitter, error, "summary", self->summary);
3088+
EMIT_KEY_VALUE_STRING (emitter, error, "summary", self->summary);
30893089
EMIT_KEY_VALUE_FULL (emitter,
30903090
error,
30913091
"description",
@@ -3133,10 +3133,11 @@ modulemd_module_stream_v2_emit_yaml (ModulemdModuleStreamV2 *self,
31333133
{
31343134
EMIT_SCALAR (emitter, error, "references");
31353135
EMIT_MAPPING_START (emitter, error);
3136-
EMIT_KEY_VALUE_IF_SET (emitter, error, "community", self->community);
3137-
EMIT_KEY_VALUE_IF_SET (
3136+
EMIT_KEY_VALUE_STRING_IF_SET (
3137+
emitter, error, "community", self->community);
3138+
EMIT_KEY_VALUE_STRING_IF_SET (
31383139
emitter, error, "documentation", self->documentation);
3139-
EMIT_KEY_VALUE_IF_SET (emitter, error, "tracker", self->tracker);
3140+
EMIT_KEY_VALUE_STRING_IF_SET (emitter, error, "tracker", self->tracker);
31403141
EMIT_MAPPING_END (emitter, error);
31413142
}
31423143

modulemd/modulemd-module-stream.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1466,7 +1466,7 @@ modulemd_module_stream_emit_yaml_base (ModulemdModuleStream *self,
14661466
if (modulemd_module_stream_get_module_name (self) != NULL &&
14671467
!modulemd_module_stream_is_autogen_module_name (self))
14681468
{
1469-
EMIT_KEY_VALUE (
1469+
EMIT_KEY_VALUE_STRING (
14701470
emitter, error, "name", modulemd_module_stream_get_module_name (self));
14711471
}
14721472

@@ -1485,7 +1485,7 @@ modulemd_module_stream_emit_yaml_base (ModulemdModuleStream *self,
14851485
}
14861486

14871487
EMIT_KEY_VALUE_IF_SET (emitter, error, "version", version_string);
1488-
EMIT_KEY_VALUE_IF_SET (
1488+
EMIT_KEY_VALUE_STRING_IF_SET (
14891489
emitter, error, "context", modulemd_module_stream_get_context (self));
14901490

14911491
/* The rest of the fields will be emitted by the version-specific emitters */

modulemd/modulemd-obsoletes.c

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1010,11 +1010,11 @@ modulemd_obsoletes_emit_obsoleted_by (ModulemdObsoletes *self,
10101010
return FALSE;
10111011
}
10121012

1013-
if (!mmd_emitter_scalar (emitter,
1014-
modulemd_obsoletes_get_obsoleted_by_module_name (
1015-
MODULEMD_OBSOLETES (self)),
1016-
YAML_PLAIN_SCALAR_STYLE,
1017-
error))
1013+
if (!mmd_emitter_scalar_string (
1014+
emitter,
1015+
modulemd_obsoletes_get_obsoleted_by_module_name (
1016+
MODULEMD_OBSOLETES (self)),
1017+
error))
10181018
{
10191019
return FALSE;
10201020
}
@@ -1118,10 +1118,9 @@ modulemd_obsoletes_emit_yaml (ModulemdObsoletes *self,
11181118
return FALSE;
11191119
}
11201120

1121-
if (!mmd_emitter_scalar (
1121+
if (!mmd_emitter_scalar_string (
11221122
emitter,
11231123
modulemd_obsoletes_get_module_name (MODULEMD_OBSOLETES (self)),
1124-
YAML_PLAIN_SCALAR_STYLE,
11251124
error))
11261125
{
11271126
return FALSE;
@@ -1153,8 +1152,7 @@ modulemd_obsoletes_emit_yaml (ModulemdObsoletes *self,
11531152
return FALSE;
11541153
}
11551154

1156-
if (!mmd_emitter_scalar (
1157-
emitter, module_context, YAML_PLAIN_SCALAR_STYLE, error))
1155+
if (!mmd_emitter_scalar_string (emitter, module_context, error))
11581156
{
11591157
return FALSE;
11601158
}
@@ -1183,10 +1181,9 @@ modulemd_obsoletes_emit_yaml (ModulemdObsoletes *self,
11831181
return FALSE;
11841182
}
11851183

1186-
if (!mmd_emitter_scalar (
1184+
if (!mmd_emitter_scalar_string (
11871185
emitter,
11881186
modulemd_obsoletes_get_message (MODULEMD_OBSOLETES (self)),
1189-
YAML_PLAIN_SCALAR_STYLE,
11901187
error))
11911188
{
11921189
return FALSE;

modulemd/modulemd-packager-v3.c

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1949,10 +1949,11 @@ modulemd_packager_v3_emit_yaml (ModulemdPackagerV3 *self,
19491949
{
19501950
EMIT_SCALAR (emitter, error, "references");
19511951
EMIT_MAPPING_START (emitter, error);
1952-
EMIT_KEY_VALUE_IF_SET (emitter, error, "community", self->community);
1953-
EMIT_KEY_VALUE_IF_SET (
1952+
EMIT_KEY_VALUE_STRING_IF_SET (
1953+
emitter, error, "community", self->community);
1954+
EMIT_KEY_VALUE_STRING_IF_SET (
19541955
emitter, error, "documentation", self->documentation);
1955-
EMIT_KEY_VALUE_IF_SET (emitter, error, "tracker", self->tracker);
1956+
EMIT_KEY_VALUE_STRING_IF_SET (emitter, error, "tracker", self->tracker);
19561957
EMIT_MAPPING_END (emitter, error);
19571958
}
19581959

0 commit comments

Comments
 (0)