From 2677f978bc96114868cbb148facc3009fd8f33a4 Mon Sep 17 00:00:00 2001
From: Stephan Bosch <stephan@rename-it.nl>
Date: Fri, 8 Jan 2016 20:49:39 +0100
Subject: [PATCH] lib-sieve: Cleaned up command argument definitions using
 newer C99 syntax.

---
 src/lib-sieve/ext-encoded-character.c         |  6 +--
 src/lib-sieve/plugins/body/tst-body.c         | 24 ++++-------
 src/lib-sieve/plugins/copy/ext-copy.c         |  8 ++--
 src/lib-sieve/plugins/date/tst-date.c         | 16 +++----
 .../plugins/duplicate/tst-duplicate.c         | 33 +++++----------
 .../plugins/editheader/cmd-addheader.c        |  3 +-
 .../plugins/editheader/cmd-deleteheader.c     | 12 ++----
 src/lib-sieve/plugins/enotify/cmd-notify.c    | 24 ++++-------
 src/lib-sieve/plugins/imap4flags/tag-flags.c  | 15 +++----
 src/lib-sieve/plugins/include/cmd-include.c   | 25 ++++-------
 src/lib-sieve/plugins/index/tag-index.c       | 15 +++----
 .../plugins/mailbox/tag-mailbox-create.c      |  8 ++--
 src/lib-sieve/plugins/mime/cmd-break.c        |  6 +--
 src/lib-sieve/plugins/mime/cmd-foreverypart.c |  6 +--
 src/lib-sieve/plugins/mime/tag-mime.c         | 38 ++++++-----------
 src/lib-sieve/plugins/notify/cmd-denotify.c   |  7 ++--
 src/lib-sieve/plugins/notify/cmd-notify.c     | 24 ++++-------
 .../plugins/notify/ext-notify-common.c        | 18 +++-----
 .../plugins/spamvirustest/tst-spamvirustest.c |  6 +--
 src/lib-sieve/plugins/vacation/cmd-vacation.c | 42 +++++++------------
 src/lib-sieve/plugins/variables/cmd-set.c     |  7 ++--
 .../variables/ext-variables-arguments.c       | 18 ++++----
 .../variables/ext-variables-namespaces.c      |  5 +--
 src/lib-sieve/sieve-address-parts.c           |  9 ++--
 src/lib-sieve/sieve-commands.c                | 18 ++++----
 src/lib-sieve/sieve-comparators.c             |  8 ++--
 src/lib-sieve/sieve-match-types.c             |  9 ++--
 src/lib-sieve/sieve-validator.c               |  6 +--
 src/lib-sieve/tst-size.c                      | 12 ++----
 src/plugins/sieve-extprograms/cmd-execute.c   | 22 ++++------
 src/plugins/sieve-extprograms/cmd-pipe.c      |  3 +-
 src/testsuite/cmd-test-config.c               |  6 +--
 src/testsuite/cmd-test-imap-metadata.c        |  6 +--
 src/testsuite/cmd-test-message.c              | 12 ++----
 src/testsuite/testsuite-arguments.c           |  8 ++--
 src/testsuite/testsuite-objects.c             |  5 +--
 src/testsuite/testsuite-substitutions.c       |  5 +--
 src/testsuite/tst-test-error.c                |  6 +--
 src/testsuite/tst-test-result-action.c        |  6 +--
 src/testsuite/tst-test-script-run.c           |  3 +-
 40 files changed, 181 insertions(+), 329 deletions(-)

diff --git a/src/lib-sieve/ext-encoded-character.c b/src/lib-sieve/ext-encoded-character.c
index c8b8803e8..cc5553be7 100644
--- a/src/lib-sieve/ext-encoded-character.c
+++ b/src/lib-sieve/ext-encoded-character.c
@@ -41,10 +41,8 @@ bool arg_encoded_string_validate
 		struct sieve_command *context);
 
 const struct sieve_argument_def encoded_string_argument = {
-	"@encoded-string",
-	NULL,
-	arg_encoded_string_validate,
-	NULL, NULL, NULL
+	.identifier = "@encoded-string",
+	.validate = arg_encoded_string_validate
 };
 
 /* Parsing */
diff --git a/src/lib-sieve/plugins/body/tst-body.c b/src/lib-sieve/plugins/body/tst-body.c
index e5c2f1b51..677acad67 100644
--- a/src/lib-sieve/plugins/body/tst-body.c
+++ b/src/lib-sieve/plugins/body/tst-body.c
@@ -87,27 +87,21 @@ static bool tag_body_transform_generate
 /* Argument objects */
 
 static const struct sieve_argument_def body_raw_tag = {
-	"raw",
-	NULL,
-	tag_body_transform_validate,
-	NULL, NULL,
-	tag_body_transform_generate
+	.identifier = "raw",
+	.validate = tag_body_transform_validate,
+	.generate = tag_body_transform_generate
 };
 
 static const struct sieve_argument_def body_content_tag = {
-	"content",
-	NULL,
-	tag_body_transform_validate,
-	NULL, NULL,
-	tag_body_transform_generate
+	.identifier = "content",
+	.validate = tag_body_transform_validate,
+	.generate = tag_body_transform_generate
 };
 
 static const struct sieve_argument_def body_text_tag = {
-	"text",
-	NULL,
-	tag_body_transform_validate,
-	NULL, NULL,
-	tag_body_transform_generate
+	.identifier = "text",
+	.validate = tag_body_transform_validate,
+	.generate = tag_body_transform_generate
 };
 
 /* Argument implementation */
