commit 7be62dd: [Minor] Unify `--var` argument for rspamd and rspamadm

Vsevolod Stakhov vsevolod at highsecure.ru
Tue Mar 26 18:28:06 UTC 2019


Author: Vsevolod Stakhov
Date: 2019-03-26 16:47:59 +0000
URL: https://github.com/rspamd/rspamd/commit/7be62ddeb0ae7cc5a45f33b1de0e864ff03cf8d6

[Minor] Unify `--var` argument for rspamd and rspamadm

---
 src/rspamadm/rspamadm.c |  2 +-
 src/rspamd.c            | 32 +++++++++++++++++++++++++++++++-
 2 files changed, 32 insertions(+), 2 deletions(-)

diff --git a/src/rspamadm/rspamadm.c b/src/rspamadm/rspamadm.c
index 227cbc86b..281690132 100644
--- a/src/rspamadm/rspamadm.c
+++ b/src/rspamadm/rspamadm.c
@@ -60,7 +60,7 @@ static GOptionEntry entries[] = {
 	{"list-commands", 'l', 0, G_OPTION_ARG_NONE, &list_commands,
 			"List available commands", NULL},
 	{"var", 0, 0, G_OPTION_ARG_CALLBACK, (gpointer)&rspamadm_parse_ucl_var,
-			"Redefine UCL variable", NULL},
+			"Redefine/define environment variable", NULL},
 	{"help", 'h', 0, G_OPTION_ARG_NONE, &show_help,
 			"Show help", NULL},
 	{"version", 'V', 0, G_OPTION_ARG_NONE, &show_version,
diff --git a/src/rspamd.c b/src/rspamd.c
index 142915df9..631759f05 100644
--- a/src/rspamd.c
+++ b/src/rspamd.c
@@ -108,7 +108,10 @@ static GHashTable *listen_sockets = NULL;
 extern module_t *modules[];
 extern worker_t *workers[];
 
-/* Commandline options */
+/* Command line options */
+static gboolean rspamd_parse_var (const gchar *option_name,
+								  const gchar *value, gpointer data,
+								  GError **error);
 static GOptionEntry entries[] =
 {
 	{ "config-test", 't', 0, G_OPTION_ARG_NONE, &config_test,
@@ -141,9 +144,36 @@ static GOptionEntry entries[] =
 	  "controller password to store in the configuration file", NULL },
 	{ "version", 'v', 0, G_OPTION_ARG_NONE, &show_version,
 	  "Show version and exit", NULL },
+	{"var", 0, 0, G_OPTION_ARG_CALLBACK, (gpointer)&rspamd_parse_var,
+			"Redefine/define environment variable", NULL},
 	{ NULL, 0, 0, G_OPTION_ARG_NONE, NULL, NULL, NULL }
 };
 
+static gboolean
+rspamd_parse_var (const gchar *option_name,
+						const gchar *value, gpointer data,
+						GError **error)
+{
+	gchar *k, *v, *t;
+
+	t = strchr (value, '=');
+
+	if (t != NULL) {
+		k = g_strdup (value);
+		t = k + (t - value);
+		v = g_strdup (t + 1);
+		*t = '\0';
+
+		g_hash_table_insert (ucl_vars, k, v);
+	}
+	else {
+		g_set_error (error, g_quark_try_string ("main"), EINVAL,
+				"Bad variable format: %s", value);
+		return FALSE;
+	}
+
+	return TRUE;
+}
 
 static void
 read_cmd_line (gint *argc, gchar ***argv, struct rspamd_config *cfg)


More information about the Commits mailing list