about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorMichael Vetter <jubalh@iodoru.org>2020-01-24 19:27:42 +0100
committerMichael Vetter <jubalh@iodoru.org>2020-01-24 19:27:42 +0100
commit4bc82a5318d1d7df4e8fa817af259554ec776fa3 (patch)
treecdf1e9c474275c3acd671a643cc506fb741e8e98
parent3c0647ec704189a10b341f3e52b8bb78c4b030be (diff)
downloadprofani-tty-4bc82a5318d1d7df4e8fa817af259554ec776fa3.tar.gz
XEP-0092: Add configuration option to choose whether to send OS name
`/os on|off` now let's one choose whether to include the OS name once
`/software` (XEP-0092) is ran on us.
-rw-r--r--src/command/cmd_ac.c2
-rw-r--r--src/command/cmd_defs.c15
-rw-r--r--src/command/cmd_funcs.c8
-rw-r--r--src/command/cmd_funcs.h1
-rw-r--r--src/ui/console.c10
-rw-r--r--src/ui/ui.h1
6 files changed, 36 insertions, 1 deletions
diff --git a/src/command/cmd_ac.c b/src/command/cmd_ac.c
index db885ceb..0ee9af9f 100644
--- a/src/command/cmd_ac.c
+++ b/src/command/cmd_ac.c
@@ -1508,7 +1508,7 @@ _cmd_ac_complete_params(ProfWin *window, const char *const input, gboolean previ
 
     // autocomplete boolean settings
     gchar *boolean_choices[] = { "/beep", "/intype", "/states", "/outtype", "/flash", "/splash",
-        "/history", "/vercheck", "/privileges", "/wrap", "/carbons", "/lastactivity"};
+        "/history", "/vercheck", "/privileges", "/wrap", "/carbons", "/lastactivity", "/os"};
 
     for (i = 0; i < ARRAY_SIZE(boolean_choices); i++) {
         result = autocomplete_param_with_func(input, boolean_choices[i], prefs_autocomplete_boolean_choice, previous);
diff --git a/src/command/cmd_defs.c b/src/command/cmd_defs.c
index 16cf5c7f..b1ba363f 100644
--- a/src/command/cmd_defs.c
+++ b/src/command/cmd_defs.c
@@ -2344,6 +2344,21 @@ static struct cmd_t command_defs[] =
             { "<barejid>", "JID to download avatar from."})
         CMD_NOEXAMPLES
     },
+
+    { "/os",
+        parse_args, 1, 1, &cons_os_setting,
+        CMD_NOSUBFUNCS
+        CMD_MAINFUNC(cmd_os)
+        CMD_TAGS(
+            CMD_TAG_DISCOVERY)
+        CMD_SYN(
+            "/os <on>|<off>")
+        CMD_DESC(
+            "Choose whether to include the OS name if a user asks for software information (XEP-0092).")
+        CMD_ARGS(
+            { "on|off", ""})
+        CMD_NOEXAMPLES
+    },
 };
 
 static GHashTable *search_index;
diff --git a/src/command/cmd_funcs.c b/src/command/cmd_funcs.c
index d9fc0ed6..a0d40cdd 100644
--- a/src/command/cmd_funcs.c
+++ b/src/command/cmd_funcs.c
@@ -8640,3 +8640,11 @@ cmd_avatar(ProfWin *window, const char *const command, gchar **args)
 
     return TRUE;
 }
+
+gboolean
+cmd_os(ProfWin *window, const char *const command, gchar **args)
+{
+    _cmd_set_boolean_preference(args[0], command, "Revealing OS name", PREF_REVEAL_OS);
+
+    return TRUE;
+}
diff --git a/src/command/cmd_funcs.h b/src/command/cmd_funcs.h
index 74cab615..a743951f 100644
--- a/src/command/cmd_funcs.h
+++ b/src/command/cmd_funcs.h
@@ -226,4 +226,5 @@ gboolean cmd_reload(ProfWin *window, const char *const command, gchar **args);
 gboolean cmd_paste(ProfWin *window, const char *const command, gchar **args);
 gboolean cmd_color(ProfWin *window, const char *const command, gchar **args);
 gboolean cmd_avatar(ProfWin *window, const char *const command, gchar **args);
+gboolean cmd_os(ProfWin *window, const char *const command, gchar **args);
 #endif
diff --git a/src/ui/console.c b/src/ui/console.c
index 49103fcf..1a716a7a 100644
--- a/src/ui/console.c
+++ b/src/ui/console.c
@@ -2012,6 +2012,16 @@ cons_color_setting(void)
 }
 
 void
+cons_os_setting(void)
+{
+    if (prefs_get_boolean(PREF_REVEAL_OS)) {
+        cons_show("Reveal OS name when asked for software version (XEP-0092) (/os)    : ON");
+    } else {
+        cons_show("Reveal OS name when asked for software version (XEP-0092) (/os)    : OFF");
+    }
+}
+
+void
 cons_show_connection_prefs(void)
 {
     cons_show("Connection preferences:");
diff --git a/src/ui/ui.h b/src/ui/ui.h
index 1d811e55..4783131e 100644
--- a/src/ui/ui.h
+++ b/src/ui/ui.h
@@ -318,6 +318,7 @@ void cons_inpblock_setting(void);
 void cons_statusbar_setting(void);
 void cons_winpos_setting(void);
 void cons_color_setting(void);
+void cons_os_setting(void);
 void cons_show_contact_online(PContact contact, Resource *resource, GDateTime *last_activity);
 void cons_show_contact_offline(PContact contact, char *resource, char *status);
 void cons_theme_properties(void);