diff --git a/src/lib-sieve/plugins/copy/ext-copy.c b/src/lib-sieve/plugins/copy/ext-copy.c
index 0c1ad898a..35f18ce69 100644
--- a/src/lib-sieve/plugins/copy/ext-copy.c
+++ b/src/lib-sieve/plugins/copy/ext-copy.c
@@ -92,11 +92,9 @@ static bool tag_copy_generate
     struct sieve_command *cmd);
 
 static const struct sieve_argument_def copy_tag = {
-	"copy",
-	NULL,
-	tag_copy_validate,
-	NULL, NULL,
-	tag_copy_generate
+	.identifier = "copy",
+	.validate = tag_copy_validate,
+	.generate = tag_copy_generate
 };
 
 /*
diff --git a/src/lib-sieve/plugins/date/tst-date.c b/src/lib-sieve/plugins/date/tst-date.c
index e7626158e..a1e2941a8 100644
--- a/src/lib-sieve/plugins/date/tst-date.c
+++ b/src/lib-sieve/plugins/date/tst-date.c
@@ -94,19 +94,15 @@ static bool tag_zone_generate
 /* Argument objects */
 
 static const struct sieve_argument_def date_zone_tag = {
- 	"zone",
-	NULL,
-	tag_zone_validate,
-	NULL, NULL,
-	tag_zone_generate
+ 	.identifier = "zone",
+	.validate = tag_zone_validate,
+	.generate = tag_zone_generate
 };
 
 static const struct sieve_argument_def date_originalzone_tag = {
-	"originalzone",
-	NULL,
-	tag_zone_validate,
-	NULL, NULL,
-	tag_zone_generate
+	.identifier = "originalzone",
+	.validate = tag_zone_validate,
+	.generate = tag_zone_generate
 };
 
 /*
diff --git a/src/lib-sieve/plugins/duplicate/tst-duplicate.c b/src/lib-sieve/plugins/duplicate/tst-duplicate.c
index 68e01bed3..84d0527d3 100644
--- a/src/lib-sieve/plugins/duplicate/tst-duplicate.c
+++ b/src/lib-sieve/plugins/duplicate/tst-duplicate.c
@@ -52,43 +52,32 @@ static bool tst_duplicate_validate_string_tag
 		struct sieve_command *cmd);
 
 static const struct sieve_argument_def duplicate_seconds_tag = {
-	"seconds",
-	NULL,
-	tst_duplicate_validate_number_tag,
-	NULL, NULL, NULL,
+	.identifier = "seconds",
+	.validate = tst_duplicate_validate_number_tag
 };
 
 static const struct sieve_argument_def duplicate_header_tag = {
-	"header",
-	NULL,
-	tst_duplicate_validate_string_tag,
-	NULL, NULL, NULL
+	.identifier = "header",
+	.validate = tst_duplicate_validate_string_tag
 };
 
 static const struct sieve_argument_def duplicate_uniqueid_tag = {
-	"uniqueid",
-	NULL,
-	tst_duplicate_validate_string_tag,
-	NULL, NULL, NULL
+	.identifier = "uniqueid",
+	.validate = tst_duplicate_validate_string_tag
 };
 
 static const struct sieve_argument_def duplicate_value_tag = {
-	"value", /* vnd.dovecot.duplicate (deprecated) */
-	NULL,
-	tst_duplicate_validate_string_tag,
-	NULL, NULL, NULL
+	.identifier = "value", /* vnd.dovecot.duplicate (deprecated) */
+	.validate = tst_duplicate_validate_string_tag
 };
 
 static const struct sieve_argument_def duplicate_handle_tag = {
-	"handle",
-	NULL,
-	tst_duplicate_validate_string_tag,
-	NULL, NULL, NULL
+	.identifier = "handle",
+	.validate = tst_duplicate_validate_string_tag
 };
 
 static const struct sieve_argument_def duplicate_last_tag = {
-	"last",
-	NULL, NULL,	NULL, NULL, NULL
+	.identifier = "last"
 };
 
 /* Codes for optional arguments */
diff --git a/src/lib-sieve/plugins/editheader/cmd-addheader.c b/src/lib-sieve/plugins/editheader/cmd-addheader.c
index 82d8d65bc..f4c78f8fc 100644
--- a/src/lib-sieve/plugins/editheader/cmd-addheader.c
+++ b/src/lib-sieve/plugins/editheader/cmd-addheader.c
@@ -55,8 +55,7 @@ const struct sieve_command_def addheader_command = {
 /* Argument objects */
 
 static const struct sieve_argument_def addheader_last_tag = {
-	"last",
-	NULL, NULL, NULL, NULL, NULL
+	.identifier = "last"
 };
 
 /* Codes for optional arguments */
diff --git a/src/lib-sieve/plugins/editheader/cmd-deleteheader.c b/src/lib-sieve/plugins/editheader/cmd-deleteheader.c
index d815db1e8..c38e6f22b 100644
--- a/src/lib-sieve/plugins/editheader/cmd-deleteheader.c
+++ b/src/lib-sieve/plugins/editheader/cmd-deleteheader.c
@@ -69,17 +69,13 @@ static bool cmd_deleteheader_validate_last_tag
 /* Argument objects */
 
 static const struct sieve_argument_def deleteheader_index_tag = {
-	"index",
-	NULL,
-	cmd_deleteheader_validate_index_tag,
-	NULL, NULL, NULL
+	.identifier = "index",
+	.validate = cmd_deleteheader_validate_index_tag
 };
 
 static const struct sieve_argument_def deleteheader_last_tag = {
-	"last",
-	NULL,
-	cmd_deleteheader_validate_last_tag,
-	NULL, NULL, NULL
+	.identifier = "last",
+	.validate = cmd_deleteheader_validate_last_tag
 };
 
 /* Codes for optional arguments */
diff --git a/src/lib-sieve/plugins/enotify/cmd-notify.c b/src/lib-sieve/plugins/enotify/cmd-notify.c
index d499c7201..423d71dc0 100644
--- a/src/lib-sieve/plugins/enotify/cmd-notify.c
+++ b/src/lib-sieve/plugins/enotify/cmd-notify.c
@@ -79,31 +79,23 @@ static bool cmd_notify_validate_importance_tag
 /* Argument objects */
 
 static const struct sieve_argument_def notify_from_tag = {
-	"from",
-	NULL,
-	cmd_notify_validate_string_tag,
-	NULL, NULL, NULL
+	.identifier = "from",
+	.validate = cmd_notify_validate_string_tag
 };
 
 static const struct sieve_argument_def notify_options_tag = {
-	"options",
-	NULL,
-	cmd_notify_validate_stringlist_tag,
-	NULL, NULL, NULL
+	.identifier = "options",
+	.validate = cmd_notify_validate_stringlist_tag
 };
 
 static const struct sieve_argument_def notify_message_tag = {
-	"message",
-	NULL,
-	cmd_notify_validate_string_tag,
-	NULL, NULL, NULL
+	.identifier = "message",
+	.validate = cmd_notify_validate_string_tag
 };
 
 static const struct sieve_argument_def notify_importance_tag = {
-	"importance",
-	NULL,
-	cmd_notify_validate_importance_tag,
-	NULL, NULL, NULL
+	.identifier = "importance",
+	.validate = cmd_notify_validate_importance_tag
 };
 
 /*
diff --git a/src/lib-sieve/plugins/imap4flags/tag-flags.c b/src/lib-sieve/plugins/imap4flags/tag-flags.c
index eb2cf2311..1e7ebf875 100644
--- a/src/lib-sieve/plugins/imap4flags/tag-flags.c
+++ b/src/lib-sieve/plugins/imap4flags/tag-flags.c
@@ -36,18 +36,15 @@ static bool tag_flags_generate
 		struct sieve_command *cmd);
 
 const struct sieve_argument_def tag_flags = {
-	"flags",
-	NULL,
-	tag_flags_validate,
-	NULL, NULL,
-	tag_flags_generate
+	.identifier = "flags",
+	.validate = tag_flags_validate,
+	.generate = tag_flags_generate
 };
 
 const struct sieve_argument_def tag_flags_implicit = {
-	"flags-implicit",
-	NULL,	NULL, NULL,
-	tag_flags_validate_persistent,
-	tag_flags_generate
+	.identifier = "flags-implicit",
+	.validate_persistent = tag_flags_validate_persistent,
+	.generate = tag_flags_generate
 };
 
 /*
diff --git a/src/lib-sieve/plugins/include/cmd-include.c b/src/lib-sieve/plugins/include/cmd-include.c
index 1785ae26e..ac666830e 100644
--- a/src/lib-sieve/plugins/include/cmd-include.c
+++ b/src/lib-sieve/plugins/include/cmd-include.c
@@ -91,17 +91,13 @@ static bool cmd_include_validate_location_tag
 		struct sieve_command *cmd);
 
 static const struct sieve_argument_def include_personal_tag = {
-	"personal",
-	NULL,
-	cmd_include_validate_location_tag,
-	NULL, NULL, NULL
+	.identifier = "personal",
+	.validate = cmd_include_validate_location_tag	
 };
 
 static const struct sieve_argument_def include_global_tag = {
-	"global",
-	NULL,
-	cmd_include_validate_location_tag,
-	NULL, NULL, NULL
+	.identifier = "global",
+	.validate = cmd_include_validate_location_tag
 };
 
 static bool cmd_include_validate_boolean_tag
@@ -109,20 +105,15 @@ static bool cmd_include_validate_boolean_tag
 		struct sieve_command *cmd);
 
 static const struct sieve_argument_def include_once_tag = {
-	"once",
-	NULL,
-	cmd_include_validate_boolean_tag,
-	NULL, NULL, NULL
+	.identifier = "once",
+	.validate = cmd_include_validate_boolean_tag
 };
 
 static const struct sieve_argument_def include_optional_tag = {
-	"optional",
-	NULL,
-	cmd_include_validate_boolean_tag,
-	NULL, NULL, NULL
+	.identifier = "optional",
+	.validate = cmd_include_validate_boolean_tag
 };
 
-
 /*
  * Tag validation
  */
diff --git a/src/lib-sieve/plugins/index/tag-index.c b/src/lib-sieve/plugins/index/tag-index.c
index 03cf011a7..cfce44f4a 100644
--- a/src/lib-sieve/plugins/index/tag-index.c
+++ b/src/lib-sieve/plugins/index/tag-index.c
@@ -30,11 +30,9 @@ static bool tag_index_generate
     struct sieve_command *context);
 
 const struct sieve_argument_def index_tag = {
-	"index",
-	NULL,
-	tag_index_validate,
-	NULL, NULL,
-	tag_index_generate
+	.identifier = "index",
+	.validate = tag_index_validate,
+	.generate = tag_index_generate
 };
 
 static bool tag_last_validate
@@ -42,13 +40,10 @@ static bool tag_last_validate
 		struct sieve_command *cmd);
 
 const struct sieve_argument_def last_tag = {
-	"last",
-	NULL,
-	tag_last_validate,
-	NULL, NULL, NULL
+	.identifier = "last",
+	.validate = tag_last_validate,
 };
 
-
 /*
  * Header override
  */
diff --git a/src/lib-sieve/plugins/mailbox/tag-mailbox-create.c b/src/lib-sieve/plugins/mailbox/tag-mailbox-create.c
index 97adb1987..e6cc0118c 100644
--- a/src/lib-sieve/plugins/mailbox/tag-mailbox-create.c
+++ b/src/lib-sieve/plugins/mailbox/tag-mailbox-create.c
@@ -27,11 +27,9 @@ static bool tag_mailbox_create_generate
     struct sieve_command *context);
 
 const struct sieve_argument_def mailbox_create_tag = {
-	"create",
-	NULL,
-	tag_mailbox_create_validate,
-	NULL, NULL,
-	tag_mailbox_create_generate
+	.identifier = "create",
+	.validate = tag_mailbox_create_validate,
+	.generate = tag_mailbox_create_generate
 };
 
 /*
diff --git a/src/lib-sieve/plugins/mime/cmd-break.c b/src/lib-sieve/plugins/mime/cmd-break.c
index 47285e67a..b087c523c 100644
--- a/src/lib-sieve/plugins/mime/cmd-break.c
+++ b/src/lib-sieve/plugins/mime/cmd-break.c
@@ -58,10 +58,8 @@ static bool cmd_break_validate_name_tag
 /* Argument objects */
 
 static const struct sieve_argument_def break_name_tag = {
-	"name",
-	NULL,
-	cmd_break_validate_name_tag,
-	NULL, NULL, NULL
+	.identifier = "name",
+	.validate = cmd_break_validate_name_tag
 };
 
 /*
diff --git a/src/lib-sieve/plugins/mime/cmd-foreverypart.c b/src/lib-sieve/plugins/mime/cmd-foreverypart.c
index b6bad222e..9fcff9f31 100644
--- a/src/lib-sieve/plugins/mime/cmd-foreverypart.c
+++ b/src/lib-sieve/plugins/mime/cmd-foreverypart.c
@@ -60,10 +60,8 @@ static bool cmd_foreverypart_validate_name_tag
 /* Argument objects */
 
 static const struct sieve_argument_def foreverypart_name_tag = {
-	"name",
-	NULL,
-	cmd_foreverypart_validate_name_tag,
-	NULL, NULL, NULL
+	.identifier = "name",
+	.validate = cmd_foreverypart_validate_name_tag,
 };
 
 /*
diff --git a/src/lib-sieve/plugins/mime/tag-mime.c b/src/lib-sieve/plugins/mime/tag-mime.c
index e8f89717c..f485d0eb0 100644
--- a/src/lib-sieve/plugins/mime/tag-mime.c
+++ b/src/lib-sieve/plugins/mime/tag-mime.c
@@ -31,11 +31,9 @@ static bool tag_mime_generate
     struct sieve_command *context);
 
 const struct sieve_argument_def mime_tag = {
-	"mime",
-	NULL,
-	tag_mime_validate,
-	NULL, NULL,
-	tag_mime_generate
+	.identifier = "mime",
+	.validate = tag_mime_validate,
+	.generate = tag_mime_generate
 };
 
 static bool tag_mime_option_validate
@@ -43,38 +41,28 @@ static bool tag_mime_option_validate
 		struct sieve_command *cmd);
 
 const struct sieve_argument_def mime_anychild_tag = {
-	"anychild",
-	NULL,
-	tag_mime_option_validate,
-	NULL, NULL, NULL
+	.identifier = "anychild",
+	.validate = tag_mime_option_validate
 };
 
 const struct sieve_argument_def mime_type_tag = {
-	"type",
-	NULL,
-	tag_mime_option_validate,
-	NULL, NULL, NULL
+	.identifier = "type",
+	.validate = tag_mime_option_validate
 };
 
 const struct sieve_argument_def mime_subtype_tag = {
-	"subtype",
-	NULL,
-	tag_mime_option_validate,
-	NULL, NULL, NULL
+	.identifier = "subtype",
+	.validate = tag_mime_option_validate
 };
 
 const struct sieve_argument_def mime_contenttype_tag = {
-	"contenttype",
-	NULL,
-	tag_mime_option_validate,
-	NULL, NULL, NULL
+	.identifier = "contenttype",
+	.validate = tag_mime_option_validate
 };
 
 const struct sieve_argument_def mime_param_tag = {
-	"param",
-	NULL,
-	tag_mime_option_validate,
-	NULL, NULL, NULL
+	.identifier = "param",
+	.validate = tag_mime_option_validate
 };
 
 /*
diff --git a/src/lib-sieve/plugins/notify/cmd-denotify.c b/src/lib-sieve/plugins/notify/cmd-denotify.c
index 1c04ae300..7fec014ed 100644
--- a/src/lib-sieve/plugins/notify/cmd-denotify.c
+++ b/src/lib-sieve/plugins/notify/cmd-denotify.c
@@ -66,10 +66,9 @@ static bool tag_match_type_validate
 /* Argument object */
 
 const struct sieve_argument_def denotify_match_tag = {
-	"MATCH-TYPE-STRING",
-	tag_match_type_is_instance_of,
-	tag_match_type_validate,
-	NULL, NULL, NULL,
+	.identifier = "MATCH-TYPE-STRING",
+	.is_instance_of = tag_match_type_is_instance_of,
+	.validate = tag_match_type_validate
 };
 
 /* Codes for optional operands */
diff --git a/src/lib-sieve/plugins/notify/cmd-notify.c b/src/lib-sieve/plugins/notify/cmd-notify.c
index 5af51daed..6c27185a7 100644
--- a/src/lib-sieve/plugins/notify/cmd-notify.c
+++ b/src/lib-sieve/plugins/notify/cmd-notify.c
@@ -79,31 +79,23 @@ static bool cmd_notify_validate_stringlist_tag
 /* Argument objects */
 
 static const struct sieve_argument_def notify_method_tag = {
-	"method",
-	NULL,
-	cmd_notify_validate_string_tag,
-	NULL, NULL, NULL
+	.identifier = "method",
+	.validate = cmd_notify_validate_string_tag
 };
 
 static const struct sieve_argument_def notify_options_tag = {
-	"options",
-	NULL,
-	cmd_notify_validate_stringlist_tag,
-	NULL, NULL, NULL
+	.identifier = "options",
+	.validate = cmd_notify_validate_stringlist_tag
 };
 
 static const struct sieve_argument_def notify_id_tag = {
-	"id",
-	NULL,
-	cmd_notify_validate_string_tag,
-	NULL, NULL, NULL
+	.identifier = "id",
+	.validate = cmd_notify_validate_string_tag
 };
 
 static const struct sieve_argument_def notify_message_tag = {
-	"message",
-	NULL,
-	cmd_notify_validate_string_tag,
-	NULL, NULL, NULL
+	.identifier = "message",
+	.validate = cmd_notify_validate_string_tag
 };
 
 /*
diff --git a/src/lib-sieve/plugins/notify/ext-notify-common.c b/src/lib-sieve/plugins/notify/ext-notify-common.c
index 5aa5e8c2b..36034014a 100644
--- a/src/lib-sieve/plugins/notify/ext-notify-common.c
+++ b/src/lib-sieve/plugins/notify/ext-notify-common.c
@@ -34,24 +34,18 @@ static bool tag_importance_validate
 		struct sieve_command *cmd);
 
 static const struct sieve_argument_def importance_low_tag = {
-	"low",
-	NULL,
-	tag_importance_validate,
-	NULL, NULL, NULL
+	.identifier = "low",
+	.validate = tag_importance_validate,
 };
 
 static const struct sieve_argument_def importance_normal_tag = {
-	"normal",
-	NULL,
-	tag_importance_validate,
-	NULL, NULL, NULL
+	.identifier = "normal",
+	.validate = tag_importance_validate,
 };
 
 static const struct sieve_argument_def importance_high_tag = {
-	"high",
-	NULL,
-	tag_importance_validate,
-	NULL, NULL, NULL
+	.identifier = "high",
+	.validate = tag_importance_validate,
 };
 
 static bool tag_importance_validate
diff --git a/src/lib-sieve/plugins/spamvirustest/tst-spamvirustest.c b/src/lib-sieve/plugins/spamvirustest/tst-spamvirustest.c
index 6a801a554..74d921164 100644
--- a/src/lib-sieve/plugins/spamvirustest/tst-spamvirustest.c
+++ b/src/lib-sieve/plugins/spamvirustest/tst-spamvirustest.c
@@ -76,10 +76,8 @@ static bool tst_spamtest_validate_percent_tag
 		struct sieve_command *tst);
 
 static const struct sieve_argument_def spamtest_percent_tag = {
- 	"percent",
-	NULL,
-	tst_spamtest_validate_percent_tag,
-	NULL, NULL, NULL
+ 	.identifier = "percent",
+	.validate = tst_spamtest_validate_percent_tag
 };
 
 /*
diff --git a/src/lib-sieve/plugins/vacation/cmd-vacation.c b/src/lib-sieve/plugins/vacation/cmd-vacation.c
index 261863e6d..a72e30fff 100644
--- a/src/lib-sieve/plugins/vacation/cmd-vacation.c
+++ b/src/lib-sieve/plugins/vacation/cmd-vacation.c
@@ -98,52 +98,38 @@ static bool cmd_vacation_validate_mime_tag
 /* Argument objects */
 
 static const struct sieve_argument_def vacation_days_tag = {
-	"days",
-	NULL,
-	cmd_vacation_validate_number_tag,
-	NULL, NULL, NULL,
+	.identifier = "days",
+	.validate = cmd_vacation_validate_number_tag
 };
 
 static const struct sieve_argument_def vacation_seconds_tag = {
-	"seconds",
-	NULL,
-	cmd_vacation_validate_number_tag,
-	NULL, NULL, NULL,
+	.identifier = "seconds",
+	.validate = cmd_vacation_validate_number_tag
 };
 
 static const struct sieve_argument_def vacation_subject_tag = {
-	"subject",
-	NULL,
-	cmd_vacation_validate_string_tag,
-	NULL, NULL, NULL
+	.identifier = "subject",
+	.validate = cmd_vacation_validate_string_tag
 };
 
 static const struct sieve_argument_def vacation_from_tag = {
-	"from",
-	NULL,
-	cmd_vacation_validate_string_tag,
-	NULL, NULL, NULL
+	.identifier = "from",
+	.validate = cmd_vacation_validate_string_tag
 };
 
 static const struct sieve_argument_def vacation_addresses_tag = {
-	"addresses",
-	NULL,
-	cmd_vacation_validate_stringlist_tag,
-	NULL, NULL, NULL
+	.identifier = "addresses",
+	.validate = cmd_vacation_validate_stringlist_tag
 };
 
 static const struct sieve_argument_def vacation_mime_tag = {
-	"mime",
-	NULL,
-	cmd_vacation_validate_mime_tag,
-	NULL, NULL, NULL
+	.identifier = "mime",
+	.validate = cmd_vacation_validate_mime_tag
 };
 
 static const struct sieve_argument_def vacation_handle_tag = {
-	"handle",
-	NULL,
-	cmd_vacation_validate_string_tag,
-	NULL, NULL, NULL
+	.identifier = "handle",
+	.validate = cmd_vacation_validate_string_tag
 };
 
 /* Codes for optional arguments */
diff --git a/src/lib-sieve/plugins/variables/cmd-set.c b/src/lib-sieve/plugins/variables/cmd-set.c
index d291cbdae..125aed961 100644
--- a/src/lib-sieve/plugins/variables/cmd-set.c
+++ b/src/lib-sieve/plugins/variables/cmd-set.c
@@ -96,10 +96,9 @@ static bool tag_modifier_validate
 /* Modifier tag object */
 
 const struct sieve_argument_def modifier_tag = {
-	"MODIFIER",
-	tag_modifier_is_instance_of,
-	tag_modifier_validate,
-	NULL, NULL, NULL
+	.identifier = "MODIFIER",
+	.is_instance_of = tag_modifier_is_instance_of,
+	.validate = tag_modifier_validate
 };
 
 /* Modifier tag implementation */
diff --git a/src/lib-sieve/plugins/variables/ext-variables-arguments.c b/src/lib-sieve/plugins/variables/ext-variables-arguments.c
index 97985bae5..7bd4c183b 100644
--- a/src/lib-sieve/plugins/variables/ext-variables-arguments.c
+++ b/src/lib-sieve/plugins/variables/ext-variables-arguments.c
@@ -30,9 +30,8 @@ static bool arg_variable_generate
 		struct sieve_command *context);
 
 const struct sieve_argument_def variable_argument = {
-	"@variable",
-	NULL, NULL, NULL, NULL,
-	arg_variable_generate
+	.identifier = "@variable",
+	.generate = arg_variable_generate
 };
 
 static bool ext_variables_variable_argument_activate
@@ -95,9 +94,8 @@ static bool arg_match_value_generate
 	struct sieve_command *context ATTR_UNUSED);
 
 const struct sieve_argument_def match_value_argument = {
-	"@match_value",
-	NULL, NULL, NULL, NULL,
-	arg_match_value_generate
+	.identifier = "@match_value",
+	.generate = arg_match_value_generate
 };
 
 static bool ext_variables_match_value_argument_activate
@@ -165,11 +163,9 @@ static bool arg_variable_string_validate
 		struct sieve_command *cmd);
 
 const struct sieve_argument_def variable_string_argument = {
-	"@variable-string",
-	NULL,
-	arg_variable_string_validate,
-	NULL, NULL,
-	sieve_arg_catenated_string_generate,
+	.identifier = "@variable-string",
+	.validate = arg_variable_string_validate,
+	.generate = sieve_arg_catenated_string_generate,
 };
 
 static bool arg_variable_string_validate
diff --git a/src/lib-sieve/plugins/variables/ext-variables-namespaces.c b/src/lib-sieve/plugins/variables/ext-variables-namespaces.c
index 7e30d0716..96d1d383f 100644
--- a/src/lib-sieve/plugins/variables/ext-variables-namespaces.c
+++ b/src/lib-sieve/plugins/variables/ext-variables-namespaces.c
@@ -75,9 +75,8 @@ static bool arg_namespace_generate
 	struct sieve_command *context ATTR_UNUSED);
 
 const struct sieve_argument_def namespace_argument = {
-	"@namespace",
-	NULL, NULL, NULL, NULL,
-	arg_namespace_generate
+	.identifier = "@namespace",
+	.generate = arg_namespace_generate
 };
 
 bool ext_variables_namespace_argument_activate
diff --git a/src/lib-sieve/sieve-address-parts.c b/src/lib-sieve/sieve-address-parts.c
index e69039c33..d6ed1394a 100644
--- a/src/lib-sieve/sieve-address-parts.c
+++ b/src/lib-sieve/sieve-address-parts.c
@@ -148,11 +148,10 @@ static bool tag_address_part_generate
 /* Argument object */
 
 const struct sieve_argument_def address_part_tag = {
-	"ADDRESS-PART",
-	tag_address_part_is_instance_of,
-	tag_address_part_validate,
-	NULL, NULL,
-	tag_address_part_generate
+	.identifier = "ADDRESS-PART",
+	.is_instance_of = tag_address_part_is_instance_of,
+	.validate = tag_address_part_validate,
+	.generate = tag_address_part_generate
 };
 
 /* Argument implementation */
diff --git a/src/lib-sieve/sieve-commands.c b/src/lib-sieve/sieve-commands.c
index daf0ae6bc..12ed310b3 100644
--- a/src/lib-sieve/sieve-commands.c
+++ b/src/lib-sieve/sieve-commands.c
@@ -38,23 +38,19 @@ static bool arg_string_list_generate
 /* Argument objects */
 
 const struct sieve_argument_def number_argument = {
-	"@number",
-	NULL, NULL, NULL, NULL,
-	arg_number_generate
+	.identifier = "@number",
+	.generate = arg_number_generate
 };
 
 const struct sieve_argument_def string_argument = {
-	"@string",
-	NULL, NULL, NULL, NULL,
-	arg_string_generate
+	.identifier = "@string",
+	.generate = arg_string_generate
 };
 
 const struct sieve_argument_def string_list_argument = {
-	"@string-list",
-	NULL,
-	arg_string_list_validate,
-	NULL, NULL,
-	arg_string_list_generate
+	.identifier = "@string-list",
+	.validate = arg_string_list_validate,
+	.generate = arg_string_list_generate
 };
 
 /* Argument implementations */
diff --git a/src/lib-sieve/sieve-comparators.c b/src/lib-sieve/sieve-comparators.c
index bc9ad645c..3245502c5 100644
--- a/src/lib-sieve/sieve-comparators.c
+++ b/src/lib-sieve/sieve-comparators.c
@@ -118,11 +118,9 @@ static bool tag_comparator_generate
 /* Argument object */
 
 const struct sieve_argument_def comparator_tag = {
-	"comparator",
-	NULL,
-	tag_comparator_validate,
-	NULL, NULL,
-	tag_comparator_generate
+	.identifier = "comparator",
+	.validate = tag_comparator_validate,
+	.generate = tag_comparator_generate
 };
 
 /* Argument implementation */
diff --git a/src/lib-sieve/sieve-match-types.c b/src/lib-sieve/sieve-match-types.c
index 9eb251f4f..d3311663c 100644
--- a/src/lib-sieve/sieve-match-types.c
+++ b/src/lib-sieve/sieve-match-types.c
@@ -358,11 +358,10 @@ static bool tag_match_type_generate
 /* Argument object */
 
 const struct sieve_argument_def match_type_tag = {
-	"MATCH-TYPE",
-	tag_match_type_is_instance_of,
-	tag_match_type_validate,
-	NULL,	NULL,
-	tag_match_type_generate
+	.identifier = "MATCH-TYPE",
+	.is_instance_of = tag_match_type_is_instance_of,
+	.validate = tag_match_type_validate,
+	.generate = tag_match_type_generate
 };
 
 /* Argument implementation */
diff --git a/src/lib-sieve/sieve-validator.c b/src/lib-sieve/sieve-validator.c
index 580a671fb..c70cd0dcb 100644
--- a/src/lib-sieve/sieve-validator.c
+++ b/src/lib-sieve/sieve-validator.c
@@ -375,10 +375,8 @@ static bool _unknown_tag_validate
 }
 
 static const struct sieve_argument_def _unknown_tag = {
-	"",
-	NULL,
-	_unknown_tag_validate,
-	NULL, NULL, NULL
+	.identifier = "",
+	.validate = _unknown_tag_validate,
 };
 
 static inline bool _tag_registration_is_unknown
diff --git a/src/lib-sieve/tst-size.c b/src/lib-sieve/tst-size.c
index 9be068b73..bacb1f2f6 100644
--- a/src/lib-sieve/tst-size.c
+++ b/src/lib-sieve/tst-size.c
@@ -128,17 +128,13 @@ static bool tst_size_validate_under_tag
  */
 
 static const struct sieve_argument_def size_over_tag = {
-	"over",
-	NULL,
-	tst_size_validate_over_tag,
-	NULL, NULL, NULL
+	.identifier = "over",
+	.validate = tst_size_validate_over_tag
 };
 
 static const struct sieve_argument_def size_under_tag = {
-	"under",
-	NULL,
-	tst_size_validate_under_tag,
-	NULL, NULL,  NULL
+	.identifier = "under",
+	.validate = tst_size_validate_under_tag,
 };
 
 static bool tst_size_registered
diff --git a/src/plugins/sieve-extprograms/cmd-execute.c b/src/plugins/sieve-extprograms/cmd-execute.c
index add30e98f..0b03c2901 100644
--- a/src/plugins/sieve-extprograms/cmd-execute.c
+++ b/src/plugins/sieve-extprograms/cmd-execute.c
@@ -72,26 +72,20 @@ static bool cmd_execute_validate_output_tag
 		struct sieve_command *cmd);
 
 static const struct sieve_argument_def execute_input_tag = { 
-	"input", 
-	NULL, 
-	cmd_execute_validate_input_tag,
-	NULL, NULL,
-	cmd_execute_generate_input_tag
+	.identifier = "input", 
+	.validate = cmd_execute_validate_input_tag,
+	.generate = cmd_execute_generate_input_tag
 };
 
 static const struct sieve_argument_def execute_pipe_tag = { 
-	"pipe", 
-	NULL, 
-	cmd_execute_validate_input_tag,
-	NULL, NULL,
-	cmd_execute_generate_input_tag
+	.identifier = "pipe",
+	.validate = cmd_execute_validate_input_tag,
+	.generate = cmd_execute_generate_input_tag
 };
 
 static const struct sieve_argument_def execute_output_tag = { 
-	"output", 
-	NULL, 
-	cmd_execute_validate_output_tag,
-	NULL, NULL, NULL 
+	.identifier = "output", 
+	.validate = cmd_execute_validate_output_tag,
 };
 
 
diff --git a/src/plugins/sieve-extprograms/cmd-pipe.c b/src/plugins/sieve-extprograms/cmd-pipe.c
index a3d178bd2..ce82480bc 100644
--- a/src/plugins/sieve-extprograms/cmd-pipe.c
+++ b/src/plugins/sieve-extprograms/cmd-pipe.c
@@ -53,8 +53,7 @@ const struct sieve_command_def cmd_pipe = {
  */
 
 static const struct sieve_argument_def pipe_try_tag = { 
-	"try", 
-	NULL, NULL, NULL, NULL, NULL 
+	.identifier = "try"
 };
 
 /* 
diff --git a/src/testsuite/cmd-test-config.c b/src/testsuite/cmd-test-config.c
index f81c07449..c9b49235c 100644
--- a/src/testsuite/cmd-test-config.c
+++ b/src/testsuite/cmd-test-config.c
@@ -95,10 +95,8 @@ static bool cmd_test_config_reload_validate_tag
 /* Argument objects */
 
 static const struct sieve_argument_def test_config_reload_extension_tag = {
-	"extension",
-	NULL,
-	cmd_test_config_reload_validate_tag,
-	NULL, NULL, NULL,
+	.identifier = "extension",
+	.validate = cmd_test_config_reload_validate_tag,
 };
 
 /* Codes for optional arguments */
diff --git a/src/testsuite/cmd-test-imap-metadata.c b/src/testsuite/cmd-test-imap-metadata.c
index 810a906b0..935695917 100644
--- a/src/testsuite/cmd-test-imap-metadata.c
+++ b/src/testsuite/cmd-test-imap-metadata.c
@@ -53,10 +53,8 @@ static bool cmd_test_imap_metadata_validate_mailbox_tag
 		struct sieve_command *cmd);
 
 static const struct sieve_argument_def test_imap_metadata_mailbox_tag = {
-	"mailbox",
-	NULL,
-	cmd_test_imap_metadata_validate_mailbox_tag,
-	NULL, NULL, NULL
+	.identifier = "mailbox",
+	.validate = cmd_test_imap_metadata_validate_mailbox_tag
 };
 
 /*
diff --git a/src/testsuite/cmd-test-message.c b/src/testsuite/cmd-test-message.c
index c24334301..c6aaf99b9 100644
--- a/src/testsuite/cmd-test-message.c
+++ b/src/testsuite/cmd-test-message.c
@@ -153,17 +153,13 @@ static bool cmd_test_message_validate_folder_tag
 		struct sieve_command *cmd);
 
 static const struct sieve_argument_def test_message_smtp_tag = {
-	"smtp",
-	NULL,
-	cmd_test_message_validate_smtp_tag,
-	NULL, NULL, NULL
+	.identifier = "smtp",
+	.validate = cmd_test_message_validate_smtp_tag
 };
 
 static const struct sieve_argument_def test_message_folder_tag = {
-	"folder",
-	NULL,
-	cmd_test_message_validate_folder_tag,
-	NULL, NULL, NULL
+	.identifier = "folder",
+	.validate = cmd_test_message_validate_folder_tag
 };
 
 static bool cmd_test_message_registered
diff --git a/src/testsuite/testsuite-arguments.c b/src/testsuite/testsuite-arguments.c
index dace9db49..683a04764 100644
--- a/src/testsuite/testsuite-arguments.c
+++ b/src/testsuite/testsuite-arguments.c
@@ -29,11 +29,9 @@ static bool arg_testsuite_string_validate
 		struct sieve_command *context);
 
 const struct sieve_argument_def testsuite_string_argument = {
-	"@testsuite-string",
-	NULL,
-	arg_testsuite_string_validate,
-	NULL, NULL,
-	sieve_arg_catenated_string_generate,
+	.identifier = "@testsuite-string",
+	.validate = arg_testsuite_string_validate,
+	.generate = sieve_arg_catenated_string_generate,
 };
 
 static bool arg_testsuite_string_validate
diff --git a/src/testsuite/testsuite-objects.c b/src/testsuite/testsuite-objects.c
index 5100e7047..7254873c1 100644
--- a/src/testsuite/testsuite-objects.c
+++ b/src/testsuite/testsuite-objects.c
@@ -201,9 +201,8 @@ static bool arg_testsuite_object_generate
 		struct sieve_command *cmd);
 
 const struct sieve_argument_def testsuite_object_argument = {
-	"testsuite-object",
-	NULL, NULL, NULL, NULL,
-	arg_testsuite_object_generate
+	.identifier = "testsuite-object",
+	.generate = arg_testsuite_object_generate
 };
 
 struct testsuite_object_argctx {
diff --git a/src/testsuite/testsuite-substitutions.c b/src/testsuite/testsuite-substitutions.c
index 62d9696b5..1619a7e9c 100644
--- a/src/testsuite/testsuite-substitutions.c
+++ b/src/testsuite/testsuite-substitutions.c
@@ -86,9 +86,8 @@ struct _testsuite_substitution_context {
 };
 
 const struct sieve_argument_def testsuite_substitution_argument = {
-	"@testsuite-substitution",
-	NULL, NULL, NULL, NULL,
-	arg_testsuite_substitution_generate
+	.identifier = "@testsuite-substitution",
+	.generate = arg_testsuite_substitution_generate
 };
 
 struct sieve_ast_argument *testsuite_substitution_argument_create
diff --git a/src/testsuite/tst-test-error.c b/src/testsuite/tst-test-error.c
index 31abf3dbc..f2cc225a9 100644
--- a/src/testsuite/tst-test-error.c
+++ b/src/testsuite/tst-test-error.c
@@ -75,10 +75,8 @@ static bool tst_test_error_validate_index_tag
 		struct sieve_command *cmd);
 
 static const struct sieve_argument_def test_error_index_tag = {
-	"index",
-	NULL,
-	tst_test_error_validate_index_tag,
-	NULL, NULL, NULL
+	.identifier = "index",
+	.validate = tst_test_error_validate_index_tag
 };
 
 enum tst_test_error_optional {
diff --git a/src/testsuite/tst-test-result-action.c b/src/testsuite/tst-test-result-action.c
index 5273d1f0d..158bbaeb8 100644
--- a/src/testsuite/tst-test-result-action.c
+++ b/src/testsuite/tst-test-result-action.c
@@ -76,10 +76,8 @@ static bool tst_test_result_action_validate_index_tag
 		struct sieve_command *cmd);
 
 static const struct sieve_argument_def test_result_action_index_tag = {
-    "index",
-    NULL,
-    tst_test_result_action_validate_index_tag,
-    NULL, NULL, NULL
+	.identifier = "index",
+	.validate = tst_test_result_action_validate_index_tag
 };
 
 enum tst_test_result_action_optional {
diff --git a/src/testsuite/tst-test-script-run.c b/src/testsuite/tst-test-script-run.c
index 49d485332..cc02842d6 100644
--- a/src/testsuite/tst-test-script-run.c
+++ b/src/testsuite/tst-test-script-run.c
@@ -70,8 +70,7 @@ enum cmd_vacation_optional {
 /* Tags */
 
 static const struct sieve_argument_def append_result_tag = {
-	"append_result",
-	NULL, NULL, NULL, NULL, NULL
+	.identifier = "append_result"
 };
 
 static bool tst_test_script_run_registered
-- 
GitLab