Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/Remmina/remminadoc.gitlab.io.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAntenore Gatta <antenore@simbiosi.org>2022-11-07 00:35:15 +0300
committerAntenore Gatta <antenore@simbiosi.org>2022-11-07 00:35:15 +0300
commit5b8924516c94be3578af0771610993dbc4bfcb84 (patch)
treedcd3b526d8ebeced3faf36ed2dbdc3767a30818e
parent9181810abbf05c46a26f794a2cb4cc61c3467d08 (diff)
Automatic doc build by remmina-ci
-rw-r--r--public/rcw_8c_source.html16
-rw-r--r--public/remmina__exec_8c_source.html6
-rw-r--r--public/remmina__ext__exec_8c_source.html4
-rw-r--r--public/remmina__external__tools_8c_source.html4
-rw-r--r--public/remmina__file_8c.html62
-rw-r--r--public/remmina__file_8c_source.html62
-rw-r--r--public/remmina__file_8h.html50
-rw-r--r--public/remmina__file_8h_source.html50
-rw-r--r--public/remmina__file__editor_8c_source.html20
-rw-r--r--public/remmina__file__manager_8c_source.html6
-rw-r--r--public/remmina__ftp__client_8c_source.html4
-rw-r--r--public/remmina__main_8c_source.html22
-rw-r--r--public/remmina__masterthread__exec_8c_source.html4
-rw-r--r--public/remmina__monitor_8c_source.html4
-rw-r--r--public/remmina__mpchange_8c_source.html8
-rw-r--r--public/remmina__plugin__manager_8c_source.html14
-rw-r--r--public/remmina__protocol__widget_8c_source.html12
-rw-r--r--public/remmina__sftp__plugin_8c_source.html4
-rw-r--r--public/remmina__ssh_8c_source.html8
-rw-r--r--public/remmina__ssh__plugin_8c_source.html6
-rw-r--r--public/remmina__stats_8c_source.html2
21 files changed, 184 insertions, 184 deletions
diff --git a/public/rcw_8c_source.html b/public/rcw_8c_source.html
index 38198800e..3ab9ea726 100644
--- a/public/rcw_8c_source.html
+++ b/public/rcw_8c_source.html
@@ -103,7 +103,7 @@ $(document).ready(function(){initNavTree('rcw_8c_source.html','');});
<div class="ttc" id="struct___remmina_pref_html_a887cbbd379d159cd0ac1acea7173d07b"><div class="ttname"><a href="struct___remmina_pref.html#a887cbbd379d159cd0ac1acea7173d07b">_RemminaPref::shortcutkey_minimize</a></div><div class="ttdeci">guint shortcutkey_minimize</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00184">remmina_pref.h:184</a></div></div>
<div class="ttc" id="remmina__plugin__manager_8h_html"><div class="ttname"><a href="remmina__plugin__manager_8h.html">remmina_plugin_manager.h</a></div></div>
<div class="ttc" id="remmina__pref_8h_html_a4caf8d8f829279fba122163d961608a4a069738542d6980f9594299ab57221a7f"><div class="ttname"><a href="remmina__pref_8h.html#a4caf8d8f829279fba122163d961608a4a069738542d6980f9594299ab57221a7f">TOOLBAR_PLACEMENT_TOP</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00076">remmina_pref.h:76</a></div></div>
-<div class="ttc" id="remmina__file_8c_html_a8eb1b213d9d08c6ad13683ce05f4355e"><div class="ttname"><a href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a></div><div class="ttdeci">const gchar * remmina_file_get_string(RemminaFile *remminafile, const gchar *setting)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00507">remmina_file.c:507</a></div></div>
+<div class="ttc" id="remmina__file_8c_html_a8eb1b213d9d08c6ad13683ce05f4355e"><div class="ttname"><a href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a></div><div class="ttdeci">const gchar * remmina_file_get_string(RemminaFile *remminafile, const gchar *setting)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00516">remmina_file.c:516</a></div></div>
<div class="ttc" id="rcw_8c_html_af8d1a8843f974fb8170d76f945a72080"><div class="ttname"><a href="rcw_8c.html#af8d1a8843f974fb8170d76f945a72080">rcw_update_tag</a></div><div class="ttdeci">static void rcw_update_tag(RemminaConnectionWindow *cnnwin, RemminaConnectionObject *cnnobj)</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l03408">rcw.c:3408</a></div></div>
<div class="ttc" id="remmina__widget__pool_8c_html_a0a6a2069cdbbb920fb09f95bec3e997e"><div class="ttname"><a href="remmina__widget__pool_8c.html#a0a6a2069cdbbb920fb09f95bec3e997e">remmina_widget_pool_find_by_window</a></div><div class="ttdeci">GtkWidget * remmina_widget_pool_find_by_window(GType type, GdkWindow *window)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__widget__pool_8c_source.html#l00085">remmina_widget_pool.c:85</a></div></div>
<div class="ttc" id="types_8h_html_a77ae46c4fd739dcd8e819fe9cdae27c5a23e854b5f2eb0c8d3efa54cac0acb6cf"><div class="ttname"><a href="types_8h.html#a77ae46c4fd739dcd8e819fe9cdae27c5a23e854b5f2eb0c8d3efa54cac0acb6cf">REMMINA_PROTOCOL_FEATURE_TYPE_DYNRESUPDATE</a></div><div class="ttdef"><b>Definition:</b> <a href="types_8h_source.html#l00052">types.h:52</a></div></div>
@@ -130,7 +130,7 @@ $(document).ready(function(){initNavTree('rcw_8c_source.html','');});
<div class="ttc" id="struct___remmina_pref_html_a086c9b0fe4bcfe0e5349422d17886d65"><div class="ttname"><a href="struct___remmina_pref.html#a086c9b0fe4bcfe0e5349422d17886d65">_RemminaPref::keystrokes</a></div><div class="ttdeci">gchar * keystrokes</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00145">remmina_pref.h:145</a></div></div>
<div class="ttc" id="remmina__file__manager_8h_html"><div class="ttname"><a href="remmina__file__manager_8h.html">remmina_file_manager.h</a></div></div>
<div class="ttc" id="rcw_8c_html_ad45e51f5a72b7ffe9bca86d336563757"><div class="ttname"><a href="rcw_8c.html#ad45e51f5a72b7ffe9bca86d336563757">rco_leave_protocol_widget</a></div><div class="ttdeci">static gboolean rco_leave_protocol_widget(GtkWidget *widget, GdkEventCrossing *event, RemminaConnectionObject *cnnobj)</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l02845">rcw.c:2845</a></div></div>
-<div class="ttc" id="remmina__file_8c_html_ad1e4f3a0f64cd98e301044b6c38a1f1d"><div class="ttname"><a href="remmina__file_8c.html#ad1e4f3a0f64cd98e301044b6c38a1f1d">remmina_file_get_filename</a></div><div class="ttdeci">const gchar * remmina_file_get_filename(RemminaFile *remminafile)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00206">remmina_file.c:206</a></div></div>
+<div class="ttc" id="remmina__file_8c_html_ad1e4f3a0f64cd98e301044b6c38a1f1d"><div class="ttname"><a href="remmina__file_8c.html#ad1e4f3a0f64cd98e301044b6c38a1f1d">remmina_file_get_filename</a></div><div class="ttdeci">const gchar * remmina_file_get_filename(RemminaFile *remminafile)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00210">remmina_file.c:210</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_a2cc56c093d45511af91c6b05c522c45a"><div class="ttname"><a href="struct___remmina_pref.html#a2cc56c093d45511af91c6b05c522c45a">_RemminaPref::shortcutkey_dynres</a></div><div class="ttdeci">guint shortcutkey_dynres</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00178">remmina_pref.h:178</a></div></div>
<div class="ttc" id="remmina__public_8c_html_a893f0cfe2d694ab700975f4f427ee2f6"><div class="ttname"><a href="remmina__public_8c.html#a893f0cfe2d694ab700975f4f427ee2f6">remmina_public_send_notification</a></div><div class="ttdeci">void remmina_public_send_notification(const gchar *notification_id, const gchar *notification_title, const gchar *notification_message)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__public_8c_source.html#l00637">remmina_public.c:637</a></div></div>
<div class="ttc" id="rcw_8c_html_a029feea88b7ef32425595efe7d270947"><div class="ttname"><a href="rcw_8c.html#a029feea88b7ef32425595efe7d270947">rco_on_disconnect</a></div><div class="ttdeci">void rco_on_disconnect(RemminaProtocolWidget *gp, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l04290">rcw.c:4290</a></div></div>
@@ -232,7 +232,7 @@ $(document).ready(function(){initNavTree('rcw_8c_source.html','');});
<div class="ttc" id="rcw_8c_html_ab7dc553cbd2005feb77163cf79f48f6d"><div class="ttname"><a href="rcw_8c.html#ab7dc553cbd2005feb77163cf79f48f6d">remmina_protocol_widget_update_alignment</a></div><div class="ttdeci">static void remmina_protocol_widget_update_alignment(RemminaConnectionObject *cnnobj)</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l01144">rcw.c:1144</a></div></div>
<div class="ttc" id="remmina__scrolled__viewport_8c_html_aadfe00c3960eab12d17bdb47495dd1ee"><div class="ttname"><a href="remmina__scrolled__viewport_8c.html#aadfe00c3960eab12d17bdb47495dd1ee">remmina_scrolled_viewport_new</a></div><div class="ttdeci">GtkWidget * remmina_scrolled_viewport_new(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__scrolled__viewport_8c_source.html#l00201">remmina_scrolled_viewport.c:201</a></div></div>
<div class="ttc" id="rcw_8c_html_af99dc9a4135deff0a11c2d56877bad93"><div class="ttname"><a href="rcw_8c.html#af99dc9a4135deff0a11c2d56877bad93">rcw_on_switch_page_finalsel</a></div><div class="ttdeci">static gboolean rcw_on_switch_page_finalsel(gpointer user_data)</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l03602">rcw.c:3602</a></div></div>
-<div class="ttc" id="remmina__file_8c_html_a493ffa77b862ff3bad9ea951592715a8"><div class="ttname"><a href="remmina__file_8c.html#a493ffa77b862ff3bad9ea951592715a8">remmina_file_state_last_success</a></div><div class="ttdeci">void remmina_file_state_last_success(RemminaFile *remminafile)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00937">remmina_file.c:937</a></div></div>
+<div class="ttc" id="remmina__file_8c_html_a493ffa77b862ff3bad9ea951592715a8"><div class="ttname"><a href="remmina__file_8c.html#a493ffa77b862ff3bad9ea951592715a8">remmina_file_state_last_success</a></div><div class="ttdeci">void remmina_file_state_last_success(RemminaFile *remminafile)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00946">remmina_file.c:946</a></div></div>
<div class="ttc" id="rcw_8c_html_a0c2979e582fbc5cea1557d086187854f"><div class="ttname"><a href="rcw_8c.html#a0c2979e582fbc5cea1557d086187854f">print_crossing_event</a></div><div class="ttdeci">static void print_crossing_event(GdkEventCrossing *event)</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l02766">rcw.c:2766</a></div></div>
<div class="ttc" id="rcw_8c_html_adf4d204cce70b6609c15c1ca95082a43"><div class="ttname"><a href="rcw_8c.html#adf4d204cce70b6609c15c1ca95082a43">rcw_toolbar_autofit</a></div><div class="ttdeci">static void rcw_toolbar_autofit(GtkToolItem *toggle, RemminaConnectionWindow *cnnwin)</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l00984">rcw.c:984</a></div></div>
<div class="ttc" id="remmina__utils_8h_html"><div class="ttname"><a href="remmina__utils_8h.html">remmina_utils.h</a></div><div class="ttdoc">General utility functions, non-GTK related. </div></div>
@@ -274,7 +274,7 @@ $(document).ready(function(){initNavTree('rcw_8c_source.html','');});
<div class="ttc" id="rcw_8c_html_a60f9f738cfd988cfc7cc39997538e4e0"><div class="ttname"><a href="rcw_8c.html#a60f9f738cfd988cfc7cc39997538e4e0">rcw_notify_widget_toolbar_placement</a></div><div class="ttdeci">gboolean rcw_notify_widget_toolbar_placement(GtkWidget *widget, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l00752">rcw.c:752</a></div></div>
<div class="ttc" id="rcw_8c_html_a7b60c2cb02c4a893d8d2054f0bb53790"><div class="ttname"><a href="rcw_8c.html#a7b60c2cb02c4a893d8d2054f0bb53790">rco_scrolled_fullscreen_mode</a></div><div class="ttdeci">static void rco_scrolled_fullscreen_mode(GtkWidget *widget, RemminaConnectionObject *cnnobj)</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l01395">rcw.c:1395</a></div></div>
<div class="ttc" id="rcw_8c_html_a2690c97a972e458dea9f5c0566ea50b9"><div class="ttname"><a href="rcw_8c.html#a2690c97a972e458dea9f5c0566ea50b9">rco_disconnect_current_page</a></div><div class="ttdeci">static void rco_disconnect_current_page(RemminaConnectionObject *cnnobj)</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l00417">rcw.c:417</a></div></div>
-<div class="ttc" id="remmina__file_8c_html_af153b0d289ac93f6ecdaa15d5f3b9b8c"><div class="ttname"><a href="remmina__file_8c.html#af153b0d289ac93f6ecdaa15d5f3b9b8c">remmina_file_set_int</a></div><div class="ttdeci">void remmina_file_set_int(RemminaFile *remminafile, const gchar *setting, gint value)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00576">remmina_file.c:576</a></div></div>
+<div class="ttc" id="remmina__file_8c_html_af153b0d289ac93f6ecdaa15d5f3b9b8c"><div class="ttname"><a href="remmina__file_8c.html#af153b0d289ac93f6ecdaa15d5f3b9b8c">remmina_file_set_int</a></div><div class="ttdeci">void remmina_file_set_int(RemminaFile *remminafile, const gchar *setting, gint value)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00585">remmina_file.c:585</a></div></div>
<div class="ttc" id="struct___remmina_protocol_widget_html"><div class="ttname"><a href="struct___remmina_protocol_widget.html">_RemminaProtocolWidget</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8h_source.html#l00058">remmina_protocol_widget.h:58</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_a17bfba7a11836808719d33d5f6edbdc7"><div class="ttname"><a href="struct___remmina_pref.html#a17bfba7a11836808719d33d5f6edbdc7">_RemminaPref::shortcutkey_disconnect</a></div><div class="ttdeci">guint shortcutkey_disconnect</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00185">remmina_pref.h:185</a></div></div>
<div class="ttc" id="remmina__exec_8c_html_a424cabdcff647797061e7482049d62a7"><div class="ttname"><a href="remmina__exec_8c.html#a424cabdcff647797061e7482049d62a7">remmina_exec_command</a></div><div class="ttdeci">void remmina_exec_command(RemminaCommandType command, const gchar *data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__exec_8c_source.html#l00368">remmina_exec.c:368</a></div></div>
@@ -351,7 +351,7 @@ $(document).ready(function(){initNavTree('rcw_8c_source.html','');});
<div class="ttc" id="remmina__applet__menu__item_8h_html_a75e42156d38612a96ae48899316b4727a9056a1ad9722374064fe166aa77e69a3"><div class="ttname"><a href="remmina__applet__menu__item_8h.html#a75e42156d38612a96ae48899316b4727a9056a1ad9722374064fe166aa77e69a3">REMMINA_APPLET_MENU_ITEM_NEW</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__applet__menu__item_8h_source.html#l00050">remmina_applet_menu_item.h:50</a></div></div>
<div class="ttc" id="rcw_8c_html_a36c08f198ab102d001d1221bdd8ea38c"><div class="ttname"><a href="rcw_8c.html#a36c08f198ab102d001d1221bdd8ea38c">rco_create_scrolled_container</a></div><div class="ttdeci">static GtkWidget * rco_create_scrolled_container(RemminaScaleMode scalemode, int view_mode)</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l00927">rcw.c:927</a></div></div>
<div class="ttc" id="rcw_8c_html_ae8409c04e40ec792c1f477360bfcd6ba"><div class="ttname"><a href="rcw_8c.html#ae8409c04e40ec792c1f477360bfcd6ba">rcw_toolbar_scaler_option</a></div><div class="ttdeci">static void rcw_toolbar_scaler_option(GtkToolItem *toggle, RemminaConnectionWindow *cnnwin)</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l01506">rcw.c:1506</a></div></div>
-<div class="ttc" id="remmina__file_8c_html_a4884356c195dcfb4ceacf641a1e74e66"><div class="ttname"><a href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a></div><div class="ttdeci">gint remmina_file_get_int(RemminaFile *remminafile, const gchar *setting, gint default_value)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00594">remmina_file.c:594</a></div></div>
+<div class="ttc" id="remmina__file_8c_html_a4884356c195dcfb4ceacf641a1e74e66"><div class="ttname"><a href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a></div><div class="ttdeci">gint remmina_file_get_int(RemminaFile *remminafile, const gchar *setting, gint default_value)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00603">remmina_file.c:603</a></div></div>
<div class="ttc" id="rcw_8c_html_a61b9eae2dd47962c5966d5d32eec9964"><div class="ttname"><a href="rcw_8c.html#a61b9eae2dd47962c5966d5d32eec9964">rco_on_desktop_resize</a></div><div class="ttdeci">void rco_on_desktop_resize(RemminaProtocolWidget *gp, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l04340">rcw.c:4340</a></div></div>
<div class="ttc" id="remmina__utils_8c_html_ac804e6111e538ee2fa425b8b6fd1fb66"><div class="ttname"><a href="remmina__utils_8c.html#ac804e6111e538ee2fa425b8b6fd1fb66">remmina_utils_string_replace_all</a></div><div class="ttdeci">guint remmina_utils_string_replace_all(GString *haystack, const gchar *needle, const gchar *replace)</div><div class="ttdoc">Replaces all occurrences of needle in haystack with replace. </div><div class="ttdef"><b>Definition:</b> <a href="remmina__utils_8c_source.html#l00193">remmina_utils.c:193</a></div></div>
<div class="ttc" id="rcw_8c_html_a8af64223778fc6adee796f5d98f17fd6"><div class="ttname"><a href="rcw_8c.html#a8af64223778fc6adee796f5d98f17fd6">rcw_focus_out_event</a></div><div class="ttdeci">static gboolean rcw_focus_out_event(GtkWidget *widget, GdkEventWindowState *event, gpointer user_data)</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l03236">rcw.c:3236</a></div></div>
@@ -392,8 +392,8 @@ $(document).ready(function(){initNavTree('rcw_8c_source.html','');});
<div class="ttc" id="rcw_8c_html_a5472fed2058a6597c3c7b7c91e98a73e"><div class="ttname"><a href="rcw_8c.html#a5472fed2058a6597c3c7b7c91e98a73e">focus_in_delayed_grab</a></div><div class="ttdeci">static gboolean focus_in_delayed_grab(RemminaConnectionWindow *cnnwin)</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l02904">rcw.c:2904</a></div></div>
<div class="ttc" id="rcw_8c_html_a23692809213a6dfe683afe3d0dece3aa"><div class="ttname"><a href="rcw_8c.html#a23692809213a6dfe683afe3d0dece3aa">rco_update_toolbar_autofit_button</a></div><div class="ttdeci">void rco_update_toolbar_autofit_button(RemminaConnectionObject *cnnobj)</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l01629">rcw.c:1629</a></div></div>
<div class="ttc" id="remmina_8c_html_ae729d4262682c8674b8dd0135014810a"><div class="ttname"><a href="remmina_8c.html#ae729d4262682c8674b8dd0135014810a">extrahardening</a></div><div class="ttdeci">gboolean extrahardening</div><div class="ttdef"><b>Definition:</b> <a href="remmina_8c_source.html#l00086">remmina.c:86</a></div></div>
-<div class="ttc" id="remmina__file_8c_html_a85ca1ca2d0bf9ef29e490c6f4527a954"><div class="ttname"><a href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a></div><div class="ttdeci">void remmina_file_set_string(RemminaFile *remminafile, const gchar *setting, const gchar *value)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00463">remmina_file.c:463</a></div></div>
-<div class="ttc" id="remmina__file_8c_html_a8c893a5deec9bc446bd89cc9973416c7"><div class="ttname"><a href="remmina__file_8c.html#a8c893a5deec9bc446bd89cc9973416c7">remmina_file_save</a></div><div class="ttdeci">void remmina_file_save(RemminaFile *remminafile)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00719">remmina_file.c:719</a></div></div>
+<div class="ttc" id="remmina__file_8c_html_a85ca1ca2d0bf9ef29e490c6f4527a954"><div class="ttname"><a href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a></div><div class="ttdeci">void remmina_file_set_string(RemminaFile *remminafile, const gchar *setting, const gchar *value)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00469">remmina_file.c:469</a></div></div>
+<div class="ttc" id="remmina__file_8c_html_a8c893a5deec9bc446bd89cc9973416c7"><div class="ttname"><a href="remmina__file_8c.html#a8c893a5deec9bc446bd89cc9973416c7">remmina_file_save</a></div><div class="ttdeci">void remmina_file_save(RemminaFile *remminafile)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00728">remmina_file.c:728</a></div></div>
<div class="ttc" id="rcw_8c_html_ad5a67ac52028302d5681cceaf9ac46bc"><div class="ttname"><a href="rcw_8c.html#ad5a67ac52028302d5681cceaf9ac46bc">rcw_append_new_page</a></div><div class="ttdeci">static GtkWidget * rcw_append_new_page(RemminaConnectionWindow *cnnwin, RemminaConnectionObject *cnnobj)</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l03551">rcw.c:3551</a></div></div>
<div class="ttc" id="rcw_8c_html_aee06df544a91184cba1fe77c6991065a"><div class="ttname"><a href="rcw_8c.html#aee06df544a91184cba1fe77c6991065a">rco_get_monitor_geometry</a></div><div class="ttdeci">void rco_get_monitor_geometry(RemminaConnectionObject *cnnobj, GdkRectangle *sz)</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l01005">rcw.c:1005</a></div></div>
<div class="ttc" id="remmina__pref_8h_html_a458e651af6690959efa2afb96be7d609ad947c85d5ea917958d90298dab033b2c"><div class="ttname"><a href="remmina__pref_8h.html#a458e651af6690959efa2afb96be7d609ad947c85d5ea917958d90298dab033b2c">FLOATING_TOOLBAR_VISIBILITY_DISABLE</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00102">remmina_pref.h:102</a></div></div>
@@ -408,7 +408,7 @@ $(document).ready(function(){initNavTree('rcw_8c_source.html','');});
<div class="ttc" id="rcw_8c_html_a07802fc420dc07560fe937d29172573c"><div class="ttname"><a href="rcw_8c.html#a07802fc420dc07560fe937d29172573c">rcw_delete_event</a></div><div class="ttdeci">static gboolean rcw_delete_event(GtkWidget *widget, GdkEvent *event, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l00690">rcw.c:690</a></div></div>
<div class="ttc" id="rcw_8c_html_a6fb67b7e52f4d570e72a201f0113a81c"><div class="ttname"><a href="rcw_8c.html#a6fb67b7e52f4d570e72a201f0113a81c">rcw_map_event</a></div><div class="ttdeci">static gboolean rcw_map_event(GtkWidget *widget, GdkEvent *event, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l03268">rcw.c:3268</a></div></div>
<div class="ttc" id="remmina__unlock_8c_html_a81e79e5c1c230b7e2bf27b2457801d4e"><div class="ttname"><a href="remmina__unlock_8c.html#a81e79e5c1c230b7e2bf27b2457801d4e">remmina_unlock_new</a></div><div class="ttdeci">gint remmina_unlock_new(GtkWindow *parent)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__unlock_8c_source.html#l00112">remmina_unlock.c:112</a></div></div>
-<div class="ttc" id="remmina__file_8c_html_a2feb8e9e32f3ff4e2fac836e67a77331"><div class="ttname"><a href="remmina__file_8c.html#a2feb8e9e32f3ff4e2fac836e67a77331">remmina_file_get_icon_name</a></div><div class="ttdeci">const gchar * remmina_file_get_icon_name(RemminaFile *remminafile)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00874">remmina_file.c:874</a></div></div>
+<div class="ttc" id="remmina__file_8c_html_a2feb8e9e32f3ff4e2fac836e67a77331"><div class="ttname"><a href="remmina__file_8c.html#a2feb8e9e32f3ff4e2fac836e67a77331">remmina_file_get_icon_name</a></div><div class="ttdeci">const gchar * remmina_file_get_icon_name(RemminaFile *remminafile)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00883">remmina_file.c:883</a></div></div>
<div class="ttc" id="struct___remmina_plugin_screenshot_data_html"><div class="ttname"><a href="struct___remmina_plugin_screenshot_data.html">_RemminaPluginScreenshotData</a></div><div class="ttdef"><b>Definition:</b> <a href="types_8h_source.html#l00083">types.h:83</a></div></div>
<div class="ttc" id="remmina__widget__pool_8c_html_a53fad3994b2550300cfd4fd8bb2a2b5b"><div class="ttname"><a href="remmina__widget__pool_8c.html#a53fad3994b2550300cfd4fd8bb2a2b5b">remmina_widget_pool_foreach</a></div><div class="ttdeci">gint remmina_widget_pool_foreach(RemminaWidgetPoolForEachFunc callback, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__widget__pool_8c_source.html#l00108">remmina_widget_pool.c:108</a></div></div>
<div class="ttc" id="struct___remmina_connection_object_html_aed1d667ed3085ee229c0dfdcf715084d"><div class="ttname"><a href="struct___remmina_connection_object.html#aed1d667ed3085ee229c0dfdcf715084d">_RemminaConnectionObject::connected</a></div><div class="ttdeci">gboolean connected</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l00170">rcw.c:170</a></div></div>
diff --git a/public/remmina__exec_8c_source.html b/public/remmina__exec_8c_source.html
index 2514a617b..8b668af88 100644
--- a/public/remmina__exec_8c_source.html
+++ b/public/remmina__exec_8c_source.html
@@ -135,7 +135,7 @@ $(document).ready(function(){initNavTree('remmina__exec_8c_source.html','');});
<div class="ttc" id="rcw_8h_html"><div class="ttname"><a href="rcw_8h.html">rcw.h</a></div></div>
<div class="ttc" id="rcw_8c_html_a1b7a771392e15e527005305e71cc2546"><div class="ttname"><a href="rcw_8c.html#a1b7a771392e15e527005305e71cc2546">rcw_open_from_file</a></div><div class="ttdeci">void rcw_open_from_file(RemminaFile *remminafile)</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l04423">rcw.c:4423</a></div></div>
<div class="ttc" id="remmina__exec_8h_html_a23616cb0334a45c2b477be6efd45ee0cabb2bf3aea0dd6f02ba402ec12a6ccbad"><div class="ttname"><a href="remmina__exec_8h.html#a23616cb0334a45c2b477be6efd45ee0cabb2bf3aea0dd6f02ba402ec12a6ccbad">REMMINA_COMMAND_PLUGIN</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__exec_8h_source.html#l00052">remmina_exec.h:52</a></div></div>
-<div class="ttc" id="remmina__file_8c_html_a4884356c195dcfb4ceacf641a1e74e66"><div class="ttname"><a href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a></div><div class="ttdeci">gint remmina_file_get_int(RemminaFile *remminafile, const gchar *setting, gint default_value)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00594">remmina_file.c:594</a></div></div>
+<div class="ttc" id="remmina__file_8c_html_a4884356c195dcfb4ceacf641a1e74e66"><div class="ttname"><a href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a></div><div class="ttdeci">gint remmina_file_get_int(RemminaFile *remminafile, const gchar *setting, gint default_value)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00603">remmina_file.c:603</a></div></div>
<div class="ttc" id="remmina__about_8c_html_a3ad768979e0945a162018c6d596c90f4"><div class="ttname"><a href="remmina__about_8c.html#a3ad768979e0945a162018c6d596c90f4">remmina_about_open</a></div><div class="ttdeci">void remmina_about_open(GtkWindow *parent)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__about_8c_source.html#l00044">remmina_about.c:44</a></div></div>
<div class="ttc" id="remmina__crypt_8h_html"><div class="ttname"><a href="remmina__crypt_8h.html">remmina_crypt.h</a></div></div>
<div class="ttc" id="remmina__exec_8h_html_ae9dfd6986f18cb3d846a4933ac792fd5a94dfcc0fcf38aa8060ff843e40799284"><div class="ttname"><a href="remmina__exec_8h.html#ae9dfd6986f18cb3d846a4933ac792fd5a94dfcc0fcf38aa8060ff843e40799284">REMMINA_CONDEXIT_ONQUIT</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__exec_8h_source.html#l00060">remmina_exec.h:60</a></div></div>
@@ -149,8 +149,8 @@ $(document).ready(function(){initNavTree('remmina__exec_8c_source.html','');});
<div class="ttc" id="remmina_8c_html_ab4a9a67c5372ff07b71d0558679ab7ae"><div class="ttname"><a href="remmina_8c.html#ab4a9a67c5372ff07b71d0558679ab7ae">kioskmode</a></div><div class="ttdeci">gboolean kioskmode</div><div class="ttdef"><b>Definition:</b> <a href="remmina_8c_source.html#l00082">remmina.c:82</a></div></div>
<div class="ttc" id="remmina__exec_8c_html_aaa67e07e2426828d7e7b9b30d2038d31"><div class="ttname"><a href="remmina__exec_8c.html#aaa67e07e2426828d7e7b9b30d2038d31">remmina_application_condexit</a></div><div class="ttdeci">void remmina_application_condexit(RemminaCondExitType why)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__exec_8c_source.html#l00123">remmina_exec.c:123</a></div></div>
<div class="ttc" id="remmina__exec_8c_html_aacc2a2ffd19e56fcb3e4b025d180ab8f"><div class="ttname"><a href="remmina__exec_8c.html#aacc2a2ffd19e56fcb3e4b025d180ab8f">disable_rcw_delete_confirm_cb</a></div><div class="ttdeci">static gboolean disable_rcw_delete_confirm_cb(GtkWidget *widget, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__exec_8c_source.html#l00111">remmina_exec.c:111</a></div></div>
-<div class="ttc" id="remmina__file_8c_html_a85ca1ca2d0bf9ef29e490c6f4527a954"><div class="ttname"><a href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a></div><div class="ttdeci">void remmina_file_set_string(RemminaFile *remminafile, const gchar *setting, const gchar *value)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00463">remmina_file.c:463</a></div></div>
-<div class="ttc" id="remmina__file_8c_html_a8c893a5deec9bc446bd89cc9973416c7"><div class="ttname"><a href="remmina__file_8c.html#a8c893a5deec9bc446bd89cc9973416c7">remmina_file_save</a></div><div class="ttdeci">void remmina_file_save(RemminaFile *remminafile)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00719">remmina_file.c:719</a></div></div>
+<div class="ttc" id="remmina__file_8c_html_a85ca1ca2d0bf9ef29e490c6f4527a954"><div class="ttname"><a href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a></div><div class="ttdeci">void remmina_file_set_string(RemminaFile *remminafile, const gchar *setting, const gchar *value)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00469">remmina_file.c:469</a></div></div>
+<div class="ttc" id="remmina__file_8c_html_a8c893a5deec9bc446bd89cc9973416c7"><div class="ttname"><a href="remmina__file_8c.html#a8c893a5deec9bc446bd89cc9973416c7">remmina_file_save</a></div><div class="ttdeci">void remmina_file_save(RemminaFile *remminafile)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00728">remmina_file.c:728</a></div></div>
<div class="ttc" id="struct___remmina_connection_window_html"><div class="ttname"><a href="struct___remmina_connection_window.html">_RemminaConnectionWindow</a></div><div class="ttdef"><b>Definition:</b> <a href="rcw_8h_source.html#l00054">rcw.h:54</a></div></div>
<div class="ttc" id="remmina__file__manager_8c_html_af7b58659604660eb0cb40b0e0f8348ab"><div class="ttname"><a href="remmina__file__manager_8c.html#af7b58659604660eb0cb40b0e0f8348ab">remmina_file_manager_load_file</a></div><div class="ttdeci">RemminaFile * remmina_file_manager_load_file(const gchar *filename)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file__manager_8c_source.html#l00355">remmina_file_manager.c:355</a></div></div>
<div class="ttc" id="remmina__exec_8c_html_aca2d356a03e1aac7b716b408183aa305"><div class="ttname"><a href="remmina__exec_8c.html#aca2d356a03e1aac7b716b408183aa305">newline_remove</a></div><div class="ttdeci">static void newline_remove(char *s)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__exec_8c_source.html#l00155">remmina_exec.c:155</a></div></div>
diff --git a/public/remmina__ext__exec_8c_source.html b/public/remmina__ext__exec_8c_source.html
index f97e754ee..03a723b3a 100644
--- a/public/remmina__ext__exec_8c_source.html
+++ b/public/remmina__ext__exec_8c_source.html
@@ -86,10 +86,10 @@ $(document).ready(function(){initNavTree('remmina__ext__exec_8c_source.html','')
<div class="title">remmina_ext_exec.c</div> </div>
</div><!--header-->
<div class="contents">
-<a href="remmina__ext__exec_8c.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * Remmina - The GTK+ Remote Desktop Client</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> * Copyright (C) 2009-2010 Vic Lee</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> * Copyright (C) 2014-2022 Antenore Gatta, Giovanni Panozzo</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * (at your option) any later version.</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * along with this program; if not, write to the Free Software</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> * Foundation, Inc., 51 Franklin Street, Fifth Floor,</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> * Boston, MA 02110-1301, USA.</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment"> * In addition, as a special exception, the copyright holders give</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="comment"> * permission to link the code of portions of this program with the</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment"> * OpenSSL library under certain conditions as described in each</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"> * individual source file, and distribute linked combinations</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> * including the two.</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> * You must obey the GNU General Public License in all respects</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * for all of the code used other than OpenSSL. * If you modify</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> * file(s) with this exception, you may extend this exception to your</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment"> * version of the file(s), but you are not obligated to do so. * If you</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="comment"> * do not wish to do so, delete this exception statement from your</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="comment"> * version. * If you delete this exception statement from all source</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="comment"> * files in the program, then also delete it here.</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="preprocessor">#include &lt;gdk/gdkkeysyms.h&gt;</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="preprocessor">#include &lt;glib/gi18n.h&gt;</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="preprocessor">#include &lt;glib.h&gt;</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="preprocessor">#include &lt;stdlib.h&gt;</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="preprocessor">#include &lt;sys/wait.h&gt;</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="preprocessor">#include &lt;unistd.h&gt;</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__utils_8h.html">remmina_utils.h</a>&quot;</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__ext__exec_8h.html">remmina_ext_exec.h</a>&quot;</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__public_8h.html">remmina_public.h</a>&quot;</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__trace__calls_8h.html">remmina/remmina_trace_calls.h</a>&quot;</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="preprocessor">#define SPAWN_TIMEOUT 10</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="preprocessor">#define GET_OBJECT(object_name) gtk_builder_get_object(builder, object_name)</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="remmina__ext__exec_8c.html#aa063217311c67408819a2c1b86ff92dd"> 51</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__ext__exec_8c.html#aa063217311c67408819a2c1b86ff92dd">wait_for_child</a>(GPid pid, gint script_retval, gpointer data)</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;{</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <a class="code" href="struct_p_con___spinner.html">PCon_Spinner</a> *pcspinner = (<a class="code" href="struct_p_con___spinner.html">PCon_Spinner</a>*)data;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; gtk_spinner_stop(GTK_SPINNER(pcspinner-&gt;<a class="code" href="struct_p_con___spinner.html#a895fd84ca4c0a4410b90b9690b5af046">spinner</a>));</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; gtk_widget_destroy(GTK_WIDGET(pcspinner-&gt;<a class="code" href="struct_p_con___spinner.html#aa0004e88608c893e343a9a2b3e50f646">dialog</a>));</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; g_spawn_close_pid(pid);</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="comment">/* TODO At the moment background processes will fail to start before the</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;<span class="comment"> * remmina connection.</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;<span class="comment"> * Adding a delay here could be a (not good) solution, or we should</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;<span class="comment"> * monitor each child opened, but it could be quit tricky and messy */</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;}</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;</div><div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="remmina__ext__exec_8h.html#a7c81795162a70d06294fdf935ea210d7"> 64</a></span>&#160;GtkDialog* <a class="code" href="remmina__ext__exec_8c.html#a7c81795162a70d06294fdf935ea210d7">remmina_ext_exec_new</a>(<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a>* remminafile, <span class="keyword">const</span> <span class="keywordtype">char</span> *remmina_ext_exec_type)</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;{</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; GtkBuilder *builder;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <a class="code" href="struct_p_con___spinner.html">PCon_Spinner</a> *pcspinner;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; GError *error = NULL;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keywordtype">char</span> **argv;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; gchar *cmd = NULL;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; gchar pre[11];</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; gchar post[12];</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; GPid child_pid;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; strcpy(pre, <span class="stringliteral">&quot;precommand&quot;</span>);</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; strcpy(post, <span class="stringliteral">&quot;postcommand&quot;</span>);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordflow">if</span> (remmina_ext_exec_type != NULL &amp;&amp; (</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; strcmp(remmina_ext_exec_type, pre) |</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; strcmp(remmina_ext_exec_type, post) )) {</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; cmd = g_strdup(<a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, remmina_ext_exec_type));</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; g_debug(<span class="stringliteral">&quot;[%s] %s&quot;</span>, remmina_ext_exec_type, cmd);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; } <span class="keywordflow">else</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; cmd = <a class="code" href="remmina__file_8c.html#afd8b12f3d84b4e201b9f465d5b8e0d03">remmina_file_format_properties</a>(remminafile, cmd);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; g_debug(<span class="stringliteral">&quot;[%s] updated to: %s&quot;</span>, remmina_ext_exec_type, cmd);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordflow">if</span> (*cmd != 0) {</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; pcspinner = g_new(<a class="code" href="struct_p_con___spinner.html">PCon_Spinner</a>, 1);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; builder = <a class="code" href="remmina__public_8c.html#a4573e086e1ff8507eb9447b25bf11b92">remmina_public_gtk_builder_new_from_resource</a>(<span class="stringliteral">&quot;/org/remmina/Remmina/src/../data/ui/remmina_spinner.glade&quot;</span>);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; pcspinner-&gt;<a class="code" href="struct_p_con___spinner.html#aa0004e88608c893e343a9a2b3e50f646">dialog</a> = GTK_DIALOG(gtk_builder_get_object(builder, <span class="stringliteral">&quot;DialogSpinner&quot;</span>));</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; pcspinner-&gt;<a class="code" href="struct_p_con___spinner.html#ae7f4061ced82dace307fb70c08348281">label_pleasewait</a> = GTK_LABEL(GET_OBJECT(<span class="stringliteral">&quot;label_pleasewait&quot;</span>));</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; pcspinner-&gt;<a class="code" href="struct_p_con___spinner.html#a895fd84ca4c0a4410b90b9690b5af046">spinner</a> = GTK_WIDGET(GET_OBJECT(<span class="stringliteral">&quot;spinner&quot;</span>));</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; pcspinner-&gt;<a class="code" href="struct_p_con___spinner.html#ab7322b598d596a57d8424d90762c588e">button_cancel</a> = GTK_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;button_cancel&quot;</span>));</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="comment">/* Connect signals */</span></div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; gtk_builder_connect_signals(builder, NULL);</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="comment">/* Exec a predefined command */</span></div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; g_shell_parse_argv(cmd, NULL, &amp;argv, &amp;error);</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keywordflow">if</span> (error) {</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; g_warning(<span class="stringliteral">&quot;%s\n&quot;</span>, error-&gt;message);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; g_error_free(error);</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; }</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="comment">/* Consider using G_SPAWN_SEARCH_PATH_FROM_ENVP (from glib 2.38)*/</span></div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; g_spawn_async( NULL, <span class="comment">// cwd</span></div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; argv, <span class="comment">// argv</span></div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; NULL, <span class="comment">// envp</span></div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; G_SPAWN_SEARCH_PATH |</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; G_SPAWN_SEARCH_PATH_FROM_ENVP |</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; G_SPAWN_DO_NOT_REAP_CHILD, <span class="comment">// flags</span></div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; NULL, <span class="comment">// child_setup</span></div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; NULL, <span class="comment">// child_setup user data</span></div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; &amp;child_pid, <span class="comment">// pid location</span></div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; &amp;error); <span class="comment">// error</span></div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keywordflow">if</span> (!error) {</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; gtk_spinner_start(GTK_SPINNER(pcspinner-&gt;<a class="code" href="struct_p_con___spinner.html#a895fd84ca4c0a4410b90b9690b5af046">spinner</a>));</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; g_child_watch_add(child_pid, <a class="code" href="remmina__ext__exec_8c.html#aa063217311c67408819a2c1b86ff92dd">wait_for_child</a>, (gpointer)pcspinner);</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; gtk_dialog_run(pcspinner-&gt;dialog);</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; }<span class="keywordflow">else</span> {</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; g_warning(<span class="stringliteral">&quot;Command %s exited with error: %s\n&quot;</span>, cmd, error-&gt;message);</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; g_error_free(error);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; }</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; g_strfreev(argv);</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; g_free(cmd);</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keywordflow">return</span> (pcspinner-&gt;<a class="code" href="struct_p_con___spinner.html#aa0004e88608c893e343a9a2b3e50f646">dialog</a>);</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; }</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; g_free(cmd);</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;}</div><div class="ttc" id="remmina__file_8c_html_a8eb1b213d9d08c6ad13683ce05f4355e"><div class="ttname"><a href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a></div><div class="ttdeci">const gchar * remmina_file_get_string(RemminaFile *remminafile, const gchar *setting)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00507">remmina_file.c:507</a></div></div>
+<a href="remmina__ext__exec_8c.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * Remmina - The GTK+ Remote Desktop Client</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> * Copyright (C) 2009-2010 Vic Lee</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> * Copyright (C) 2014-2022 Antenore Gatta, Giovanni Panozzo</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * (at your option) any later version.</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * along with this program; if not, write to the Free Software</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> * Foundation, Inc., 51 Franklin Street, Fifth Floor,</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> * Boston, MA 02110-1301, USA.</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment"> * In addition, as a special exception, the copyright holders give</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="comment"> * permission to link the code of portions of this program with the</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment"> * OpenSSL library under certain conditions as described in each</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"> * individual source file, and distribute linked combinations</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> * including the two.</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> * You must obey the GNU General Public License in all respects</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * for all of the code used other than OpenSSL. * If you modify</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> * file(s) with this exception, you may extend this exception to your</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment"> * version of the file(s), but you are not obligated to do so. * If you</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="comment"> * do not wish to do so, delete this exception statement from your</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="comment"> * version. * If you delete this exception statement from all source</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="comment"> * files in the program, then also delete it here.</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="preprocessor">#include &lt;gdk/gdkkeysyms.h&gt;</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="preprocessor">#include &lt;glib/gi18n.h&gt;</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="preprocessor">#include &lt;glib.h&gt;</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="preprocessor">#include &lt;stdlib.h&gt;</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="preprocessor">#include &lt;sys/wait.h&gt;</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="preprocessor">#include &lt;unistd.h&gt;</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__utils_8h.html">remmina_utils.h</a>&quot;</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__ext__exec_8h.html">remmina_ext_exec.h</a>&quot;</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__public_8h.html">remmina_public.h</a>&quot;</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__trace__calls_8h.html">remmina/remmina_trace_calls.h</a>&quot;</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="preprocessor">#define SPAWN_TIMEOUT 10</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="preprocessor">#define GET_OBJECT(object_name) gtk_builder_get_object(builder, object_name)</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="remmina__ext__exec_8c.html#aa063217311c67408819a2c1b86ff92dd"> 51</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__ext__exec_8c.html#aa063217311c67408819a2c1b86ff92dd">wait_for_child</a>(GPid pid, gint script_retval, gpointer data)</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;{</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <a class="code" href="struct_p_con___spinner.html">PCon_Spinner</a> *pcspinner = (<a class="code" href="struct_p_con___spinner.html">PCon_Spinner</a>*)data;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; gtk_spinner_stop(GTK_SPINNER(pcspinner-&gt;<a class="code" href="struct_p_con___spinner.html#a895fd84ca4c0a4410b90b9690b5af046">spinner</a>));</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; gtk_widget_destroy(GTK_WIDGET(pcspinner-&gt;<a class="code" href="struct_p_con___spinner.html#aa0004e88608c893e343a9a2b3e50f646">dialog</a>));</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; g_spawn_close_pid(pid);</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="comment">/* TODO At the moment background processes will fail to start before the</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;<span class="comment"> * remmina connection.</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;<span class="comment"> * Adding a delay here could be a (not good) solution, or we should</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;<span class="comment"> * monitor each child opened, but it could be quit tricky and messy */</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;}</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;</div><div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="remmina__ext__exec_8h.html#a7c81795162a70d06294fdf935ea210d7"> 64</a></span>&#160;GtkDialog* <a class="code" href="remmina__ext__exec_8c.html#a7c81795162a70d06294fdf935ea210d7">remmina_ext_exec_new</a>(<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a>* remminafile, <span class="keyword">const</span> <span class="keywordtype">char</span> *remmina_ext_exec_type)</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;{</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; GtkBuilder *builder;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <a class="code" href="struct_p_con___spinner.html">PCon_Spinner</a> *pcspinner;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; GError *error = NULL;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keywordtype">char</span> **argv;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; gchar *cmd = NULL;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; gchar pre[11];</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; gchar post[12];</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; GPid child_pid;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; strcpy(pre, <span class="stringliteral">&quot;precommand&quot;</span>);</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; strcpy(post, <span class="stringliteral">&quot;postcommand&quot;</span>);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordflow">if</span> (remmina_ext_exec_type != NULL &amp;&amp; (</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; strcmp(remmina_ext_exec_type, pre) |</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; strcmp(remmina_ext_exec_type, post) )) {</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; cmd = g_strdup(<a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, remmina_ext_exec_type));</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; g_debug(<span class="stringliteral">&quot;[%s] %s&quot;</span>, remmina_ext_exec_type, cmd);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; } <span class="keywordflow">else</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; cmd = <a class="code" href="remmina__file_8c.html#afd8b12f3d84b4e201b9f465d5b8e0d03">remmina_file_format_properties</a>(remminafile, cmd);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; g_debug(<span class="stringliteral">&quot;[%s] updated to: %s&quot;</span>, remmina_ext_exec_type, cmd);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordflow">if</span> (*cmd != 0) {</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; pcspinner = g_new(<a class="code" href="struct_p_con___spinner.html">PCon_Spinner</a>, 1);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; builder = <a class="code" href="remmina__public_8c.html#a4573e086e1ff8507eb9447b25bf11b92">remmina_public_gtk_builder_new_from_resource</a>(<span class="stringliteral">&quot;/org/remmina/Remmina/src/../data/ui/remmina_spinner.glade&quot;</span>);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; pcspinner-&gt;<a class="code" href="struct_p_con___spinner.html#aa0004e88608c893e343a9a2b3e50f646">dialog</a> = GTK_DIALOG(gtk_builder_get_object(builder, <span class="stringliteral">&quot;DialogSpinner&quot;</span>));</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; pcspinner-&gt;<a class="code" href="struct_p_con___spinner.html#ae7f4061ced82dace307fb70c08348281">label_pleasewait</a> = GTK_LABEL(GET_OBJECT(<span class="stringliteral">&quot;label_pleasewait&quot;</span>));</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; pcspinner-&gt;<a class="code" href="struct_p_con___spinner.html#a895fd84ca4c0a4410b90b9690b5af046">spinner</a> = GTK_WIDGET(GET_OBJECT(<span class="stringliteral">&quot;spinner&quot;</span>));</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; pcspinner-&gt;<a class="code" href="struct_p_con___spinner.html#ab7322b598d596a57d8424d90762c588e">button_cancel</a> = GTK_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;button_cancel&quot;</span>));</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="comment">/* Connect signals */</span></div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; gtk_builder_connect_signals(builder, NULL);</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="comment">/* Exec a predefined command */</span></div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; g_shell_parse_argv(cmd, NULL, &amp;argv, &amp;error);</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keywordflow">if</span> (error) {</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; g_warning(<span class="stringliteral">&quot;%s\n&quot;</span>, error-&gt;message);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; g_error_free(error);</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; }</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="comment">/* Consider using G_SPAWN_SEARCH_PATH_FROM_ENVP (from glib 2.38)*/</span></div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; g_spawn_async( NULL, <span class="comment">// cwd</span></div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; argv, <span class="comment">// argv</span></div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; NULL, <span class="comment">// envp</span></div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; G_SPAWN_SEARCH_PATH |</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; G_SPAWN_SEARCH_PATH_FROM_ENVP |</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; G_SPAWN_DO_NOT_REAP_CHILD, <span class="comment">// flags</span></div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; NULL, <span class="comment">// child_setup</span></div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; NULL, <span class="comment">// child_setup user data</span></div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; &amp;child_pid, <span class="comment">// pid location</span></div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; &amp;error); <span class="comment">// error</span></div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keywordflow">if</span> (!error) {</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; gtk_spinner_start(GTK_SPINNER(pcspinner-&gt;<a class="code" href="struct_p_con___spinner.html#a895fd84ca4c0a4410b90b9690b5af046">spinner</a>));</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; g_child_watch_add(child_pid, <a class="code" href="remmina__ext__exec_8c.html#aa063217311c67408819a2c1b86ff92dd">wait_for_child</a>, (gpointer)pcspinner);</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; gtk_dialog_run(pcspinner-&gt;dialog);</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; }<span class="keywordflow">else</span> {</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; g_warning(<span class="stringliteral">&quot;Command %s exited with error: %s\n&quot;</span>, cmd, error-&gt;message);</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; g_error_free(error);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; }</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; g_strfreev(argv);</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; g_free(cmd);</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keywordflow">return</span> (pcspinner-&gt;<a class="code" href="struct_p_con___spinner.html#aa0004e88608c893e343a9a2b3e50f646">dialog</a>);</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; }</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; g_free(cmd);</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;}</div><div class="ttc" id="remmina__file_8c_html_a8eb1b213d9d08c6ad13683ce05f4355e"><div class="ttname"><a href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a></div><div class="ttdeci">const gchar * remmina_file_get_string(RemminaFile *remminafile, const gchar *setting)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00516">remmina_file.c:516</a></div></div>
<div class="ttc" id="types_8h_html_a112d7cc6c755209cabb68cf2a62ad515"><div class="ttname"><a href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a></div><div class="ttdeci">typedefG_BEGIN_DECLS struct _RemminaFile RemminaFile</div><div class="ttdef"><b>Definition:</b> <a href="types_8h_source.html#l00044">types.h:44</a></div></div>
<div class="ttc" id="remmina__trace__calls_8h_html"><div class="ttname"><a href="remmina__trace__calls_8h.html">remmina_trace_calls.h</a></div></div>
-<div class="ttc" id="remmina__file_8c_html_afd8b12f3d84b4e201b9f465d5b8e0d03"><div class="ttname"><a href="remmina__file_8c.html#afd8b12f3d84b4e201b9f465d5b8e0d03">remmina_file_format_properties</a></div><div class="ttdeci">gchar * remmina_file_format_properties(RemminaFile *remminafile, const gchar *setting)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00552">remmina_file.c:552</a></div></div>
+<div class="ttc" id="remmina__file_8c_html_afd8b12f3d84b4e201b9f465d5b8e0d03"><div class="ttname"><a href="remmina__file_8c.html#afd8b12f3d84b4e201b9f465d5b8e0d03">remmina_file_format_properties</a></div><div class="ttdeci">gchar * remmina_file_format_properties(RemminaFile *remminafile, const gchar *setting)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00561">remmina_file.c:561</a></div></div>
<div class="ttc" id="remmina__ext__exec_8c_html_a7c81795162a70d06294fdf935ea210d7"><div class="ttname"><a href="remmina__ext__exec_8c.html#a7c81795162a70d06294fdf935ea210d7">remmina_ext_exec_new</a></div><div class="ttdeci">GtkDialog * remmina_ext_exec_new(RemminaFile *remminafile, const char *remmina_ext_exec_type)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__ext__exec_8c_source.html#l00064">remmina_ext_exec.c:64</a></div></div>
<div class="ttc" id="remmina__utils_8h_html"><div class="ttname"><a href="remmina__utils_8h.html">remmina_utils.h</a></div><div class="ttdoc">General utility functions, non-GTK related. </div></div>
<div class="ttc" id="remmina__ext__exec_8c_html_aa063217311c67408819a2c1b86ff92dd"><div class="ttname"><a href="remmina__ext__exec_8c.html#aa063217311c67408819a2c1b86ff92dd">wait_for_child</a></div><div class="ttdeci">static void wait_for_child(GPid pid, gint script_retval, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__ext__exec_8c_source.html#l00051">remmina_ext_exec.c:51</a></div></div>
diff --git a/public/remmina__external__tools_8c_source.html b/public/remmina__external__tools_8c_source.html
index 1ea6c74ea..89f524f3b 100644
--- a/public/remmina__external__tools_8c_source.html
+++ b/public/remmina__external__tools_8c_source.html
@@ -86,8 +86,8 @@ $(document).ready(function(){initNavTree('remmina__external__tools_8c_source.htm
<div class="title">remmina_external_tools.c</div> </div>
</div><!--header-->
<div class="contents">
-<a href="remmina__external__tools_8c.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * Remmina - The GTK+ Remote Desktop Client</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> * Copyright (C) 2011 Marc-Andre Moreau</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * (at your option) any later version.</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> * along with this program; if not, write to the Free Software</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * Foundation, Inc., 51 Franklin Street, Fifth Floor,</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> * Boston, MA 02110-1301, USA.</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> * In addition, as a special exception, the copyright holders give</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment"> * permission to link the code of portions of this program with the</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="comment"> * OpenSSL library under certain conditions as described in each</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment"> * individual source file, and distribute linked combinations</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"> * including the two.</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> * You must obey the GNU General Public License in all respects</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> * for all of the code used other than OpenSSL. * If you modify</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * file(s) with this exception, you may extend this exception to your</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> * version of the file(s), but you are not obligated to do so. * If you</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment"> * do not wish to do so, delete this exception statement from your</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="comment"> * version. * If you delete this exception statement from all source</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="comment"> * files in the program, then also delete it here.</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="preprocessor">#include &lt;gtk/gtk.h&gt;</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="preprocessor">#include &lt;glib/gi18n.h&gt;</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="preprocessor">#include &lt;glib/gstdio.h&gt;</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="preprocessor">#include &lt;stdlib.h&gt;</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__file_8h.html">remmina_file.h</a>&quot;</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="types_8h.html">remmina/types.h</a>&quot;</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__public_8h.html">remmina_public.h</a>&quot;</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__external__tools_8h.html">remmina_external_tools.h</a>&quot;</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__trace__calls_8h.html">remmina/remmina_trace_calls.h</a>&quot;</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="remmina__external__tools_8c.html#ae32c6ba6b03dffd2ccbf70ea7ab60c60">remmina_external_tools_launcher</a>(<span class="keyword">const</span> gchar* filename, <span class="keyword">const</span> gchar* scriptname, <span class="keyword">const</span> gchar* shortname);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;</div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="remmina__external__tools_8c.html#aeb0a4182f2137fe0089737b2522add71"> 47</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__external__tools_8c.html#aeb0a4182f2137fe0089737b2522add71">view_popup_menu_onDoSomething</a>(GtkWidget *menuitem, gpointer userdata)</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;{</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; gchar *remminafilename = g_object_get_data(G_OBJECT(menuitem), <span class="stringliteral">&quot;remminafilename&quot;</span>);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; gchar *scriptfilename = g_object_get_data(G_OBJECT(menuitem), <span class="stringliteral">&quot;scriptfilename&quot;</span>);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; gchar *scriptshortname = g_object_get_data(G_OBJECT(menuitem), <span class="stringliteral">&quot;scriptshortname&quot;</span>);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <a class="code" href="remmina__external__tools_8c.html#ae32c6ba6b03dffd2ccbf70ea7ab60c60">remmina_external_tools_launcher</a>(remminafilename, scriptfilename, scriptshortname);</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;}</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;</div><div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="remmina__external__tools_8h.html#a32c8a5f638e3a38753d43fbeb3094e85"> 57</a></span>&#160;gboolean <a class="code" href="remmina__external__tools_8c.html#abe70273f7d1cbab092c6f6017695c56d">remmina_external_tools_from_filename</a>(<a class="code" href="struct___remmina_main.html">RemminaMain</a> *<a class="code" href="remmina__main_8c.html#ab7c680e1f6ffeef21cb928a083d36d89">remminamain</a>, gchar* remminafilename)</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;{</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; GtkWidget *menu, *menuitem;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; gchar dirname[MAX_PATH_LEN];</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; gchar filename[MAX_PATH_LEN];</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; GDir* dir;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keyword">const</span> gchar* name;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; strcpy(dirname, REMMINA_RUNTIME_EXTERNAL_TOOLS_DIR);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; dir = g_dir_open(dirname, 0, NULL);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keywordflow">if</span> (dir == NULL)</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; menu = gtk_menu_new();</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordflow">while</span> ((name = g_dir_read_name(dir)) != NULL) {</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordflow">if</span> (!g_str_has_prefix(name, <span class="stringliteral">&quot;remmina_&quot;</span>))</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; g_snprintf(filename, MAX_PATH_LEN, <span class="stringliteral">&quot;%s/%s&quot;</span>, dirname, name);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; menuitem = gtk_menu_item_new_with_label(name + 8);</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; g_object_set_data_full(G_OBJECT(menuitem), <span class="stringliteral">&quot;remminafilename&quot;</span>, g_strdup(remminafilename), g_free);</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; g_object_set_data_full(G_OBJECT(menuitem), <span class="stringliteral">&quot;scriptfilename&quot;</span>, g_strdup(filename), g_free);</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; g_object_set_data_full(G_OBJECT(menuitem), <span class="stringliteral">&quot;scriptshortname&quot;</span>, g_strdup(name), g_free);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; g_signal_connect(menuitem, <span class="stringliteral">&quot;activate&quot;</span>, (GCallback)<a class="code" href="remmina__external__tools_8c.html#aeb0a4182f2137fe0089737b2522add71">view_popup_menu_onDoSomething</a>, NULL);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; }</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; g_dir_close(dir);</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; gtk_widget_show_all(menu);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="comment">/* Note: event can be NULL here when called from view_onPopupMenu;</span></div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;<span class="comment"> * gdk_event_get_time() accepts a NULL argument</span></div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;<span class="preprocessor">#if GTK_CHECK_VERSION(3, 22, 0)</span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; gtk_menu_popup_at_pointer(GTK_MENU(menu), NULL);</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL, 0, 0);</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;}</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;</div><div class="line"><a name="l00102"></a><span class="lineno"><a class="line" href="remmina__external__tools_8c.html#ae32c6ba6b03dffd2ccbf70ea7ab60c60"> 102</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="remmina__external__tools_8c.html#ae32c6ba6b03dffd2ccbf70ea7ab60c60">remmina_external_tools_launcher</a>(<span class="keyword">const</span> gchar* filename, <span class="keyword">const</span> gchar* scriptname, <span class="keyword">const</span> gchar* shortname)</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;{</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span> *env_format = <span class="stringliteral">&quot;%s=%s&quot;</span>;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="keywordtype">char</span> *env;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="keywordtype">size_t</span> envstrlen;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; gchar launcher[MAX_PATH_LEN];</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; g_snprintf(launcher, MAX_PATH_LEN, <span class="stringliteral">&quot;%s/launcher.sh&quot;</span>, REMMINA_RUNTIME_EXTERNAL_TOOLS_DIR);</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; remminafile = <a class="code" href="remmina__file_8c.html#ac1cc2d7f827f7d64c7fd3edf10e9383e">remmina_file_load</a>(filename);</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="keywordflow">if</span> (!remminafile)</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; GHashTableIter iter;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keyword">const</span> gchar *key, *value;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; g_hash_table_iter_init(&amp;iter, remminafile-&gt;settings);</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keywordflow">while</span> (g_hash_table_iter_next(&amp;iter, (gpointer*)&amp;key, (gpointer*)&amp;value)) {</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; envstrlen = strlen(key) + strlen(value) + strlen(env_format) + 1;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; env = (<span class="keywordtype">char</span>*)malloc(envstrlen);</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keywordflow">if</span> (env == NULL) {</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; }</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keywordtype">int</span> retval = snprintf(env, envstrlen, env_format, key, value);</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="keywordflow">if</span> (retval &gt; 0 &amp;&amp; (<span class="keywordtype">size_t</span>)retval &lt;= envstrlen) {</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="keywordflow">if</span> (putenv(env) != 0) {</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="comment">/* If putenv fails, we must free the unused space */</span></div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; free(env);</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; }</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; }</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; }</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="comment">/* Adds the window title for the terminal window */</span></div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span> *term_title_key = <span class="stringliteral">&quot;remmina_term_title&quot;</span>;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span> *term_title_val_prefix = <span class="stringliteral">&quot;Remmina external tool&quot;</span>;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; envstrlen = strlen(term_title_key) + strlen(term_title_val_prefix) + strlen(shortname) + 7;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; env = (<span class="keywordtype">char</span>*)malloc(envstrlen);</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="keywordflow">if</span> (env != NULL) {</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="keywordflow">if</span> (snprintf(env, envstrlen, <span class="stringliteral">&quot;%s=%s: %s&quot;</span>, term_title_key, term_title_val_prefix, shortname) ) {</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <span class="keywordflow">if</span> (putenv(env) != 0) {</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <span class="comment">/* If putenv fails, we must free the unused space */</span></div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; free(env);</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; }</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; }</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; }</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <span class="keyword">const</span> <span class="keywordtype">size_t</span> cmdlen = strlen(launcher) + strlen(scriptname) + 2;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; gchar *cmd = (gchar*)malloc(cmdlen);</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; g_snprintf(cmd, cmdlen, <span class="stringliteral">&quot;%s %s&quot;</span>, launcher, scriptname);</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; system(cmd);</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; free(cmd);</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <a class="code" href="remmina__file_8c.html#abd2f06bf0a5ddcf7156e5ef7d0c8d4d7">remmina_file_free</a>(remminafile);</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160;}</div><div class="ttc" id="remmina__file_8c_html_ac1cc2d7f827f7d64c7fd3edf10e9383e"><div class="ttname"><a href="remmina__file_8c.html#ac1cc2d7f827f7d64c7fd3edf10e9383e">remmina_file_load</a></div><div class="ttdeci">RemminaFile * remmina_file_load(const gchar *filename)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00346">remmina_file.c:346</a></div></div>
-<div class="ttc" id="remmina__file_8c_html_abd2f06bf0a5ddcf7156e5ef7d0c8d4d7"><div class="ttname"><a href="remmina__file_8c.html#abd2f06bf0a5ddcf7156e5ef7d0c8d4d7">remmina_file_free</a></div><div class="ttdeci">void remmina_file_free(RemminaFile *remminafile)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00700">remmina_file.c:700</a></div></div>
+<a href="remmina__external__tools_8c.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * Remmina - The GTK+ Remote Desktop Client</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> * Copyright (C) 2011 Marc-Andre Moreau</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * (at your option) any later version.</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> * along with this program; if not, write to the Free Software</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * Foundation, Inc., 51 Franklin Street, Fifth Floor,</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> * Boston, MA 02110-1301, USA.</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> * In addition, as a special exception, the copyright holders give</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment"> * permission to link the code of portions of this program with the</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="comment"> * OpenSSL library under certain conditions as described in each</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment"> * individual source file, and distribute linked combinations</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"> * including the two.</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> * You must obey the GNU General Public License in all respects</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> * for all of the code used other than OpenSSL. * If you modify</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * file(s) with this exception, you may extend this exception to your</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> * version of the file(s), but you are not obligated to do so. * If you</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment"> * do not wish to do so, delete this exception statement from your</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="comment"> * version. * If you delete this exception statement from all source</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="comment"> * files in the program, then also delete it here.</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="preprocessor">#include &lt;gtk/gtk.h&gt;</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="preprocessor">#include &lt;glib/gi18n.h&gt;</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="preprocessor">#include &lt;glib/gstdio.h&gt;</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="preprocessor">#include &lt;stdlib.h&gt;</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__file_8h.html">remmina_file.h</a>&quot;</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="types_8h.html">remmina/types.h</a>&quot;</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__public_8h.html">remmina_public.h</a>&quot;</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__external__tools_8h.html">remmina_external_tools.h</a>&quot;</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__trace__calls_8h.html">remmina/remmina_trace_calls.h</a>&quot;</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="remmina__external__tools_8c.html#ae32c6ba6b03dffd2ccbf70ea7ab60c60">remmina_external_tools_launcher</a>(<span class="keyword">const</span> gchar* filename, <span class="keyword">const</span> gchar* scriptname, <span class="keyword">const</span> gchar* shortname);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;</div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="remmina__external__tools_8c.html#aeb0a4182f2137fe0089737b2522add71"> 47</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__external__tools_8c.html#aeb0a4182f2137fe0089737b2522add71">view_popup_menu_onDoSomething</a>(GtkWidget *menuitem, gpointer userdata)</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;{</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; gchar *remminafilename = g_object_get_data(G_OBJECT(menuitem), <span class="stringliteral">&quot;remminafilename&quot;</span>);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; gchar *scriptfilename = g_object_get_data(G_OBJECT(menuitem), <span class="stringliteral">&quot;scriptfilename&quot;</span>);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; gchar *scriptshortname = g_object_get_data(G_OBJECT(menuitem), <span class="stringliteral">&quot;scriptshortname&quot;</span>);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <a class="code" href="remmina__external__tools_8c.html#ae32c6ba6b03dffd2ccbf70ea7ab60c60">remmina_external_tools_launcher</a>(remminafilename, scriptfilename, scriptshortname);</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;}</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;</div><div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="remmina__external__tools_8h.html#a32c8a5f638e3a38753d43fbeb3094e85"> 57</a></span>&#160;gboolean <a class="code" href="remmina__external__tools_8c.html#abe70273f7d1cbab092c6f6017695c56d">remmina_external_tools_from_filename</a>(<a class="code" href="struct___remmina_main.html">RemminaMain</a> *<a class="code" href="remmina__main_8c.html#ab7c680e1f6ffeef21cb928a083d36d89">remminamain</a>, gchar* remminafilename)</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;{</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; GtkWidget *menu, *menuitem;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; gchar dirname[MAX_PATH_LEN];</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; gchar filename[MAX_PATH_LEN];</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; GDir* dir;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keyword">const</span> gchar* name;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; strcpy(dirname, REMMINA_RUNTIME_EXTERNAL_TOOLS_DIR);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; dir = g_dir_open(dirname, 0, NULL);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keywordflow">if</span> (dir == NULL)</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; menu = gtk_menu_new();</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordflow">while</span> ((name = g_dir_read_name(dir)) != NULL) {</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordflow">if</span> (!g_str_has_prefix(name, <span class="stringliteral">&quot;remmina_&quot;</span>))</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; g_snprintf(filename, MAX_PATH_LEN, <span class="stringliteral">&quot;%s/%s&quot;</span>, dirname, name);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; menuitem = gtk_menu_item_new_with_label(name + 8);</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; g_object_set_data_full(G_OBJECT(menuitem), <span class="stringliteral">&quot;remminafilename&quot;</span>, g_strdup(remminafilename), g_free);</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; g_object_set_data_full(G_OBJECT(menuitem), <span class="stringliteral">&quot;scriptfilename&quot;</span>, g_strdup(filename), g_free);</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; g_object_set_data_full(G_OBJECT(menuitem), <span class="stringliteral">&quot;scriptshortname&quot;</span>, g_strdup(name), g_free);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; g_signal_connect(menuitem, <span class="stringliteral">&quot;activate&quot;</span>, (GCallback)<a class="code" href="remmina__external__tools_8c.html#aeb0a4182f2137fe0089737b2522add71">view_popup_menu_onDoSomething</a>, NULL);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; }</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; g_dir_close(dir);</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; gtk_widget_show_all(menu);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="comment">/* Note: event can be NULL here when called from view_onPopupMenu;</span></div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;<span class="comment"> * gdk_event_get_time() accepts a NULL argument</span></div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;<span class="preprocessor">#if GTK_CHECK_VERSION(3, 22, 0)</span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; gtk_menu_popup_at_pointer(GTK_MENU(menu), NULL);</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL, 0, 0);</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;}</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;</div><div class="line"><a name="l00102"></a><span class="lineno"><a class="line" href="remmina__external__tools_8c.html#ae32c6ba6b03dffd2ccbf70ea7ab60c60"> 102</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="remmina__external__tools_8c.html#ae32c6ba6b03dffd2ccbf70ea7ab60c60">remmina_external_tools_launcher</a>(<span class="keyword">const</span> gchar* filename, <span class="keyword">const</span> gchar* scriptname, <span class="keyword">const</span> gchar* shortname)</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;{</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span> *env_format = <span class="stringliteral">&quot;%s=%s&quot;</span>;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="keywordtype">char</span> *env;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="keywordtype">size_t</span> envstrlen;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; gchar launcher[MAX_PATH_LEN];</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; g_snprintf(launcher, MAX_PATH_LEN, <span class="stringliteral">&quot;%s/launcher.sh&quot;</span>, REMMINA_RUNTIME_EXTERNAL_TOOLS_DIR);</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; remminafile = <a class="code" href="remmina__file_8c.html#ac1cc2d7f827f7d64c7fd3edf10e9383e">remmina_file_load</a>(filename);</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="keywordflow">if</span> (!remminafile)</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; GHashTableIter iter;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keyword">const</span> gchar *key, *value;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; g_hash_table_iter_init(&amp;iter, remminafile-&gt;settings);</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keywordflow">while</span> (g_hash_table_iter_next(&amp;iter, (gpointer*)&amp;key, (gpointer*)&amp;value)) {</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; envstrlen = strlen(key) + strlen(value) + strlen(env_format) + 1;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; env = (<span class="keywordtype">char</span>*)malloc(envstrlen);</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keywordflow">if</span> (env == NULL) {</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; }</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keywordtype">int</span> retval = snprintf(env, envstrlen, env_format, key, value);</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="keywordflow">if</span> (retval &gt; 0 &amp;&amp; (<span class="keywordtype">size_t</span>)retval &lt;= envstrlen) {</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="keywordflow">if</span> (putenv(env) != 0) {</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="comment">/* If putenv fails, we must free the unused space */</span></div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; free(env);</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; }</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; }</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; }</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="comment">/* Adds the window title for the terminal window */</span></div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span> *term_title_key = <span class="stringliteral">&quot;remmina_term_title&quot;</span>;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span> *term_title_val_prefix = <span class="stringliteral">&quot;Remmina external tool&quot;</span>;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; envstrlen = strlen(term_title_key) + strlen(term_title_val_prefix) + strlen(shortname) + 7;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; env = (<span class="keywordtype">char</span>*)malloc(envstrlen);</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="keywordflow">if</span> (env != NULL) {</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="keywordflow">if</span> (snprintf(env, envstrlen, <span class="stringliteral">&quot;%s=%s: %s&quot;</span>, term_title_key, term_title_val_prefix, shortname) ) {</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <span class="keywordflow">if</span> (putenv(env) != 0) {</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <span class="comment">/* If putenv fails, we must free the unused space */</span></div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; free(env);</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; }</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; }</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; }</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <span class="keyword">const</span> <span class="keywordtype">size_t</span> cmdlen = strlen(launcher) + strlen(scriptname) + 2;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; gchar *cmd = (gchar*)malloc(cmdlen);</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; g_snprintf(cmd, cmdlen, <span class="stringliteral">&quot;%s %s&quot;</span>, launcher, scriptname);</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; system(cmd);</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; free(cmd);</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <a class="code" href="remmina__file_8c.html#abd2f06bf0a5ddcf7156e5ef7d0c8d4d7">remmina_file_free</a>(remminafile);</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160;}</div><div class="ttc" id="remmina__file_8c_html_ac1cc2d7f827f7d64c7fd3edf10e9383e"><div class="ttname"><a href="remmina__file_8c.html#ac1cc2d7f827f7d64c7fd3edf10e9383e">remmina_file_load</a></div><div class="ttdeci">RemminaFile * remmina_file_load(const gchar *filename)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00350">remmina_file.c:350</a></div></div>
+<div class="ttc" id="remmina__file_8c_html_abd2f06bf0a5ddcf7156e5ef7d0c8d4d7"><div class="ttname"><a href="remmina__file_8c.html#abd2f06bf0a5ddcf7156e5ef7d0c8d4d7">remmina_file_free</a></div><div class="ttdeci">void remmina_file_free(RemminaFile *remminafile)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00709">remmina_file.c:709</a></div></div>
<div class="ttc" id="types_8h_html"><div class="ttname"><a href="types_8h.html">types.h</a></div></div>
<div class="ttc" id="remmina__external__tools_8c_html_ae32c6ba6b03dffd2ccbf70ea7ab60c60"><div class="ttname"><a href="remmina__external__tools_8c.html#ae32c6ba6b03dffd2ccbf70ea7ab60c60">remmina_external_tools_launcher</a></div><div class="ttdeci">static gboolean remmina_external_tools_launcher(const gchar *filename, const gchar *scriptname, const gchar *shortname)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__external__tools_8c_source.html#l00102">remmina_external_tools.c:102</a></div></div>
<div class="ttc" id="remmina__external__tools_8c_html_abe70273f7d1cbab092c6f6017695c56d"><div class="ttname"><a href="remmina__external__tools_8c.html#abe70273f7d1cbab092c6f6017695c56d">remmina_external_tools_from_filename</a></div><div class="ttdeci">gboolean remmina_external_tools_from_filename(RemminaMain *remminamain, gchar *remminafilename)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__external__tools_8c_source.html#l00057">remmina_external_tools.c:57</a></div></div>
diff --git a/public/remmina__file_8c.html b/public/remmina__file_8c.html
index bacde1c24..25a3099df 100644
--- a/public/remmina__file_8c.html
+++ b/public/remmina__file_8c.html
@@ -202,7 +202,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l00231">231</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l00235">235</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
</div>
</div>
@@ -222,7 +222,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l00213">213</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l00217">217</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
</div>
</div>
@@ -242,7 +242,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l00900">900</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l00909">909</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
</div>
</div>
@@ -262,7 +262,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l00854">854</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l00863">863</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
</div>
</div>
@@ -292,7 +292,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l00888">888</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l00897">897</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
</div>
</div>
@@ -322,7 +322,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l00552">552</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l00561">561</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
</div>
</div>
@@ -342,7 +342,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l00700">700</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l00709">709</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
</div>
</div>
@@ -397,7 +397,7 @@ Variables</h2></td></tr>
<p>This is used to return the modification date of a file and it’s used to return the modification date and time of a given Remmina file. If it fails it will return "Fri, 16 Oct 2009 07:04:46 GMT", that is just a date to don't return an empty string (challenge: what was happened that day at that time?). </p><dl class="section return"><dt>Returns</dt><dd>A date string in the form "%d/%m/%Y %H:%M:%S". </dd></dl>
<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000004">Todo:</a></b></dt><dd>This should be moved to <a class="el" href="remmina__utils_8c.html">remmina_utils.c</a> </dd></dl>
-<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l01020">1020</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l01029">1029</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
</div>
</div>
@@ -433,7 +433,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l00620">620</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l00629">629</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
</div>
</div>
@@ -453,7 +453,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l00206">206</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l00210">210</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
</div>
</div>
@@ -473,7 +473,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l00874">874</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l00883">883</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
</div>
</div>
@@ -509,7 +509,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l00594">594</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l00603">603</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
</div>
</div>
@@ -537,7 +537,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l00671">671</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l00680">680</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
</div>
</div>
@@ -565,7 +565,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l00686">686</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l00695">695</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
</div>
</div>
@@ -595,7 +595,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l00542">542</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l00551">551</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
</div>
</div>
@@ -625,7 +625,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l00914">914</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l00923">923</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
</div>
</div>
@@ -661,7 +661,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l00646">646</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l00655">655</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
</div>
</div>
@@ -697,7 +697,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l00606">606</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l00615">615</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
</div>
</div>
@@ -727,7 +727,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l00507">507</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l00516">516</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
</div>
</div>
@@ -747,7 +747,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l00346">346</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l00350">350</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
</div>
</div>
@@ -815,7 +815,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l00719">719</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l00728">728</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
</div>
</div>
@@ -881,7 +881,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l00576">576</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l00585">585</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
</div>
</div>
@@ -917,7 +917,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l00496">496</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l00505">505</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
</div>
</div>
@@ -953,7 +953,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l00585">585</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l00594">594</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
</div>
</div>
@@ -1009,7 +1009,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l00463">463</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l00469">469</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
</div>
</div>
@@ -1029,7 +1029,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l00937">937</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l00946">946</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
</div>
</div>
@@ -1065,7 +1065,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l00835">835</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l00844">844</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
</div>
</div>
@@ -1089,7 +1089,7 @@ Variables</h2></td></tr>
<p>Function used to update the atime and mtime of a given remmina file, partially taken from suckless sbase </p><dl class="section see"><dt>See also</dt><dd><a href="https://git.suckless.org/sbase/tree/touch.c">https://git.suckless.org/sbase/tree/touch.c</a> </dd></dl>
<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000005">Todo:</a></b></dt><dd>This should be moved to <a class="el" href="remmina__utils_8c.html">remmina_utils.c</a> </dd></dl>
-<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l01089">1089</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l01103">1103</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
</div>
</div>
@@ -1109,7 +1109,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l00967">967</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l00976">976</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
</div>
</div>
@@ -1137,7 +1137,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l00287">287</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l00291">291</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
</div>
</div>
@@ -1187,7 +1187,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l00261">261</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l00265">265</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
</div>
</div>
diff --git a/public/remmina__file_8c_source.html b/public/remmina__file_8c_source.html
index 620ced84a..aede2cf04 100644
--- a/public/remmina__file_8c_source.html
+++ b/public/remmina__file_8c_source.html
@@ -86,23 +86,23 @@ $(document).ready(function(){initNavTree('remmina__file_8c_source.html','');});
<div class="title">remmina_file.c</div> </div>
</div><!--header-->
<div class="contents">
-<a href="remmina__file_8c.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * Remmina - The GTK+ Remote Desktop Client</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> * Copyright (C) 2009-2011 Vic Lee</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> * Copyright (C) 2014-2015 Antenore Gatta, Fabio Castelli, Giovanni Panozzo</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * Copyright (C) 2016-2022 Antenore Gatta, Giovanni Panozzo</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * (at your option) any later version.</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> * along with this program; if not, write to the Free Software</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> * Foundation, Inc., 51 Franklin Street, Fifth Floor,</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> * Boston, MA 02110-1301, USA.</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="comment"> * In addition, as a special exception, the copyright holders give</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment"> * permission to link the code of portions of this program with the</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"> * OpenSSL library under certain conditions as described in each</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> * individual source file, and distribute linked combinations</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> * including the two.</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * You must obey the GNU General Public License in all respects</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> * for all of the code used other than OpenSSL. * If you modify</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment"> * file(s) with this exception, you may extend this exception to your</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="comment"> * version of the file(s), but you are not obligated to do so. * If you</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="comment"> * do not wish to do so, delete this exception statement from your</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="comment"> * version. * If you delete this exception statement from all source</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="comment"> * files in the program, then also delete it here.</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="preprocessor">#include &quot;config.h&quot;</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="preprocessor">#include &lt;errno.h&gt;</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="preprocessor">#include &lt;fcntl.h&gt;</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="preprocessor">#include &lt;sys/stat.h&gt;</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="preprocessor">#include &lt;locale.h&gt;</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="preprocessor">#include &lt;langinfo.h&gt;</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="preprocessor">#include &lt;stdlib.h&gt;</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="preprocessor">#include &lt;string.h&gt;</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="preprocessor">#include &lt;time.h&gt;</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="preprocessor">#include &lt;unistd.h&gt;</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="preprocessor">#include &lt;utime.h&gt;</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="preprocessor">#include &lt;gtk/gtk.h&gt;</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;<span class="preprocessor">#include &lt;glib/gi18n.h&gt;</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="preprocessor">#include &lt;glib/gstdio.h&gt;</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__trace__calls_8h.html">remmina/remmina_trace_calls.h</a>&quot;</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__crypt_8h.html">remmina_crypt.h</a>&quot;</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__file__manager_8h.html">remmina_file_manager.h</a>&quot;</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__log_8h.html">remmina_log.h</a>&quot;</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__main_8h.html">remmina_main.h</a>&quot;</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__masterthread__exec_8h.html">remmina_masterthread_exec.h</a>&quot;</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__plugin__manager_8h.html">remmina_plugin_manager.h</a>&quot;</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__pref_8h.html">remmina_pref.h</a>&quot;</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__public_8h.html">remmina_public.h</a>&quot;</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__sodium_8h.html">remmina_sodium.h</a>&quot;</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__utils_8h.html">remmina_utils.h</a>&quot;</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;<span class="preprocessor">#define MIN_WINDOW_WIDTH 10</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;<span class="preprocessor">#define MIN_WINDOW_HEIGHT 10</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;<span class="preprocessor">#define KEYFILE_GROUP_REMMINA &quot;remmina&quot;</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;<span class="preprocessor">#define KEYFILE_GROUP_STATE &quot;Remmina Connection States&quot;</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;</div><div class="line"><a name="l00073"></a><span class="lineno"><a class="line" href="remmina__file_8c.html#a3793ec19ecbc8c8afc4d1dd8969f880d"> 73</a></span>&#160;<span class="keyword">static</span> <span class="keyword">struct </span>timespec <a class="code" href="remmina__file_8c.html#a3793ec19ecbc8c8afc4d1dd8969f880d">times</a>[2];</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;<span class="keyword">static</span> <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *</div><div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="remmina__file_8c.html#adab087b7139756f029020a87a5438cfa"> 76</a></span>&#160;<a class="code" href="remmina__file_8c.html#adab087b7139756f029020a87a5438cfa">remmina_file_new_empty</a>(<span class="keywordtype">void</span>)</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;{</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; remminafile = g_new0(<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a>, 1);</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; remminafile-&gt;settings = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; remminafile-&gt;states = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="comment">/* spsettings contains settings that are loaded from the secure_plugin.</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;<span class="comment"> * it’s used by remmina_file_store_secret_plugin_password() to know</span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;<span class="comment"> * where to change */</span></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; remminafile-&gt;spsettings = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; remminafile-&gt;prevent_saving = FALSE;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordflow">return</span> remminafile;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;}</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *</div><div class="line"><a name="l00093"></a><span class="lineno"><a class="line" href="remmina__file_8h.html#a5e421ba636d34e21bba5ece463e98892"> 93</a></span>&#160;<a class="code" href="remmina__file_8c.html#a5e421ba636d34e21bba5ece463e98892">remmina_file_new</a>(<span class="keywordtype">void</span>)</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;{</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="comment">/* Try to load from the preference file for default settings first */</span></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; remminafile = <a class="code" href="remmina__file_8c.html#ac1cc2d7f827f7d64c7fd3edf10e9383e">remmina_file_load</a>(<a class="code" href="rcw_8c.html#af657fd4825d16d8d003a8b42fbd0c715">remmina_pref_file</a>);</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keywordflow">if</span> (remminafile) {</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; g_free(remminafile-&gt;filename);</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; remminafile-&gt;filename = NULL;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; remminafile = <a class="code" href="remmina__file_8c.html#adab087b7139756f029020a87a5438cfa">remmina_file_new_empty</a>();</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; }</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="keywordflow">return</span> remminafile;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;}</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;</div><div class="line"><a name="l00114"></a><span class="lineno"><a class="line" href="remmina__file_8h.html#ac952f8ddb715314f11cef1ccc513fb7e"> 114</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__file_8c.html#ac952f8ddb715314f11cef1ccc513fb7e">remmina_file_generate_filename</a>(<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile)</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;{</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; gchar *invalid_chars = <span class="stringliteral">&quot;\\%|/$?&lt;&gt;:*. \&quot;&quot;</span>;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; GString *filenamestr;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keyword">const</span> gchar *s;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="comment">/* functions we can use</span></div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;<span class="comment"> * g_strstrip( string )</span></div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;<span class="comment"> * Removes leading and trailing whitespace from a string</span></div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;<span class="comment"> * g_strdelimit (str, invalid_chars, &#39;-&#39;))</span></div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;<span class="comment"> * Convert each invalid_chars in a hyphen</span></div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;<span class="comment"> * g_ascii_strdown(string)</span></div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;<span class="comment"> * all lowercase</span></div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;<span class="comment"> * To be safe we should remove control characters as well (but I&#39;m lazy)</span></div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;<span class="comment"> * https://rosettacode.org/wiki/Strip_control_codes_and_extended_characters_from_a_string#C</span></div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;<span class="comment"> * g_utf8_strncpy (gchar *dest, const gchar *src, gsize n);</span></div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;<span class="comment"> * copies a given number of characters instead of a given number of bytes. The src string must be valid UTF-8 encoded text.</span></div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;<span class="comment"> * g_utf8_validate (const gchar *str, gssize max_len, const gchar **end);</span></div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160;<span class="comment"> * Validates UTF-8 encoded text.</span></div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="comment">//g_free(remminafile-&gt;filename), remminafile-&gt;filename = NULL;</span></div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; filenamestr = g_string_new(g_strdup_printf(<span class="stringliteral">&quot;%s&quot;</span>,</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#aa1544a98f03088dc260ed98f2deac94f">remmina_file_name</a>));</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="keywordflow">if</span> ((s = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">&quot;name&quot;</span>)) == NULL) s = <span class="stringliteral">&quot;name&quot;</span>;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="keywordflow">if</span> (g_strstr_len(filenamestr-&gt;str, -1, <span class="stringliteral">&quot;%N&quot;</span>) != NULL)</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <a class="code" href="remmina__utils_8c.html#ac804e6111e538ee2fa425b8b6fd1fb66">remmina_utils_string_replace_all</a>(filenamestr, <span class="stringliteral">&quot;%N&quot;</span>, s);</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160;</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keywordflow">if</span> ((s = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">&quot;group&quot;</span>)) == NULL) s = <span class="stringliteral">&quot;group&quot;</span>;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="keywordflow">if</span> (g_strstr_len(filenamestr-&gt;str, -1, <span class="stringliteral">&quot;%G&quot;</span>) != NULL)</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <a class="code" href="remmina__utils_8c.html#ac804e6111e538ee2fa425b8b6fd1fb66">remmina_utils_string_replace_all</a>(filenamestr, <span class="stringliteral">&quot;%G&quot;</span>, s);</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="keywordflow">if</span> ((s = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">&quot;protocol&quot;</span>)) == NULL) s = <span class="stringliteral">&quot;proto&quot;</span>;</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="keywordflow">if</span> (g_strstr_len(filenamestr-&gt;str, -1, <span class="stringliteral">&quot;%P&quot;</span>) != NULL)</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <a class="code" href="remmina__utils_8c.html#ac804e6111e538ee2fa425b8b6fd1fb66">remmina_utils_string_replace_all</a>(filenamestr, <span class="stringliteral">&quot;%P&quot;</span>, s);</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <span class="keywordflow">if</span> ((s = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">&quot;server&quot;</span>)) == NULL) s = <span class="stringliteral">&quot;host&quot;</span>;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keywordflow">if</span> (g_strstr_len(filenamestr-&gt;str, -1, <span class="stringliteral">&quot;%h&quot;</span>) != NULL)</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <a class="code" href="remmina__utils_8c.html#ac804e6111e538ee2fa425b8b6fd1fb66">remmina_utils_string_replace_all</a>(filenamestr, <span class="stringliteral">&quot;%h&quot;</span>, s);</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; s = NULL;</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; g_autofree gchar *filename = g_strdelimit(g_ascii_strdown(g_strstrip(g_string_free(filenamestr, FALSE)), -1),</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; invalid_chars, <span class="charliteral">&#39;-&#39;</span>);</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; GDir *dir = g_dir_open(<a class="code" href="remmina__file__manager_8c.html#aa65bc30beb59d607ba430d966e7e27f5">remmina_file_get_datadir</a>(), 0, NULL);</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <span class="keywordflow">if</span> (dir != NULL)</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; remminafile-&gt;filename = g_strdup_printf(<span class="stringliteral">&quot;%s/%s.remmina&quot;</span>, <a class="code" href="remmina__file__manager_8c.html#aa65bc30beb59d607ba430d966e7e27f5">remmina_file_get_datadir</a>(), filename);</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; remminafile-&gt;filename = NULL;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; g_dir_close(dir);</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;}</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160;</div><div class="line"><a name="l00182"></a><span class="lineno"><a class="line" href="remmina__file_8h.html#ab03b042504c09c1ad880ac126a703114"> 182</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__file_8c.html#ab03b042504c09c1ad880ac126a703114">remmina_file_set_filename</a>(<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile, <span class="keyword">const</span> gchar *filename)</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160;{</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; g_free(remminafile-&gt;filename);</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; remminafile-&gt;filename = g_strdup(filename);</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160;}</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160;</div><div class="line"><a name="l00189"></a><span class="lineno"><a class="line" href="remmina__file_8h.html#aeefa562baee867fba8c06165ae656de1"> 189</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__file_8c.html#aeefa562baee867fba8c06165ae656de1">remmina_file_set_statefile</a>(<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile)</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160;{</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160;</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="keywordflow">if</span> (!remminafile)</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; g_free(remminafile-&gt;statefile);</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; gchar *basename = g_path_get_basename(remminafile-&gt;filename);</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; gchar *<a class="code" href="remmina__file__manager_8c.html#ace1098aad45256ac0b0155cb042472e9">cachedir</a> = g_build_path(<span class="stringliteral">&quot;/&quot;</span>, g_get_user_cache_dir(), <span class="stringliteral">&quot;remmina&quot;</span>, NULL);</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; GString *fname = g_string_new(g_strdup(basename));</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160;</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; remminafile-&gt;statefile = g_strdup_printf(<span class="stringliteral">&quot;%s/%s.state&quot;</span>, cachedir, fname-&gt;str);</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160;}</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160;</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160;<span class="keyword">const</span> gchar *</div><div class="line"><a name="l00206"></a><span class="lineno"><a class="line" href="remmina__file_8h.html#ad1e4f3a0f64cd98e301044b6c38a1f1d"> 206</a></span>&#160;<a class="code" href="remmina__file_8c.html#ad1e4f3a0f64cd98e301044b6c38a1f1d">remmina_file_get_filename</a>(<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile)</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160;{</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; <span class="keywordflow">return</span> remminafile-&gt;filename;</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160;}</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160;</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160;<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *</div><div class="line"><a name="l00213"></a><span class="lineno"><a class="line" href="remmina__file_8h.html#ac1685edf35a793a396ce039d7eec5343"> 213</a></span>&#160;<a class="code" href="remmina__file_8c.html#ac1685edf35a793a396ce039d7eec5343">remmina_file_copy</a>(<span class="keyword">const</span> gchar *filename)</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160;{</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile;</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; gchar *buf;</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160;</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; remminafile = <a class="code" href="remmina__file_8c.html#ac1cc2d7f827f7d64c7fd3edf10e9383e">remmina_file_load</a>(filename);</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; buf = g_strdup_printf( <span class="stringliteral">&quot;COPY %s&quot;</span>,</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">&quot;name&quot;</span>));</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, <span class="stringliteral">&quot;name&quot;</span>, buf);</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; g_free(buf);</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160;</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <span class="keywordflow">if</span> (remminafile)</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <a class="code" href="remmina__file_8c.html#ac952f8ddb715314f11cef1ccc513fb7e">remmina_file_generate_filename</a>(remminafile);</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160;</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="keywordflow">return</span> remminafile;</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160;}</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160;</div><div class="line"><a name="l00231"></a><span class="lineno"><a class="line" href="remmina__file_8c.html#a1399e5b83aa040b6613cf98be45b4c99"> 231</a></span>&#160;<span class="keyword">const</span> <a class="code" href="struct___remmina_protocol_setting.html">RemminaProtocolSetting</a> *<a class="code" href="remmina__file_8c.html#a1399e5b83aa040b6613cf98be45b4c99">find_protocol_setting</a>(<span class="keyword">const</span> gchar *name, <a class="code" href="struct___remmina_protocol_plugin.html">RemminaProtocolPlugin</a> *protocol_plugin)</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160;{</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <span class="keyword">const</span> <a class="code" href="struct___remmina_protocol_setting.html">RemminaProtocolSetting</a> *setting_iter;</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160;</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <span class="keywordflow">if</span> (protocol_plugin == NULL)</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160;</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; setting_iter = protocol_plugin-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#aae09a7e2c978cc36e85d0f295518978d">basic_settings</a>;</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <span class="keywordflow">if</span> (setting_iter) {</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; <span class="keywordflow">while</span> (setting_iter-&gt;<a class="code" href="struct___remmina_protocol_setting.html#a6274d44b592a54162ff583135e55ffc9">type</a> != <a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350ad898beb6ae625dee1ae27de75f1ab4e3">REMMINA_PROTOCOL_SETTING_TYPE_END</a>) {</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <span class="keywordflow">if</span> (strcmp(name, <a class="code" href="remmina__plugin__manager_8c.html#af60b8edfa50563ae4c7593efc3deed55">remmina_plugin_manager_get_canonical_setting_name</a>(setting_iter)) == 0)</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; <span class="keywordflow">return</span> setting_iter;</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; setting_iter++;</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; }</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; }</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160;</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; setting_iter = protocol_plugin-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#aceb00d9dff794500ccb04a1373eb32db">advanced_settings</a>;</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <span class="keywordflow">if</span> (setting_iter) {</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; <span class="keywordflow">while</span> (setting_iter-&gt;<a class="code" href="struct___remmina_protocol_setting.html#a6274d44b592a54162ff583135e55ffc9">type</a> != <a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350ad898beb6ae625dee1ae27de75f1ab4e3">REMMINA_PROTOCOL_SETTING_TYPE_END</a>) {</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; <span class="keywordflow">if</span> (strcmp(name, <a class="code" href="remmina__plugin__manager_8c.html#af60b8edfa50563ae4c7593efc3deed55">remmina_plugin_manager_get_canonical_setting_name</a>(setting_iter)) == 0)</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <span class="keywordflow">return</span> setting_iter;</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; setting_iter++;</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; }</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; }</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160;</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160;}</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160;</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160;</div><div class="line"><a name="l00261"></a><span class="lineno"><a class="line" href="remmina__file_8c.html#a42231fba69c82eb51a4e210c2de76960"> 261</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__file_8c.html#a42231fba69c82eb51a4e210c2de76960">upgrade_sshkeys_202001_mig_common_setting</a>(<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile, gboolean protocol_is_ssh, gboolean ssh_enabled, gchar *suffix)</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160;{</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; gchar *src_key;</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; gchar *dst_key;</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <span class="keyword">const</span> gchar *val;</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160;</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; src_key = g_strdup_printf(<span class="stringliteral">&quot;ssh_%s&quot;</span>, suffix);</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; dst_key = g_strdup_printf(<span class="stringliteral">&quot;ssh_tunnel_%s&quot;</span>, suffix);</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160;</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; val = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, src_key);</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; <span class="keywordflow">if</span> (!val) {</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; g_free(dst_key);</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; g_free(src_key);</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; }</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160;</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; <span class="keywordflow">if</span> (ssh_enabled &amp;&amp; val &amp;&amp; val[0] != 0)</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, dst_key, val);</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160;</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; <span class="keywordflow">if</span> (!protocol_is_ssh)</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, src_key, NULL);</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160;</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; g_free(dst_key);</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; g_free(src_key);</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160;}</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160;</div><div class="line"><a name="l00287"></a><span class="lineno"><a class="line" href="remmina__file_8c.html#a3feeafd4956b364975aef178ef99b7a6"> 287</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__file_8c.html#a3feeafd4956b364975aef178ef99b7a6">upgrade_sshkeys_202001</a>(<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile)</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160;{</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160;</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; gboolean protocol_is_ssh;</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; gboolean ssh_enabled;</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <span class="keyword">const</span> gchar *val;</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160;</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">&quot;ssh_enabled&quot;</span>)) {</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; <span class="comment">/* Upgrade ssh params from remmina pre 1.4 */</span></div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160;</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; ssh_enabled = <a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(remminafile, <span class="stringliteral">&quot;ssh_enabled&quot;</span>, 0);</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; val = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">&quot;protocol&quot;</span>);</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; protocol_is_ssh = (strcmp(val, <span class="stringliteral">&quot;SSH&quot;</span>) == 0);</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160;</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; <a class="code" href="remmina__file_8c.html#a42231fba69c82eb51a4e210c2de76960">upgrade_sshkeys_202001_mig_common_setting</a>(remminafile, protocol_is_ssh, ssh_enabled, <span class="stringliteral">&quot;stricthostkeycheck&quot;</span>);</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; <a class="code" href="remmina__file_8c.html#a42231fba69c82eb51a4e210c2de76960">upgrade_sshkeys_202001_mig_common_setting</a>(remminafile, protocol_is_ssh, ssh_enabled, <span class="stringliteral">&quot;kex_algorithms&quot;</span>);</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; <a class="code" href="remmina__file_8c.html#a42231fba69c82eb51a4e210c2de76960">upgrade_sshkeys_202001_mig_common_setting</a>(remminafile, protocol_is_ssh, ssh_enabled, <span class="stringliteral">&quot;hostkeytypes&quot;</span>);</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <a class="code" href="remmina__file_8c.html#a42231fba69c82eb51a4e210c2de76960">upgrade_sshkeys_202001_mig_common_setting</a>(remminafile, protocol_is_ssh, ssh_enabled, <span class="stringliteral">&quot;ciphers&quot;</span>);</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; <a class="code" href="remmina__file_8c.html#a42231fba69c82eb51a4e210c2de76960">upgrade_sshkeys_202001_mig_common_setting</a>(remminafile, protocol_is_ssh, ssh_enabled, <span class="stringliteral">&quot;proxycommand&quot;</span>);</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; <a class="code" href="remmina__file_8c.html#a42231fba69c82eb51a4e210c2de76960">upgrade_sshkeys_202001_mig_common_setting</a>(remminafile, protocol_is_ssh, ssh_enabled, <span class="stringliteral">&quot;passphrase&quot;</span>);</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; <a class="code" href="remmina__file_8c.html#a42231fba69c82eb51a4e210c2de76960">upgrade_sshkeys_202001_mig_common_setting</a>(remminafile, protocol_is_ssh, ssh_enabled, <span class="stringliteral">&quot;auth&quot;</span>);</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <a class="code" href="remmina__file_8c.html#a42231fba69c82eb51a4e210c2de76960">upgrade_sshkeys_202001_mig_common_setting</a>(remminafile, protocol_is_ssh, ssh_enabled, <span class="stringliteral">&quot;privatekey&quot;</span>);</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160;</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; val = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">&quot;ssh_loopback&quot;</span>);</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; <span class="keywordflow">if</span> (val) {</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, <span class="stringliteral">&quot;ssh_tunnel_loopback&quot;</span>, val);</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, <span class="stringliteral">&quot;ssh_loopback&quot;</span>, NULL);</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; }</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160;</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; val = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">&quot;ssh_username&quot;</span>);</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; <span class="keywordflow">if</span> (val) {</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, <span class="stringliteral">&quot;ssh_tunnel_username&quot;</span>, val);</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; <span class="keywordflow">if</span> (protocol_is_ssh)</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, <span class="stringliteral">&quot;username&quot;</span>, val);</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, <span class="stringliteral">&quot;ssh_username&quot;</span>, NULL);</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; }</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160;</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; val = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">&quot;ssh_password&quot;</span>);</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; <span class="keywordflow">if</span> (val) {</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, <span class="stringliteral">&quot;ssh_tunnel_password&quot;</span>, val);</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; <span class="keywordflow">if</span> (protocol_is_ssh)</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, <span class="stringliteral">&quot;password&quot;</span>, val);</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, <span class="stringliteral">&quot;ssh_password&quot;</span>, NULL);</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; }</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160;</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; val = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">&quot;ssh_server&quot;</span>);</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; <span class="keywordflow">if</span> (val) {</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, <span class="stringliteral">&quot;ssh_tunnel_server&quot;</span>, val);</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, <span class="stringliteral">&quot;ssh_server&quot;</span>, NULL);</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; }</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160;</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; <span class="comment">/* Real key removal will be done by remmina_file_save() */</span></div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160;</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; <a class="code" href="remmina__file_8c.html#af153b0d289ac93f6ecdaa15d5f3b9b8c">remmina_file_set_int</a>(remminafile, <span class="stringliteral">&quot;ssh_tunnel_enabled&quot;</span>, ssh_enabled);</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; }</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160;}</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160;</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160;<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *</div><div class="line"><a name="l00346"></a><span class="lineno"><a class="line" href="remmina__file_8h.html#ac1cc2d7f827f7d64c7fd3edf10e9383e"> 346</a></span>&#160;<a class="code" href="remmina__file_8c.html#ac1cc2d7f827f7d64c7fd3edf10e9383e">remmina_file_load</a>(<span class="keyword">const</span> gchar *filename)</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160;{</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; GKeyFile *gkeyfile;</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile;</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; gchar *key;</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; gchar *s;</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; <a class="code" href="struct___remmina_protocol_plugin.html">RemminaProtocolPlugin</a> *protocol_plugin;</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; <a class="code" href="struct___remmina_secret_plugin.html">RemminaSecretPlugin</a> *secret_plugin;</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; gboolean secret_service_available;</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; <span class="keywordtype">int</span> w, h;</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160;</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; gkeyfile = g_key_file_new();</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160;</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; <span class="keywordflow">if</span> (g_file_test(filename, G_FILE_TEST_IS_REGULAR | G_FILE_TEST_EXISTS)) {</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; <span class="keywordflow">if</span> (!g_key_file_load_from_file(gkeyfile, filename, G_KEY_FILE_NONE, NULL)) {</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; g_key_file_free(gkeyfile);</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Unable to load remmina profile file %s: g_key_file_load_from_file() returned NULL.\n&quot;</span>, filename);</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; }</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; }</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160;</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; <span class="keywordflow">if</span> (!g_key_file_has_key(gkeyfile, KEYFILE_GROUP_REMMINA, <span class="stringliteral">&quot;name&quot;</span>, NULL)) {</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160;</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Unable to load remmina profile file %s: cannot find key name= in section remmina.\n&quot;</span>, filename);</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; remminafile = NULL;</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; <a class="code" href="remmina__file_8c.html#aeefa562baee867fba8c06165ae656de1">remmina_file_set_statefile</a>(remminafile);</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160;</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; g_key_file_free(gkeyfile);</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160;</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; <span class="keywordflow">return</span> remminafile;</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; }</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; remminafile = <a class="code" href="remmina__file_8c.html#adab087b7139756f029020a87a5438cfa">remmina_file_new_empty</a>();</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160;</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; protocol_plugin = NULL;</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160;</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; <span class="comment">/* Identify the protocol plugin and get pointers to its RemminaProtocolSetting structs */</span></div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; gchar *proto = g_key_file_get_string(gkeyfile, KEYFILE_GROUP_REMMINA, <span class="stringliteral">&quot;protocol&quot;</span>, NULL);</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; <span class="keywordflow">if</span> (proto) {</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; protocol_plugin = (<a class="code" href="struct___remmina_protocol_plugin.html">RemminaProtocolPlugin</a> *)<a class="code" href="remmina__plugin__manager_8c.html#a3872c8656a8a3d5147bcc603471c1932">remmina_plugin_manager_get_plugin</a>(<a class="code" href="plugin_8h.html#aaf53c620d115a4642130227cff4a624aa45e094c248384c12cdafd9d088e4aa24">REMMINA_PLUGIN_TYPE_PROTOCOL</a>, proto);</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; g_free(proto);</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; }</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160;</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; secret_plugin = <a class="code" href="remmina__plugin__manager_8c.html#ad380a98f6624aa8c830015c8b428b7b4">remmina_plugin_manager_get_secret_plugin</a>();</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; secret_service_available = secret_plugin &amp;&amp; secret_plugin-&gt;<a class="code" href="struct___remmina_secret_plugin.html#a2123e14795b104f5fe8d77a4b7847261">is_service_available</a>(secret_plugin);</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160;</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; remminafile-&gt;filename = g_strdup(filename);</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; gsize nkeys = 0;</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; gint keyindex;</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; GError *err = NULL;</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; gchar **keys = g_key_file_get_keys(gkeyfile, KEYFILE_GROUP_REMMINA, &amp;nkeys, &amp;err);</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; <span class="keywordflow">if</span> (keys == NULL) {</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; g_clear_error(&amp;err);</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; }</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; <span class="keywordflow">for</span> (keyindex = 0; keyindex &lt; nkeys; ++keyindex) {</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; key = keys[keyindex];</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; <span class="comment">/* It may contain an encrypted password</span></div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160;<span class="comment"> * - password = . // secret_service</span></div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160;<span class="comment"> * - password = $argon2id$v=19$m=262144,t=3,p=… // libsodium</span></div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; <span class="keywordflow">if</span> (protocol_plugin &amp;&amp; <a class="code" href="remmina__plugin__manager_8c.html#aef243c58b9e8c778232d5acb32c7729b">remmina_plugin_manager_is_encrypted_setting</a>(protocol_plugin, key)) {</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; s = g_key_file_get_string(gkeyfile, KEYFILE_GROUP_REMMINA, key, NULL);</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160;<span class="preprocessor">#if 0</span></div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; <span class="keywordflow">switch</span> (<a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a788378c190a4ec0ebcf60c570f3b50d5">enc_mode</a>) {</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; <span class="keywordflow">case</span> <a class="code" href="remmina__pref_8h.html#ab48899087cc647f0f791ed0c459adc53a90f2025ec8d2c4987db5591e8e3b4076">RM_ENC_MODE_SODIUM_INTERACTIVE</a>:</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; <span class="keywordflow">case</span> <a class="code" href="remmina__pref_8h.html#ab48899087cc647f0f791ed0c459adc53ad5263951640011bc43bd8a31f67a9f8b">RM_ENC_MODE_SODIUM_MODERATE</a>:</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; <span class="keywordflow">case</span> <a class="code" href="remmina__pref_8h.html#ab48899087cc647f0f791ed0c459adc53a0378e0f09c7bc6fd7f8d95b3827ad561">RM_ENC_MODE_SODIUM_SENSITIVE</a>:</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160;<span class="preprocessor">#if SODIUM_VERSION_INT &gt;= 90200</span></div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; <span class="keywordflow">case</span> <a class="code" href="remmina__pref_8h.html#ab48899087cc647f0f791ed0c459adc53a315a71c81da464332f675857ae84b880">RM_ENC_MODE_GCRYPT</a>:</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; <span class="keywordflow">case</span> <a class="code" href="remmina__pref_8h.html#ab48899087cc647f0f791ed0c459adc53aa57e81572c52d0ea2bbb8dd90b10651a">RM_ENC_MODE_SECRET</a>:</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; }</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; <span class="keywordflow">if</span> ((g_strcmp0(s, <span class="stringliteral">&quot;.&quot;</span>) == 0) &amp;&amp; (secret_service_available)) {</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; gchar *sec = secret_plugin-&gt;<a class="code" href="struct___remmina_secret_plugin.html#a34defea2606bbc99a2c334f57e056b06">get_password</a>(secret_plugin, remminafile, key);</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, key, sec);</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; <span class="comment">/* Annotate in spsettings that this value comes from secret_plugin */</span></div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; g_hash_table_insert(remminafile-&gt;spsettings, g_strdup(key), NULL);</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; g_free(sec);</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; gchar *decrypted;</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; decrypted = <a class="code" href="remmina__crypt_8c.html#a3fe2fa245d401146adf02a3a8f996ab9">remmina_crypt_decrypt</a>(s);</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, key, decrypted);</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; g_free(decrypted);</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; }</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; g_free(s), s = NULL;</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; <span class="comment">/* If we find &quot;resolution&quot;, then we split it in two */</span></div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; <span class="keywordflow">if</span> (strcmp(key, <span class="stringliteral">&quot;resolution&quot;</span>) == 0) {</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; gchar *resolution_str = g_key_file_get_string(gkeyfile, KEYFILE_GROUP_REMMINA, key, NULL);</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="remmina__public_8c.html#aaf3fdb980c24cd06965b85ebcdd79173">remmina_public_split_resolution_string</a>(resolution_str, &amp;w, &amp;h)) {</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; gchar *buf;</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; buf = g_strdup_printf(<span class="stringliteral">&quot;%i&quot;</span>, w); <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, <span class="stringliteral">&quot;resolution_width&quot;</span>, buf); g_free(buf);</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; buf = g_strdup_printf(<span class="stringliteral">&quot;%i&quot;</span>, h); <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, <span class="stringliteral">&quot;resolution_height&quot;</span>, buf); g_free(buf);</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, <span class="stringliteral">&quot;resolution_width&quot;</span>, NULL);</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, <span class="stringliteral">&quot;resolution_height&quot;</span>, NULL);</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; }</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; g_free(resolution_str);</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, key,</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; g_key_file_get_string(gkeyfile, KEYFILE_GROUP_REMMINA, key, NULL));</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; }</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; }</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; }</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160;</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; <a class="code" href="remmina__file_8c.html#a3feeafd4956b364975aef178ef99b7a6">upgrade_sshkeys_202001</a>(remminafile);</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; g_strfreev(keys);</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; <a class="code" href="remmina__file_8c.html#aeefa562baee867fba8c06165ae656de1">remmina_file_set_statefile</a>(remminafile);</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; g_key_file_free(gkeyfile);</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; <span class="keywordflow">return</span> remminafile;</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160;}</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160;</div><div class="line"><a name="l00463"></a><span class="lineno"><a class="line" href="remmina__file_8h.html#a85ca1ca2d0bf9ef29e490c6f4527a954"> 463</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile, <span class="keyword">const</span> gchar *setting, <span class="keyword">const</span> gchar *value)</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160;{</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160;</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="remmina__masterthread__exec_8c.html#a3a52e863a3a3da6da6bb5d36c13b7ff4">remmina_masterthread_exec_is_main_thread</a>()) {</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; <span class="comment">/* Allow the execution of this function from a non main thread</span></div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160;<span class="comment"> * (plugins needs it to have user credentials)*/</span></div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; <a class="code" href="structremmina__masterthread__exec__data.html">RemminaMTExecData</a> *d;</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; d = (<a class="code" href="structremmina__masterthread__exec__data.html">RemminaMTExecData</a> *)g_malloc(<span class="keyword">sizeof</span>(<a class="code" href="structremmina__masterthread__exec__data.html">RemminaMTExecData</a>));</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#ab3d58f7a9847ce04c9dcd3917910fdb1">func</a> = FUNC_FILE_SET_STRING;</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#af4aac360c396741c659474158d7c0e87">file_set_string</a>.remminafile = remminafile;</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#af4aac360c396741c659474158d7c0e87">file_set_string</a>.setting = setting;</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#af4aac360c396741c659474158d7c0e87">file_set_string</a>.value = value;</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; <a class="code" href="remmina__masterthread__exec_8c.html#a14628c2470cac50e87916a70ea05c97d">remmina_masterthread_exec_and_wait</a>(d);</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; g_free(d);</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; }</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160;</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; <span class="keywordflow">if</span> (value) {</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; <span class="comment">/* We refuse to accept to set the &quot;resolution&quot; field */</span></div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; <span class="keywordflow">if</span> (strcmp(setting, <span class="stringliteral">&quot;resolution&quot;</span>) == 0) {</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; <span class="comment">// TRANSLATORS: This is a message that pops up when an external Remmina plugin tries to set the window resolution using a legacy parameter.</span></div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; <span class="keyword">const</span> gchar *message = _(<span class="stringliteral">&quot;Using the «resolution» parameter in the Remmina preferences file is deprecated.\n&quot;</span>);</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; REMMINA_CRITICAL(message);</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; <a class="code" href="remmina__main_8c.html#ad99b9c0bf2fa8c166a8b4a09e06ffdf7">remmina_main_show_warning_dialog</a>(message);</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; }</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; g_hash_table_insert(remminafile-&gt;settings, g_strdup(setting), g_strdup(value));</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; g_hash_table_insert(remminafile-&gt;settings, g_strdup(setting), g_strdup(<span class="stringliteral">&quot;&quot;</span>));</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; }</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160;}</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160;</div><div class="line"><a name="l00496"></a><span class="lineno"><a class="line" href="remmina__file_8h.html#a2c41790e4881335bf934b6c10f94f29d"> 496</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__file_8c.html#a2c41790e4881335bf934b6c10f94f29d">remmina_file_set_state</a>(<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile, <span class="keyword">const</span> gchar *setting, <span class="keyword">const</span> gchar *value)</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160;{</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160;</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; <span class="keywordflow">if</span> (value &amp;&amp; value[0] != 0)</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; g_hash_table_insert(remminafile-&gt;states, g_strdup(setting), g_strdup(value));</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; g_hash_table_insert(remminafile-&gt;states, g_strdup(setting), g_strdup(<span class="stringliteral">&quot;&quot;</span>));</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160;}</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160;</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160;<span class="keyword">const</span> gchar *</div><div class="line"><a name="l00507"></a><span class="lineno"><a class="line" href="remmina__file_8h.html#a8eb1b213d9d08c6ad13683ce05f4355e"> 507</a></span>&#160;<a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile, <span class="keyword">const</span> gchar *setting)</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160;{</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; gchar *value;</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160;</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; <span class="comment">/* Returned value is a pointer to the string stored on the hash table,</span></div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160;<span class="comment"> * please do not free it or the hash table will contain invalid pointer */</span></div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="remmina__masterthread__exec_8c.html#a3a52e863a3a3da6da6bb5d36c13b7ff4">remmina_masterthread_exec_is_main_thread</a>()) {</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; <span class="comment">/* Allow the execution of this function from a non main thread</span></div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160;<span class="comment"> * (plugins needs it to have user credentials)*/</span></div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; <a class="code" href="structremmina__masterthread__exec__data.html">RemminaMTExecData</a> *d;</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; <span class="keyword">const</span> gchar *retval;</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; d = (<a class="code" href="structremmina__masterthread__exec__data.html">RemminaMTExecData</a> *)g_malloc(<span class="keyword">sizeof</span>(<a class="code" href="structremmina__masterthread__exec__data.html">RemminaMTExecData</a>));</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#ab3d58f7a9847ce04c9dcd3917910fdb1">func</a> = FUNC_FILE_GET_STRING;</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#ac76a0900842e936efdd2add9ec352886">file_get_string</a>.remminafile = remminafile;</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#ac76a0900842e936efdd2add9ec352886">file_get_string</a>.setting = setting;</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; <a class="code" href="remmina__masterthread__exec_8c.html#a14628c2470cac50e87916a70ea05c97d">remmina_masterthread_exec_and_wait</a>(d);</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; retval = d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#ac76a0900842e936efdd2add9ec352886">file_get_string</a>.retval;</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; g_free(d);</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; <span class="keywordflow">return</span> retval;</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; }</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160;</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; <span class="keywordflow">if</span> (strcmp(setting, <span class="stringliteral">&quot;resolution&quot;</span>) == 0) {</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; <span class="comment">// TRANSLATORS: This is a message that pop-up when an external Remmina plugin tries to set the windows resolution using a legacy parameter.</span></div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; <span class="keyword">const</span> gchar *message = _(<span class="stringliteral">&quot;Using the «resolution» parameter in the Remmina preferences file is deprecated.\n&quot;</span>);</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; REMMINA_CRITICAL(message);</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; <a class="code" href="remmina__main_8c.html#ad99b9c0bf2fa8c166a8b4a09e06ffdf7">remmina_main_show_warning_dialog</a>(message);</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; }</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160;</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; value = (gchar *)g_hash_table_lookup(remminafile-&gt;settings, setting);</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; <span class="keywordflow">return</span> value &amp;&amp; value[0] ? value : NULL;</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160;}</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160;</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160;gchar *</div><div class="line"><a name="l00542"></a><span class="lineno"><a class="line" href="remmina__file_8h.html#ad514c2523ff0c919ddf535e3dbad9f3a"> 542</a></span>&#160;<a class="code" href="remmina__file_8c.html#ad514c2523ff0c919ddf535e3dbad9f3a">remmina_file_get_secret</a>(<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile, <span class="keyword">const</span> gchar *setting)</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160;{</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160;</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; <span class="comment">/* This function is in the RemminaPluginService table, we cannot remove it</span></div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160;<span class="comment"> * without breaking plugin API */</span></div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; g_warning(<span class="stringliteral">&quot;remmina_file_get_secret(remminafile,“%s”) is deprecated and must not be called. Use remmina_file_get_string() and do not deallocate returned memory.\n&quot;</span>, setting);</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; <span class="keywordflow">return</span> g_strdup(<a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, setting));</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160;}</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160;</div><div class="line"><a name="l00552"></a><span class="lineno"><a class="line" href="remmina__file_8h.html#afd8b12f3d84b4e201b9f465d5b8e0d03"> 552</a></span>&#160;gchar *<a class="code" href="remmina__file_8c.html#afd8b12f3d84b4e201b9f465d5b8e0d03">remmina_file_format_properties</a>(<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile, <span class="keyword">const</span> gchar *setting)</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160;{</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; gchar *res = NULL;</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; GString *fmt_str;</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; GDateTime *now;</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; gchar *date_str = NULL;</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160;</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; fmt_str = g_string_new(setting);</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; <a class="code" href="remmina__utils_8c.html#ac804e6111e538ee2fa425b8b6fd1fb66">remmina_utils_string_replace_all</a>(fmt_str, <span class="stringliteral">&quot;%h&quot;</span>, <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">&quot;server&quot;</span>));</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; <a class="code" href="remmina__utils_8c.html#ac804e6111e538ee2fa425b8b6fd1fb66">remmina_utils_string_replace_all</a>(fmt_str, <span class="stringliteral">&quot;%t&quot;</span>, <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">&quot;ssh_tunnel_server&quot;</span>));</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; <a class="code" href="remmina__utils_8c.html#ac804e6111e538ee2fa425b8b6fd1fb66">remmina_utils_string_replace_all</a>(fmt_str, <span class="stringliteral">&quot;%u&quot;</span>, <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">&quot;username&quot;</span>));</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; <a class="code" href="remmina__utils_8c.html#ac804e6111e538ee2fa425b8b6fd1fb66">remmina_utils_string_replace_all</a>(fmt_str, <span class="stringliteral">&quot;%U&quot;</span>, <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">&quot;ssh_tunnel_username&quot;</span>));</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; <a class="code" href="remmina__utils_8c.html#ac804e6111e538ee2fa425b8b6fd1fb66">remmina_utils_string_replace_all</a>(fmt_str, <span class="stringliteral">&quot;%p&quot;</span>, <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">&quot;name&quot;</span>));</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; <a class="code" href="remmina__utils_8c.html#ac804e6111e538ee2fa425b8b6fd1fb66">remmina_utils_string_replace_all</a>(fmt_str, <span class="stringliteral">&quot;%g&quot;</span>, <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">&quot;group&quot;</span>));</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160;</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; now = g_date_time_new_now_local();</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; date_str = g_date_time_format(now, <span class="stringliteral">&quot;%FT%TZ&quot;</span>);</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; <a class="code" href="remmina__utils_8c.html#ac804e6111e538ee2fa425b8b6fd1fb66">remmina_utils_string_replace_all</a>(fmt_str, <span class="stringliteral">&quot;%d&quot;</span>, date_str);</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; g_free(date_str);</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160;</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; res = g_string_free(fmt_str, FALSE);</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; <span class="keywordflow">return</span> res;</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160;}</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160;</div><div class="line"><a name="l00576"></a><span class="lineno"><a class="line" href="remmina__file_8h.html#af153b0d289ac93f6ecdaa15d5f3b9b8c"> 576</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__file_8c.html#af153b0d289ac93f6ecdaa15d5f3b9b8c">remmina_file_set_int</a>(<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile, <span class="keyword">const</span> gchar *setting, gint value)</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160;{</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; <span class="keywordflow">if</span> (remminafile)</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; g_hash_table_insert(remminafile-&gt;settings,</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; g_strdup(setting),</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; g_strdup_printf(<span class="stringliteral">&quot;%i&quot;</span>, value));</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160;}</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160;</div><div class="line"><a name="l00585"></a><span class="lineno"><a class="line" href="remmina__file_8h.html#ac1089fb270a526fa8a4d1bf65ad4d14e"> 585</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__file_8c.html#ac1089fb270a526fa8a4d1bf65ad4d14e">remmina_file_set_state_int</a>(<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile, <span class="keyword">const</span> gchar *setting, gint value)</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160;{</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; <span class="keywordflow">if</span> (remminafile)</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; g_hash_table_insert(remminafile-&gt;states,</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; g_strdup(setting),</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; g_strdup_printf(<span class="stringliteral">&quot;%i&quot;</span>, value));</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160;}</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160;</div><div class="line"><a name="l00594"></a><span class="lineno"><a class="line" href="remmina__file_8h.html#a4884356c195dcfb4ceacf641a1e74e66"> 594</a></span>&#160;gint <a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile, <span class="keyword">const</span> gchar *setting, gint default_value)</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160;{</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; gchar *value;</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; gint r;</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160;</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; value = g_hash_table_lookup(remminafile-&gt;settings, setting);</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; r = value == NULL ? default_value : (value[0] == <span class="charliteral">&#39;t&#39;</span> ? TRUE : atoi(value));</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; <span class="comment">// TOO verbose: REMMINA_DEBUG (&quot;Integer value is: %d&quot;, r);</span></div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; <span class="keywordflow">return</span> r;</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160;}</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160;</div><div class="line"><a name="l00606"></a><span class="lineno"><a class="line" href="remmina__file_8h.html#aba0aa663aaad89e4df41b42259d29841"> 606</a></span>&#160;gint <a class="code" href="remmina__file_8c.html#aba0aa663aaad89e4df41b42259d29841">remmina_file_get_state_int</a>(<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile, <span class="keyword">const</span> gchar *setting, gint default_value)</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160;{</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; gchar *value;</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; gint r;</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160;</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; value = g_hash_table_lookup(remminafile-&gt;states, setting);</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; r = value == NULL ? default_value : (value[0] == <span class="charliteral">&#39;t&#39;</span> ? TRUE : atoi(value));</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; <span class="comment">// TOO verbose: REMMINA_DEBUG (&quot;Integer value is: %d&quot;, r);</span></div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; <span class="keywordflow">return</span> r;</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160;}</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160;</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160;<span class="comment">// sscanf uses the set language to convert the float.</span></div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160;<span class="comment">// therefore &#39;.&#39; and &#39;,&#39; cannot be used interchangeably.</span></div><div class="line"><a name="l00620"></a><span class="lineno"><a class="line" href="remmina__file_8c.html#a4e31f91e2398f16844f58c1cf13582da"> 620</a></span>&#160;gdouble <a class="code" href="remmina__file_8c.html#a4e31f91e2398f16844f58c1cf13582da">remmina_file_get_double</a>(<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> * remminafile,</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; <span class="keyword">const</span> gchar * setting,</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; gdouble default_value)</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160;{</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; gchar *value;</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160;</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; value = g_hash_table_lookup(remminafile-&gt;settings, setting);</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; <span class="keywordflow">if</span> (!value)</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; <span class="keywordflow">return</span> default_value;</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160;</div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; <span class="comment">// str to double.</span></div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; <span class="comment">// https://stackoverflow.com/questions/10075294/converting-string-to-a-double-variable-in-c</span></div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; gdouble d;</div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; gint ret = sscanf(value, <span class="stringliteral">&quot;%lf&quot;</span>, &amp;d);</div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160;</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; <span class="keywordflow">if</span> (ret != 1)</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; <span class="comment">// failed.</span></div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160; d = default_value;</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160;</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; <span class="comment">// TOO VERBOSE: REMMINA_DEBUG(&quot;Double value is: %lf&quot;, d);</span></div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; <span class="keywordflow">return</span> d;</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160;}</div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160;</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160;<span class="comment">// sscanf uses the set language to convert the float.</span></div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160;<span class="comment">// therefore &#39;.&#39; and &#39;,&#39; cannot be used interchangeably.</span></div><div class="line"><a name="l00646"></a><span class="lineno"><a class="line" href="remmina__file_8h.html#ad2cf2ab34ab748bb984005fdd579d113"> 646</a></span>&#160;gdouble <a class="code" href="remmina__file_8c.html#ad2cf2ab34ab748bb984005fdd579d113">remmina_file_get_state_double</a>(<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> * remminafile,</div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; <span class="keyword">const</span> gchar * setting,</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160; gdouble default_value)</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160;{</div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; gchar *value;</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160;</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; value = g_hash_table_lookup(remminafile-&gt;states, setting);</div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; <span class="keywordflow">if</span> (!value)</div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160; <span class="keywordflow">return</span> default_value;</div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160;</div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; <span class="comment">// str to double.</span></div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160; <span class="comment">// https://stackoverflow.com/questions/10075294/converting-string-to-a-double-variable-in-c</span></div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160; gdouble d;</div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160; gint ret = sscanf(value, <span class="stringliteral">&quot;%lf&quot;</span>, &amp;d);</div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160;</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; <span class="keywordflow">if</span> (ret != 1)</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; <span class="comment">// failed.</span></div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160; d = default_value;</div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160;</div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; <span class="comment">// TOO VERBOSE: REMMINA_DEBUG(&quot;Double value is: %lf&quot;, d);</span></div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160; <span class="keywordflow">return</span> d;</div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160;}</div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160;</div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160;<span class="keyword">static</span> GKeyFile *</div><div class="line"><a name="l00671"></a><span class="lineno"><a class="line" href="remmina__file_8c.html#a89ec355adbf6e03ad16d7faf810af46f"> 671</a></span>&#160;<a class="code" href="remmina__file_8c.html#a89ec355adbf6e03ad16d7faf810af46f">remmina_file_get_keyfile</a>(<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile)</div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160;{</div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160; GKeyFile *gkeyfile;</div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160;</div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160; <span class="keywordflow">if</span> (remminafile-&gt;filename == NULL)</div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160; gkeyfile = g_key_file_new();</div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160; <span class="keywordflow">if</span> (!g_key_file_load_from_file(gkeyfile, remminafile-&gt;filename, G_KEY_FILE_NONE, NULL)) {</div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160; <span class="comment">/* it will fail if it’s a new file, but shouldn’t matter. */</span></div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160; }</div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160; <span class="keywordflow">return</span> gkeyfile;</div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160;}</div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160;</div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160;<span class="keyword">static</span> GKeyFile *</div><div class="line"><a name="l00686"></a><span class="lineno"><a class="line" href="remmina__file_8c.html#a227276a531775a77d497852ce66ebdd2"> 686</a></span>&#160;<a class="code" href="remmina__file_8c.html#a227276a531775a77d497852ce66ebdd2">remmina_file_get_keystate</a>(<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile)</div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160;{</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160; GKeyFile *gkeyfile;</div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160;</div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160; <span class="keywordflow">if</span> (remminafile-&gt;statefile == NULL)</div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160; gkeyfile = g_key_file_new();</div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160; <span class="keywordflow">if</span> (!g_key_file_load_from_file(gkeyfile, remminafile-&gt;statefile, G_KEY_FILE_NONE, NULL)) {</div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160; <span class="comment">/* it will fail if it’s a new file, but shouldn’t matter. */</span></div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160; }</div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160; <span class="keywordflow">return</span> gkeyfile;</div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160;}</div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160;</div><div class="line"><a name="l00700"></a><span class="lineno"><a class="line" href="remmina__file_8h.html#abd2f06bf0a5ddcf7156e5ef7d0c8d4d7"> 700</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__file_8c.html#abd2f06bf0a5ddcf7156e5ef7d0c8d4d7">remmina_file_free</a>(<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile)</div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160;{</div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160; <span class="keywordflow">if</span> (remminafile == NULL)</div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160;</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; <span class="keywordflow">if</span> (remminafile-&gt;filename)</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; g_free(remminafile-&gt;filename);</div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160; <span class="keywordflow">if</span> (remminafile-&gt;statefile)</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160; g_free(remminafile-&gt;statefile);</div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160; <span class="keywordflow">if</span> (remminafile-&gt;settings)</div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160; g_hash_table_destroy(remminafile-&gt;settings);</div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160; <span class="keywordflow">if</span> (remminafile-&gt;spsettings)</div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; g_hash_table_destroy(remminafile-&gt;spsettings);</div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160;</div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160; g_free(remminafile);</div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160;}</div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160;</div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160;</div><div class="line"><a name="l00719"></a><span class="lineno"><a class="line" href="remmina__file_8h.html#a8c893a5deec9bc446bd89cc9973416c7"> 719</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__file_8c.html#a8c893a5deec9bc446bd89cc9973416c7">remmina_file_save</a>(<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile)</div><div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160;{</div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160; <a class="code" href="struct___remmina_secret_plugin.html">RemminaSecretPlugin</a> *secret_plugin;</div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160; gboolean secret_service_available;</div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160; <a class="code" href="struct___remmina_protocol_plugin.html">RemminaProtocolPlugin</a> *protocol_plugin;</div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160; GHashTableIter iter;</div><div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160; <span class="keyword">const</span> gchar *key, *value;</div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160; gchar *s, *proto, *content;</div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160; gint nopasswdsave;</div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160; GKeyFile *gkeyfile;</div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160; GKeyFile *gkeystate;</div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160; gsize length = 0;</div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160; GError *err = NULL;</div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160;</div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160; <span class="keywordflow">if</span> (remminafile-&gt;prevent_saving)</div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160;</div><div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160; <span class="keywordflow">if</span> ((gkeyfile = <a class="code" href="remmina__file_8c.html#a89ec355adbf6e03ad16d7faf810af46f">remmina_file_get_keyfile</a>(remminafile)) == NULL)</div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160;</div><div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160; <span class="keywordflow">if</span> ((gkeystate = <a class="code" href="remmina__file_8c.html#a227276a531775a77d497852ce66ebdd2">remmina_file_get_keystate</a>(remminafile)) == NULL)</div><div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160;</div><div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Saving profile&quot;</span>);</div><div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160; <span class="comment">/* get disablepasswordstoring */</span></div><div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160; nopasswdsave = <a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(remminafile, <span class="stringliteral">&quot;disablepasswordstoring&quot;</span>, 0);</div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160; <span class="comment">/* Identify the protocol plugin and get pointers to its RemminaProtocolSetting structs */</span></div><div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160; proto = (gchar *)g_hash_table_lookup(remminafile-&gt;settings, <span class="stringliteral">&quot;protocol&quot;</span>);</div><div class="line"><a name="l00748"></a><span class="lineno"> 748</span>&#160; <span class="keywordflow">if</span> (proto) {</div><div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160; protocol_plugin = (<a class="code" href="struct___remmina_protocol_plugin.html">RemminaProtocolPlugin</a> *)<a class="code" href="remmina__plugin__manager_8c.html#a3872c8656a8a3d5147bcc603471c1932">remmina_plugin_manager_get_plugin</a>(<a class="code" href="plugin_8h.html#aaf53c620d115a4642130227cff4a624aa45e094c248384c12cdafd9d088e4aa24">REMMINA_PLUGIN_TYPE_PROTOCOL</a>, proto);</div><div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00751"></a><span class="lineno"> 751</span>&#160; REMMINA_CRITICAL(<span class="stringliteral">&quot;Saving settings for unknown protocol:&quot;</span>, proto);</div><div class="line"><a name="l00752"></a><span class="lineno"> 752</span>&#160; protocol_plugin = NULL;</div><div class="line"><a name="l00753"></a><span class="lineno"> 753</span>&#160; }</div><div class="line"><a name="l00754"></a><span class="lineno"> 754</span>&#160;</div><div class="line"><a name="l00755"></a><span class="lineno"> 755</span>&#160; secret_plugin = <a class="code" href="remmina__plugin__manager_8c.html#ad380a98f6624aa8c830015c8b428b7b4">remmina_plugin_manager_get_secret_plugin</a>();</div><div class="line"><a name="l00756"></a><span class="lineno"> 756</span>&#160; secret_service_available = secret_plugin &amp;&amp; secret_plugin-&gt;<a class="code" href="struct___remmina_secret_plugin.html#a2123e14795b104f5fe8d77a4b7847261">is_service_available</a>(secret_plugin);</div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span>&#160;</div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160; g_hash_table_iter_init(&amp;iter, remminafile-&gt;settings);</div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160; <span class="keywordflow">while</span> (g_hash_table_iter_next(&amp;iter, (gpointer *)&amp;key, (gpointer *)&amp;value)) {</div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="remmina__plugin__manager_8c.html#aef243c58b9e8c778232d5acb32c7729b">remmina_plugin_manager_is_encrypted_setting</a>(protocol_plugin, key)) {</div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160; <span class="keywordflow">if</span> (remminafile-&gt;filename &amp;&amp; g_strcmp0(remminafile-&gt;filename, <a class="code" href="rcw_8c.html#af657fd4825d16d8d003a8b42fbd0c715">remmina_pref_file</a>)) {</div><div class="line"><a name="l00762"></a><span class="lineno"> 762</span>&#160; <span class="keywordflow">if</span> (secret_service_available &amp;&amp; nopasswdsave == 0) {</div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;We have a secret and disablepasswordstoring=0&quot;</span>);</div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span>&#160; <span class="keywordflow">if</span> (value &amp;&amp; value[0]) {</div><div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160; <span class="keywordflow">if</span> (g_strcmp0(value, <span class="stringliteral">&quot;.&quot;</span>) != 0)</div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160; secret_plugin-&gt;<a class="code" href="struct___remmina_secret_plugin.html#a03fab6fcb013fa87be06d551f936c317">store_password</a>(secret_plugin, remminafile, key, value);</div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160; g_key_file_set_string(gkeyfile, KEYFILE_GROUP_REMMINA, key, <span class="stringliteral">&quot;.&quot;</span>);</div><div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00769"></a><span class="lineno"> 769</span>&#160; g_key_file_set_string(gkeyfile, KEYFILE_GROUP_REMMINA, key, <span class="stringliteral">&quot;&quot;</span>);</div><div class="line"><a name="l00770"></a><span class="lineno"> 770</span>&#160; secret_plugin-&gt;<a class="code" href="struct___remmina_secret_plugin.html#abbe56963e94b1a131f3e6d9bcafce772">delete_password</a>(secret_plugin, remminafile, key);</div><div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160; }</div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;We have a password and disablepasswordstoring=0&quot;</span>);</div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160; <span class="keywordflow">if</span> (value &amp;&amp; value[0] &amp;&amp; nopasswdsave == 0) {</div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span>&#160; s = <a class="code" href="remmina__crypt_8c.html#aa02cf0fed3eb68d6a89815c3ba3bf7b1">remmina_crypt_encrypt</a>(value);</div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160; g_key_file_set_string(gkeyfile, KEYFILE_GROUP_REMMINA, key, s);</div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160; g_free(s);</div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160; g_key_file_set_string(gkeyfile, KEYFILE_GROUP_REMMINA, key, <span class="stringliteral">&quot;&quot;</span>);</div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160; }</div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span>&#160; }</div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span>&#160; <span class="keywordflow">if</span> (secret_service_available &amp;&amp; nopasswdsave == 1) {</div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160; <span class="keywordflow">if</span> (value &amp;&amp; value[0]) {</div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span>&#160; <span class="keywordflow">if</span> (g_strcmp0(value, <span class="stringliteral">&quot;.&quot;</span>) != 0) {</div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Deleting the secret in the keyring as disablepasswordstoring=1&quot;</span>);</div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span>&#160; secret_plugin-&gt;<a class="code" href="struct___remmina_secret_plugin.html#abbe56963e94b1a131f3e6d9bcafce772">delete_password</a>(secret_plugin, remminafile, key);</div><div class="line"><a name="l00787"></a><span class="lineno"> 787</span>&#160; g_key_file_set_string(gkeyfile, KEYFILE_GROUP_REMMINA, key, <span class="stringliteral">&quot;.&quot;</span>);</div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160; }</div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160; }</div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span>&#160; }</div><div class="line"><a name="l00791"></a><span class="lineno"> 791</span>&#160; }</div><div class="line"><a name="l00792"></a><span class="lineno"> 792</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00793"></a><span class="lineno"> 793</span>&#160; g_key_file_set_string(gkeyfile, KEYFILE_GROUP_REMMINA, key, value);</div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160; }</div><div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160; }</div><div class="line"><a name="l00796"></a><span class="lineno"> 796</span>&#160;</div><div class="line"><a name="l00797"></a><span class="lineno"> 797</span>&#160; <span class="comment">/* Avoid storing redundant and deprecated &quot;resolution&quot; field */</span></div><div class="line"><a name="l00798"></a><span class="lineno"> 798</span>&#160; g_key_file_remove_key(gkeyfile, KEYFILE_GROUP_REMMINA, <span class="stringliteral">&quot;resolution&quot;</span>, NULL);</div><div class="line"><a name="l00799"></a><span class="lineno"> 799</span>&#160;</div><div class="line"><a name="l00800"></a><span class="lineno"> 800</span>&#160; <span class="comment">/* Delete old pre-1.4 ssh keys */</span></div><div class="line"><a name="l00801"></a><span class="lineno"> 801</span>&#160; g_key_file_remove_key(gkeyfile, KEYFILE_GROUP_REMMINA, <span class="stringliteral">&quot;ssh_enabled&quot;</span>, NULL);</div><div class="line"><a name="l00802"></a><span class="lineno"> 802</span>&#160; g_key_file_remove_key(gkeyfile, KEYFILE_GROUP_REMMINA, <span class="stringliteral">&quot;save_ssh_server&quot;</span>, NULL);</div><div class="line"><a name="l00803"></a><span class="lineno"> 803</span>&#160; g_key_file_remove_key(gkeyfile, KEYFILE_GROUP_REMMINA, <span class="stringliteral">&quot;save_ssh_username&quot;</span>, NULL);</div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span>&#160;</div><div class="line"><a name="l00805"></a><span class="lineno"> 805</span>&#160; <span class="comment">/* Store gkeyfile to disk (password are already sent to keyring) */</span></div><div class="line"><a name="l00806"></a><span class="lineno"> 806</span>&#160; content = g_key_file_to_data(gkeyfile, &amp;length, NULL);</div><div class="line"><a name="l00807"></a><span class="lineno"> 807</span>&#160;</div><div class="line"><a name="l00808"></a><span class="lineno"> 808</span>&#160; <span class="keywordflow">if</span> (g_file_set_contents(remminafile-&gt;filename, content, length, &amp;err))</div><div class="line"><a name="l00809"></a><span class="lineno"> 809</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Profile saved&quot;</span>);</div><div class="line"><a name="l00810"></a><span class="lineno"> 810</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00811"></a><span class="lineno"> 811</span>&#160; REMMINA_WARNING(<span class="stringliteral">&quot;Remmina connection profile cannot be saved, with error %d (%s)&quot;</span>, err-&gt;code, err-&gt;message);</div><div class="line"><a name="l00812"></a><span class="lineno"> 812</span>&#160; <span class="keywordflow">if</span> (err != NULL)</div><div class="line"><a name="l00813"></a><span class="lineno"> 813</span>&#160; g_error_free(err);</div><div class="line"><a name="l00814"></a><span class="lineno"> 814</span>&#160;</div><div class="line"><a name="l00815"></a><span class="lineno"> 815</span>&#160; g_free(content), content = NULL;</div><div class="line"><a name="l00816"></a><span class="lineno"> 816</span>&#160; <span class="comment">/* Saving states */</span></div><div class="line"><a name="l00817"></a><span class="lineno"> 817</span>&#160; g_hash_table_iter_init(&amp;iter, remminafile-&gt;states);</div><div class="line"><a name="l00818"></a><span class="lineno"> 818</span>&#160; <span class="keywordflow">while</span> (g_hash_table_iter_next(&amp;iter, (gpointer *)&amp;key, (gpointer *)&amp;value))</div><div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160; g_key_file_set_string(gkeyfile, KEYFILE_GROUP_STATE, key, value);</div><div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160; content = g_key_file_to_data(gkeystate, &amp;length, NULL);</div><div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160; <span class="keywordflow">if</span> (g_file_set_contents(remminafile-&gt;statefile, content, length, &amp;err))</div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Connection profile states saved&quot;</span>);</div><div class="line"><a name="l00823"></a><span class="lineno"> 823</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00824"></a><span class="lineno"> 824</span>&#160; REMMINA_WARNING(<span class="stringliteral">&quot;Remmina connection profile cannot be saved, with error %d (%s)&quot;</span>, err-&gt;code, err-&gt;message);</div><div class="line"><a name="l00825"></a><span class="lineno"> 825</span>&#160; <span class="keywordflow">if</span> (err != NULL)</div><div class="line"><a name="l00826"></a><span class="lineno"> 826</span>&#160; g_error_free(err);</div><div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160; g_free(content), content = NULL;</div><div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160; g_key_file_free(gkeyfile);</div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160; g_key_file_free(gkeystate);</div><div class="line"><a name="l00830"></a><span class="lineno"> 830</span>&#160;</div><div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a994425a04b78282ff40a05580cc9355c">list_refresh_workaround</a>)</div><div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160; <a class="code" href="remmina__main_8c.html#a5ae0372dafe41f96a09097c07d1b270a">remmina_main_update_file_datetime</a>(remminafile);</div><div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160;}</div><div class="line"><a name="l00834"></a><span class="lineno"> 834</span>&#160;</div><div class="line"><a name="l00835"></a><span class="lineno"><a class="line" href="remmina__file_8h.html#a3be28ff7f5a9b44dc47f92b883a85ac5"> 835</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__file_8c.html#a3be28ff7f5a9b44dc47f92b883a85ac5">remmina_file_store_secret_plugin_password</a>(<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile, <span class="keyword">const</span> gchar *key, <span class="keyword">const</span> gchar *value)</div><div class="line"><a name="l00836"></a><span class="lineno"> 836</span>&#160;{</div><div class="line"><a name="l00837"></a><span class="lineno"> 837</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00838"></a><span class="lineno"> 838</span>&#160;</div><div class="line"><a name="l00839"></a><span class="lineno"> 839</span>&#160; <span class="comment">/* Only change the password in the keyring. This function</span></div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span>&#160;<span class="comment"> * is a shortcut which avoids updating of date/time of .pref file</span></div><div class="line"><a name="l00841"></a><span class="lineno"> 841</span>&#160;<span class="comment"> * when possible, and is used by the mpchanger */</span></div><div class="line"><a name="l00842"></a><span class="lineno"> 842</span>&#160; <a class="code" href="struct___remmina_secret_plugin.html">RemminaSecretPlugin</a> *plugin;</div><div class="line"><a name="l00843"></a><span class="lineno"> 843</span>&#160;</div><div class="line"><a name="l00844"></a><span class="lineno"> 844</span>&#160; <span class="keywordflow">if</span> (g_hash_table_lookup_extended(remminafile-&gt;spsettings, g_strdup(key), NULL, NULL)) {</div><div class="line"><a name="l00845"></a><span class="lineno"> 845</span>&#160; plugin = <a class="code" href="remmina__plugin__manager_8c.html#ad380a98f6624aa8c830015c8b428b7b4">remmina_plugin_manager_get_secret_plugin</a>();</div><div class="line"><a name="l00846"></a><span class="lineno"> 846</span>&#160; plugin-&gt;<a class="code" href="struct___remmina_secret_plugin.html#a03fab6fcb013fa87be06d551f936c317">store_password</a>(plugin, remminafile, key, value);</div><div class="line"><a name="l00847"></a><span class="lineno"> 847</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00848"></a><span class="lineno"> 848</span>&#160; <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, key, value);</div><div class="line"><a name="l00849"></a><span class="lineno"> 849</span>&#160; <a class="code" href="remmina__file_8c.html#a8c893a5deec9bc446bd89cc9973416c7">remmina_file_save</a>(remminafile);</div><div class="line"><a name="l00850"></a><span class="lineno"> 850</span>&#160; }</div><div class="line"><a name="l00851"></a><span class="lineno"> 851</span>&#160;}</div><div class="line"><a name="l00852"></a><span class="lineno"> 852</span>&#160;</div><div class="line"><a name="l00853"></a><span class="lineno"> 853</span>&#160;<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *</div><div class="line"><a name="l00854"></a><span class="lineno"><a class="line" href="remmina__file_8h.html#a3fb992fced83e0f1c4e4e3c8d2206be5"> 854</a></span>&#160;<a class="code" href="remmina__file_8c.html#a3fb992fced83e0f1c4e4e3c8d2206be5">remmina_file_dup</a>(<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile)</div><div class="line"><a name="l00855"></a><span class="lineno"> 855</span>&#160;{</div><div class="line"><a name="l00856"></a><span class="lineno"> 856</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00857"></a><span class="lineno"> 857</span>&#160; <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *dupfile;</div><div class="line"><a name="l00858"></a><span class="lineno"> 858</span>&#160; GHashTableIter iter;</div><div class="line"><a name="l00859"></a><span class="lineno"> 859</span>&#160; <span class="keyword">const</span> gchar *key, *value;</div><div class="line"><a name="l00860"></a><span class="lineno"> 860</span>&#160;</div><div class="line"><a name="l00861"></a><span class="lineno"> 861</span>&#160; dupfile = <a class="code" href="remmina__file_8c.html#adab087b7139756f029020a87a5438cfa">remmina_file_new_empty</a>();</div><div class="line"><a name="l00862"></a><span class="lineno"> 862</span>&#160; dupfile-&gt;filename = g_strdup(remminafile-&gt;filename);</div><div class="line"><a name="l00863"></a><span class="lineno"> 863</span>&#160;</div><div class="line"><a name="l00864"></a><span class="lineno"> 864</span>&#160; g_hash_table_iter_init(&amp;iter, remminafile-&gt;settings);</div><div class="line"><a name="l00865"></a><span class="lineno"> 865</span>&#160; <span class="keywordflow">while</span> (g_hash_table_iter_next(&amp;iter, (gpointer *)&amp;key, (gpointer *)&amp;value))</div><div class="line"><a name="l00866"></a><span class="lineno"> 866</span>&#160; <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(dupfile, key, value);</div><div class="line"><a name="l00867"></a><span class="lineno"> 867</span>&#160;</div><div class="line"><a name="l00868"></a><span class="lineno"> 868</span>&#160; <a class="code" href="remmina__file_8c.html#aeefa562baee867fba8c06165ae656de1">remmina_file_set_statefile</a>(dupfile);</div><div class="line"><a name="l00869"></a><span class="lineno"> 869</span>&#160; <a class="code" href="remmina__file_8c.html#a3d19095f74e9b7c92d74f11bd5a39a8c">remmina_file_touch</a>(dupfile);</div><div class="line"><a name="l00870"></a><span class="lineno"> 870</span>&#160; <span class="keywordflow">return</span> dupfile;</div><div class="line"><a name="l00871"></a><span class="lineno"> 871</span>&#160;}</div><div class="line"><a name="l00872"></a><span class="lineno"> 872</span>&#160;</div><div class="line"><a name="l00873"></a><span class="lineno"> 873</span>&#160;<span class="keyword">const</span> gchar *</div><div class="line"><a name="l00874"></a><span class="lineno"><a class="line" href="remmina__file_8h.html#a2feb8e9e32f3ff4e2fac836e67a77331"> 874</a></span>&#160;<a class="code" href="remmina__file_8c.html#a2feb8e9e32f3ff4e2fac836e67a77331">remmina_file_get_icon_name</a>(<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile)</div><div class="line"><a name="l00875"></a><span class="lineno"> 875</span>&#160;{</div><div class="line"><a name="l00876"></a><span class="lineno"> 876</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00877"></a><span class="lineno"> 877</span>&#160; <a class="code" href="struct___remmina_protocol_plugin.html">RemminaProtocolPlugin</a> *plugin;</div><div class="line"><a name="l00878"></a><span class="lineno"> 878</span>&#160;</div><div class="line"><a name="l00879"></a><span class="lineno"> 879</span>&#160; plugin = (<a class="code" href="struct___remmina_protocol_plugin.html">RemminaProtocolPlugin</a> *)<a class="code" href="remmina__plugin__manager_8c.html#a3872c8656a8a3d5147bcc603471c1932">remmina_plugin_manager_get_plugin</a>(<a class="code" href="plugin_8h.html#aaf53c620d115a4642130227cff4a624aa45e094c248384c12cdafd9d088e4aa24">REMMINA_PLUGIN_TYPE_PROTOCOL</a>,</div><div class="line"><a name="l00880"></a><span class="lineno"> 880</span>&#160; <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">&quot;protocol&quot;</span>));</div><div class="line"><a name="l00881"></a><span class="lineno"> 881</span>&#160; <span class="keywordflow">if</span> (!plugin)</div><div class="line"><a name="l00882"></a><span class="lineno"> 882</span>&#160; <span class="keywordflow">return</span> g_strconcat(REMMINA_APP_ID, <span class="stringliteral">&quot;-symbolic&quot;</span>, NULL);</div><div class="line"><a name="l00883"></a><span class="lineno"> 883</span>&#160;</div><div class="line"><a name="l00884"></a><span class="lineno"> 884</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(remminafile, <span class="stringliteral">&quot;ssh_tunnel_enabled&quot;</span>, FALSE) ? plugin-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#a8a4c7d195e85a1428abf82e952ff4df3">icon_name_ssh</a> : plugin-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#a9552c70a10eea2b8263dbc7d05e2fb10">icon_name</a>;</div><div class="line"><a name="l00885"></a><span class="lineno"> 885</span>&#160;}</div><div class="line"><a name="l00886"></a><span class="lineno"> 886</span>&#160;</div><div class="line"><a name="l00887"></a><span class="lineno"> 887</span>&#160;<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *</div><div class="line"><a name="l00888"></a><span class="lineno"><a class="line" href="remmina__file_8h.html#a52a0986eaf54c9e606ce9cdf8bb57e60"> 888</a></span>&#160;<a class="code" href="remmina__file_8c.html#a52a0986eaf54c9e606ce9cdf8bb57e60">remmina_file_dup_temp_protocol</a>(<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile, <span class="keyword">const</span> gchar *new_protocol)</div><div class="line"><a name="l00889"></a><span class="lineno"> 889</span>&#160;{</div><div class="line"><a name="l00890"></a><span class="lineno"> 890</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00891"></a><span class="lineno"> 891</span>&#160; <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *tmp;</div><div class="line"><a name="l00892"></a><span class="lineno"> 892</span>&#160;</div><div class="line"><a name="l00893"></a><span class="lineno"> 893</span>&#160; tmp = <a class="code" href="remmina__file_8c.html#a3fb992fced83e0f1c4e4e3c8d2206be5">remmina_file_dup</a>(remminafile);</div><div class="line"><a name="l00894"></a><span class="lineno"> 894</span>&#160; g_free(tmp-&gt;filename);</div><div class="line"><a name="l00895"></a><span class="lineno"> 895</span>&#160; tmp-&gt;filename = NULL;</div><div class="line"><a name="l00896"></a><span class="lineno"> 896</span>&#160; <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(tmp, <span class="stringliteral">&quot;protocol&quot;</span>, new_protocol);</div><div class="line"><a name="l00897"></a><span class="lineno"> 897</span>&#160; <span class="keywordflow">return</span> tmp;</div><div class="line"><a name="l00898"></a><span class="lineno"> 898</span>&#160;}</div><div class="line"><a name="l00899"></a><span class="lineno"> 899</span>&#160;</div><div class="line"><a name="l00900"></a><span class="lineno"><a class="line" href="remmina__file_8h.html#a55f66f2bb81bf427d6837e1adb7fe1d4"> 900</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__file_8c.html#a55f66f2bb81bf427d6837e1adb7fe1d4">remmina_file_delete</a>(<span class="keyword">const</span> gchar *filename)</div><div class="line"><a name="l00901"></a><span class="lineno"> 901</span>&#160;{</div><div class="line"><a name="l00902"></a><span class="lineno"> 902</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00903"></a><span class="lineno"> 903</span>&#160; <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile;</div><div class="line"><a name="l00904"></a><span class="lineno"> 904</span>&#160;</div><div class="line"><a name="l00905"></a><span class="lineno"> 905</span>&#160; remminafile = <a class="code" href="remmina__file_8c.html#ac1cc2d7f827f7d64c7fd3edf10e9383e">remmina_file_load</a>(filename);</div><div class="line"><a name="l00906"></a><span class="lineno"> 906</span>&#160; <span class="keywordflow">if</span> (remminafile) {</div><div class="line"><a name="l00907"></a><span class="lineno"> 907</span>&#160; <a class="code" href="remmina__file_8c.html#a503e53fe49430a5ed310c342c946c014">remmina_file_unsave_passwords</a>(remminafile);</div><div class="line"><a name="l00908"></a><span class="lineno"> 908</span>&#160; <a class="code" href="remmina__file_8c.html#abd2f06bf0a5ddcf7156e5ef7d0c8d4d7">remmina_file_free</a>(remminafile);</div><div class="line"><a name="l00909"></a><span class="lineno"> 909</span>&#160; }</div><div class="line"><a name="l00910"></a><span class="lineno"> 910</span>&#160; g_unlink(filename);</div><div class="line"><a name="l00911"></a><span class="lineno"> 911</span>&#160;}</div><div class="line"><a name="l00912"></a><span class="lineno"> 912</span>&#160;</div><div class="line"><a name="l00913"></a><span class="lineno"> 913</span>&#160;<span class="keyword">const</span> gchar *</div><div class="line"><a name="l00914"></a><span class="lineno"><a class="line" href="remmina__file_8h.html#af8c58daf7ee71345ae548e7a5332a8f6"> 914</a></span>&#160;<a class="code" href="remmina__file_8c.html#af8c58daf7ee71345ae548e7a5332a8f6">remmina_file_get_state</a>(<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile, <span class="keyword">const</span> gchar *setting)</div><div class="line"><a name="l00915"></a><span class="lineno"> 915</span>&#160;{</div><div class="line"><a name="l00916"></a><span class="lineno"> 916</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00917"></a><span class="lineno"> 917</span>&#160; g_autoptr(GError) error = NULL;</div><div class="line"><a name="l00918"></a><span class="lineno"> 918</span>&#160; g_autoptr(GKeyFile) key_file = g_key_file_new();</div><div class="line"><a name="l00919"></a><span class="lineno"> 919</span>&#160;</div><div class="line"><a name="l00920"></a><span class="lineno"> 920</span>&#160; <span class="keywordflow">if</span> (!g_key_file_load_from_file(key_file, remminafile-&gt;statefile, G_KEY_FILE_NONE, &amp;error)) {</div><div class="line"><a name="l00921"></a><span class="lineno"> 921</span>&#160; <span class="keywordflow">if</span> (!g_error_matches(error, G_FILE_ERROR, G_FILE_ERROR_NOENT))</div><div class="line"><a name="l00922"></a><span class="lineno"> 922</span>&#160; REMMINA_CRITICAL(<span class="stringliteral">&quot;Could not load the state file. %s&quot;</span>, error-&gt;message);</div><div class="line"><a name="l00923"></a><span class="lineno"> 923</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00924"></a><span class="lineno"> 924</span>&#160; }</div><div class="line"><a name="l00925"></a><span class="lineno"> 925</span>&#160;</div><div class="line"><a name="l00926"></a><span class="lineno"> 926</span>&#160; g_autofree gchar *val = g_key_file_get_string(key_file, KEYFILE_GROUP_STATE, setting, &amp;error);</div><div class="line"><a name="l00927"></a><span class="lineno"> 927</span>&#160;</div><div class="line"><a name="l00928"></a><span class="lineno"> 928</span>&#160; <span class="keywordflow">if</span> (val == NULL &amp;&amp;</div><div class="line"><a name="l00929"></a><span class="lineno"> 929</span>&#160; !g_error_matches(error, G_KEY_FILE_ERROR, G_KEY_FILE_ERROR_KEY_NOT_FOUND)) {</div><div class="line"><a name="l00930"></a><span class="lineno"> 930</span>&#160; REMMINA_CRITICAL(<span class="stringliteral">&quot;Could not find \&quot;%s\&quot; in the \&quot;%s\&quot; state file. %s&quot;</span>,</div><div class="line"><a name="l00931"></a><span class="lineno"> 931</span>&#160; setting, remminafile-&gt;statefile, error-&gt;message);</div><div class="line"><a name="l00932"></a><span class="lineno"> 932</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00933"></a><span class="lineno"> 933</span>&#160; }</div><div class="line"><a name="l00934"></a><span class="lineno"> 934</span>&#160; <span class="keywordflow">return</span> val &amp;&amp; val[0] ? val : NULL;</div><div class="line"><a name="l00935"></a><span class="lineno"> 935</span>&#160;}</div><div class="line"><a name="l00936"></a><span class="lineno"> 936</span>&#160;</div><div class="line"><a name="l00937"></a><span class="lineno"><a class="line" href="remmina__file_8h.html#a493ffa77b862ff3bad9ea951592715a8"> 937</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__file_8c.html#a493ffa77b862ff3bad9ea951592715a8">remmina_file_state_last_success</a>(<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile)</div><div class="line"><a name="l00938"></a><span class="lineno"> 938</span>&#160;{</div><div class="line"><a name="l00939"></a><span class="lineno"> 939</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00940"></a><span class="lineno"> 940</span>&#160;</div><div class="line"><a name="l00941"></a><span class="lineno"> 941</span>&#160; g_autoptr(GKeyFile) key_statefile = g_key_file_new();</div><div class="line"><a name="l00942"></a><span class="lineno"> 942</span>&#160; g_autoptr(GKeyFile) key_remminafile = g_key_file_new();</div><div class="line"><a name="l00943"></a><span class="lineno"> 943</span>&#160; GError *error = NULL;</div><div class="line"><a name="l00944"></a><span class="lineno"> 944</span>&#160;</div><div class="line"><a name="l00945"></a><span class="lineno"> 945</span>&#160; <span class="keyword">const</span> gchar *date = NULL;</div><div class="line"><a name="l00946"></a><span class="lineno"> 946</span>&#160; GDateTime *d = g_date_time_new_now_utc();</div><div class="line"><a name="l00947"></a><span class="lineno"> 947</span>&#160;</div><div class="line"><a name="l00948"></a><span class="lineno"> 948</span>&#160; date = g_strdup_printf(<span class="stringliteral">&quot;%d%02d%02d&quot;</span>,</div><div class="line"><a name="l00949"></a><span class="lineno"> 949</span>&#160; g_date_time_get_year(d),</div><div class="line"><a name="l00950"></a><span class="lineno"> 950</span>&#160; g_date_time_get_month(d),</div><div class="line"><a name="l00951"></a><span class="lineno"> 951</span>&#160; g_date_time_get_day_of_month(d));</div><div class="line"><a name="l00952"></a><span class="lineno"> 952</span>&#160;</div><div class="line"><a name="l00953"></a><span class="lineno"> 953</span>&#160; g_key_file_set_string(key_statefile, KEYFILE_GROUP_STATE, <span class="stringliteral">&quot;last_success&quot;</span>, date);</div><div class="line"><a name="l00954"></a><span class="lineno"> 954</span>&#160;</div><div class="line"><a name="l00955"></a><span class="lineno"> 955</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;State file %s.&quot;</span>, remminafile-&gt;statefile);</div><div class="line"><a name="l00956"></a><span class="lineno"> 956</span>&#160; <span class="keywordflow">if</span> (!g_key_file_save_to_file(key_statefile, remminafile-&gt;statefile, &amp;error)) {</div><div class="line"><a name="l00957"></a><span class="lineno"> 957</span>&#160; REMMINA_CRITICAL(<span class="stringliteral">&quot;Could not save the key file. %s&quot;</span>, error-&gt;message);</div><div class="line"><a name="l00958"></a><span class="lineno"> 958</span>&#160; g_error_free(error);</div><div class="line"><a name="l00959"></a><span class="lineno"> 959</span>&#160; error = NULL;</div><div class="line"><a name="l00960"></a><span class="lineno"> 960</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00961"></a><span class="lineno"> 961</span>&#160; }</div><div class="line"><a name="l00962"></a><span class="lineno"> 962</span>&#160; <span class="comment">/* Delete old pre-1.5 keys */</span></div><div class="line"><a name="l00963"></a><span class="lineno"> 963</span>&#160; g_key_file_remove_key(key_remminafile, KEYFILE_GROUP_REMMINA, <span class="stringliteral">&quot;last_success&quot;</span>, NULL);</div><div class="line"><a name="l00964"></a><span class="lineno"> 964</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Last connection made on %s.&quot;</span>, date);</div><div class="line"><a name="l00965"></a><span class="lineno"> 965</span>&#160;}</div><div class="line"><a name="l00966"></a><span class="lineno"> 966</span>&#160;</div><div class="line"><a name="l00967"></a><span class="lineno"><a class="line" href="remmina__file_8h.html#a503e53fe49430a5ed310c342c946c014"> 967</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__file_8c.html#a503e53fe49430a5ed310c342c946c014">remmina_file_unsave_passwords</a>(<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile)</div><div class="line"><a name="l00968"></a><span class="lineno"> 968</span>&#160;{</div><div class="line"><a name="l00969"></a><span class="lineno"> 969</span>&#160; <span class="comment">/* Delete all saved secrets for this profile */</span></div><div class="line"><a name="l00970"></a><span class="lineno"> 970</span>&#160;</div><div class="line"><a name="l00971"></a><span class="lineno"> 971</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00972"></a><span class="lineno"> 972</span>&#160; <span class="keyword">const</span> <a class="code" href="struct___remmina_protocol_setting.html">RemminaProtocolSetting</a> *setting_iter;</div><div class="line"><a name="l00973"></a><span class="lineno"> 973</span>&#160; <a class="code" href="struct___remmina_protocol_plugin.html">RemminaProtocolPlugin</a> *protocol_plugin;</div><div class="line"><a name="l00974"></a><span class="lineno"> 974</span>&#160; gchar *proto;</div><div class="line"><a name="l00975"></a><span class="lineno"> 975</span>&#160;</div><div class="line"><a name="l00976"></a><span class="lineno"> 976</span>&#160; protocol_plugin = NULL;</div><div class="line"><a name="l00977"></a><span class="lineno"> 977</span>&#160;</div><div class="line"><a name="l00978"></a><span class="lineno"> 978</span>&#160; <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, <span class="stringliteral">&quot;password&quot;</span>, NULL);</div><div class="line"><a name="l00979"></a><span class="lineno"> 979</span>&#160;</div><div class="line"><a name="l00980"></a><span class="lineno"> 980</span>&#160; proto = (gchar *)g_hash_table_lookup(remminafile-&gt;settings, <span class="stringliteral">&quot;protocol&quot;</span>);</div><div class="line"><a name="l00981"></a><span class="lineno"> 981</span>&#160; <span class="keywordflow">if</span> (proto) {</div><div class="line"><a name="l00982"></a><span class="lineno"> 982</span>&#160; protocol_plugin = (<a class="code" href="struct___remmina_protocol_plugin.html">RemminaProtocolPlugin</a> *)<a class="code" href="remmina__plugin__manager_8c.html#a3872c8656a8a3d5147bcc603471c1932">remmina_plugin_manager_get_plugin</a>(<a class="code" href="plugin_8h.html#aaf53c620d115a4642130227cff4a624aa45e094c248384c12cdafd9d088e4aa24">REMMINA_PLUGIN_TYPE_PROTOCOL</a>, proto);</div><div class="line"><a name="l00983"></a><span class="lineno"> 983</span>&#160; <span class="keywordflow">if</span> (protocol_plugin) {</div><div class="line"><a name="l00984"></a><span class="lineno"> 984</span>&#160; setting_iter = protocol_plugin-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#aae09a7e2c978cc36e85d0f295518978d">basic_settings</a>;</div><div class="line"><a name="l00985"></a><span class="lineno"> 985</span>&#160; <span class="keywordflow">if</span> (setting_iter) {</div><div class="line"><a name="l00986"></a><span class="lineno"> 986</span>&#160; <span class="keywordflow">while</span> (setting_iter-&gt;<a class="code" href="struct___remmina_protocol_setting.html#a6274d44b592a54162ff583135e55ffc9">type</a> != <a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350ad898beb6ae625dee1ae27de75f1ab4e3">REMMINA_PROTOCOL_SETTING_TYPE_END</a>) {</div><div class="line"><a name="l00987"></a><span class="lineno"> 987</span>&#160; <span class="comment">// TOO VERBOSE: g_debug(&quot;setting name: %s&quot;, setting_iter-&gt;name);</span></div><div class="line"><a name="l00988"></a><span class="lineno"> 988</span>&#160; <span class="keywordflow">if</span> (setting_iter-&gt;<a class="code" href="struct___remmina_protocol_setting.html#ac4cd339607204c5f478727e2a0c04857">name</a> == NULL)</div><div class="line"><a name="l00989"></a><span class="lineno"> 989</span>&#160; g_error(<span class="stringliteral">&quot;Internal error: a setting name in protocol plugin %s is null. Please fix RemminaProtocolSetting struct content.&quot;</span>, proto);</div><div class="line"><a name="l00990"></a><span class="lineno"> 990</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00991"></a><span class="lineno"> 991</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="remmina__plugin__manager_8c.html#aef243c58b9e8c778232d5acb32c7729b">remmina_plugin_manager_is_encrypted_setting</a>(protocol_plugin, setting_iter-&gt;<a class="code" href="struct___remmina_protocol_setting.html#ac4cd339607204c5f478727e2a0c04857">name</a>))</div><div class="line"><a name="l00992"></a><span class="lineno"> 992</span>&#160; <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, <a class="code" href="remmina__plugin__manager_8c.html#af60b8edfa50563ae4c7593efc3deed55">remmina_plugin_manager_get_canonical_setting_name</a>(setting_iter), NULL);</div><div class="line"><a name="l00993"></a><span class="lineno"> 993</span>&#160; setting_iter++;</div><div class="line"><a name="l00994"></a><span class="lineno"> 994</span>&#160; }</div><div class="line"><a name="l00995"></a><span class="lineno"> 995</span>&#160; }</div><div class="line"><a name="l00996"></a><span class="lineno"> 996</span>&#160; setting_iter = protocol_plugin-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#aceb00d9dff794500ccb04a1373eb32db">advanced_settings</a>;</div><div class="line"><a name="l00997"></a><span class="lineno"> 997</span>&#160; <span class="keywordflow">if</span> (setting_iter) {</div><div class="line"><a name="l00998"></a><span class="lineno"> 998</span>&#160; <span class="keywordflow">while</span> (setting_iter-&gt;<a class="code" href="struct___remmina_protocol_setting.html#a6274d44b592a54162ff583135e55ffc9">type</a> != <a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350ad898beb6ae625dee1ae27de75f1ab4e3">REMMINA_PROTOCOL_SETTING_TYPE_END</a>) {</div><div class="line"><a name="l00999"></a><span class="lineno"> 999</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="remmina__plugin__manager_8c.html#aef243c58b9e8c778232d5acb32c7729b">remmina_plugin_manager_is_encrypted_setting</a>(protocol_plugin, setting_iter-&gt;<a class="code" href="struct___remmina_protocol_setting.html#ac4cd339607204c5f478727e2a0c04857">name</a>))</div><div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>&#160; <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, <a class="code" href="remmina__plugin__manager_8c.html#af60b8edfa50563ae4c7593efc3deed55">remmina_plugin_manager_get_canonical_setting_name</a>(setting_iter), NULL);</div><div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>&#160; setting_iter++;</div><div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>&#160; }</div><div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>&#160; }</div><div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>&#160; <a class="code" href="remmina__file_8c.html#a8c893a5deec9bc446bd89cc9973416c7">remmina_file_save</a>(remminafile);</div><div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>&#160; }</div><div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>&#160; }</div><div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>&#160;}</div><div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>&#160;</div><div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>&#160;gchar *</div><div class="line"><a name="l01020"></a><span class="lineno"><a class="line" href="remmina__file_8h.html#a96abbfdc183d1e82fdffd6445d611ffe"> 1020</a></span>&#160;<a class="code" href="remmina__file_8c.html#a96abbfdc183d1e82fdffd6445d611ffe">remmina_file_get_datetime</a>(<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile)</div><div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>&#160;{</div><div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>&#160;</div><div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>&#160; GFile *file;</div><div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>&#160; GFileInfo *info;</div><div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>&#160;</div><div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>&#160; <span class="keyword">struct </span>timeval tv;</div><div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>&#160; <span class="keyword">struct </span>tm *ptm;</div><div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>&#160; <span class="keywordtype">char</span> time_string[256];</div><div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>&#160;</div><div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>&#160; guint64 mtime;</div><div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>&#160;</div><div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>&#160; <span class="keywordflow">if</span> (remminafile-&gt;statefile)</div><div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>&#160; <span class="comment">//REMMINA_DEBUG (&quot;remminafile-&gt;statefile: %s&quot;, remminafile-&gt;statefile);</span></div><div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>&#160; file = g_file_new_for_path(remminafile-&gt;statefile);</div><div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>&#160; file = g_file_new_for_path(remminafile-&gt;filename);</div><div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>&#160;</div><div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>&#160; info = g_file_query_info(file,</div><div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>&#160; G_FILE_ATTRIBUTE_TIME_MODIFIED,</div><div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>&#160; G_FILE_QUERY_INFO_NONE,</div><div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>&#160; NULL,</div><div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>&#160; NULL);</div><div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>&#160;</div><div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>&#160; g_object_unref(file);</div><div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>&#160;</div><div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>&#160; <span class="keywordflow">if</span> (info == NULL) {</div><div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>&#160; <span class="comment">//REMMINA_DEBUG(&quot;could not get time info&quot;);</span></div><div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>&#160;</div><div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>&#160; <span class="comment">// The BDAY &quot;Fri, 16 Oct 2009 07:04:46 GMT&quot;</span></div><div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>&#160; mtime = 1255676686;</div><div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>&#160; <span class="keyword">const</span> gchar *last_success = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">&quot;last_success&quot;</span>);</div><div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>&#160; <span class="keywordflow">if</span> (last_success) {</div><div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>&#160; <span class="comment">//REMMINA_DEBUG (&quot;Last success is %s&quot;, last_success);</span></div><div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>&#160; GDateTime *dt;</div><div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>&#160; dt = g_date_time_new_from_iso8601(g_strconcat(last_success, <span class="stringliteral">&quot;T00:00:00Z&quot;</span>, NULL), NULL);</div><div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>&#160; <span class="keywordflow">if</span> (dt) {</div><div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>&#160; <span class="comment">//REMMINA_DEBUG(&quot;Converting last_success&quot;);</span></div><div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>&#160; mtime = g_ascii_strtoull(g_date_time_format(dt, <span class="stringliteral">&quot;%s&quot;</span>), NULL, 10);</div><div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>&#160; g_date_time_unref(dt);</div><div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>&#160; <span class="comment">//REMMINA_DEBUG(&quot;dt was null&quot;);</span></div><div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>&#160; mtime = 191543400;</div><div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>&#160; }</div><div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>&#160; }</div><div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>&#160; mtime = g_file_info_get_attribute_uint64(info, G_FILE_ATTRIBUTE_TIME_MODIFIED);</div><div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>&#160; g_object_unref(info);</div><div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>&#160; }</div><div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>&#160;</div><div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>&#160; tv.tv_sec = mtime;</div><div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>&#160;</div><div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>&#160; ptm = localtime(&amp;tv.tv_sec);</div><div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>&#160; strftime(time_string, <span class="keyword">sizeof</span>(time_string), <span class="stringliteral">&quot;%F - %T&quot;</span>, ptm);</div><div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>&#160;</div><div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>&#160; gchar *modtime_string = g_locale_to_utf8(time_string, -1, NULL, NULL, NULL);</div><div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>&#160;</div><div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>&#160; <span class="keywordflow">return</span> modtime_string;</div><div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>&#160;}</div><div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>&#160;</div><div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>&#160;<span class="keywordtype">void</span></div><div class="line"><a name="l01089"></a><span class="lineno"><a class="line" href="remmina__file_8h.html#a3d19095f74e9b7c92d74f11bd5a39a8c"> 1089</a></span>&#160;<a class="code" href="remmina__file_8c.html#a3d19095f74e9b7c92d74f11bd5a39a8c">remmina_file_touch</a>(<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile)</div><div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>&#160;{</div><div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>&#160; <span class="keywordtype">int</span> fd;</div><div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>&#160; <span class="keyword">struct </span>stat st;</div><div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>&#160; <span class="keywordtype">int</span> r;</div><div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>&#160;</div><div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>&#160; <span class="keywordflow">if</span> ((r = stat(remminafile-&gt;statefile, &amp;st)) &lt; 0) {</div><div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>&#160; <span class="keywordflow">if</span> (errno != ENOENT)</div><div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;stat %s:&quot;</span>, remminafile-&gt;statefile);</div><div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!r) {</div><div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>&#160; <a class="code" href="remmina__file_8c.html#a3793ec19ecbc8c8afc4d1dd8969f880d">times</a>[0] = st.st_atim;</div><div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>&#160; <a class="code" href="remmina__file_8c.html#a3793ec19ecbc8c8afc4d1dd8969f880d">times</a>[1] = st.st_mtim;</div><div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>&#160; <span class="keywordflow">if</span> (utimensat(AT_FDCWD, remminafile-&gt;statefile, <a class="code" href="remmina__file_8c.html#a3793ec19ecbc8c8afc4d1dd8969f880d">times</a>, 0) &lt; 0)</div><div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;utimensat %s:&quot;</span>, remminafile-&gt;statefile);</div><div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>&#160; }</div><div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>&#160;</div><div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>&#160; <span class="keywordflow">if</span> ((fd = open(remminafile-&gt;statefile, O_CREAT | O_EXCL, 0644)) &lt; 0)</div><div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;open %s:&quot;</span>, remminafile-&gt;statefile);</div><div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>&#160; close(fd);</div><div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>&#160;</div><div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>&#160; <a class="code" href="remmina__file_8c.html#a3d19095f74e9b7c92d74f11bd5a39a8c">remmina_file_touch</a>(remminafile);</div><div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>&#160;}</div><div class="ttc" id="remmina__file_8c_html_ac1cc2d7f827f7d64c7fd3edf10e9383e"><div class="ttname"><a href="remmina__file_8c.html#ac1cc2d7f827f7d64c7fd3edf10e9383e">remmina_file_load</a></div><div class="ttdeci">RemminaFile * remmina_file_load(const gchar *filename)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00346">remmina_file.c:346</a></div></div>
+<a href="remmina__file_8c.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * Remmina - The GTK+ Remote Desktop Client</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> * Copyright (C) 2009-2011 Vic Lee</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> * Copyright (C) 2014-2015 Antenore Gatta, Fabio Castelli, Giovanni Panozzo</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * Copyright (C) 2016-2022 Antenore Gatta, Giovanni Panozzo</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * (at your option) any later version.</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> * along with this program; if not, write to the Free Software</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> * Foundation, Inc., 51 Franklin Street, Fifth Floor,</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> * Boston, MA 02110-1301, USA.</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="comment"> * In addition, as a special exception, the copyright holders give</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment"> * permission to link the code of portions of this program with the</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"> * OpenSSL library under certain conditions as described in each</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> * individual source file, and distribute linked combinations</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> * including the two.</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * You must obey the GNU General Public License in all respects</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> * for all of the code used other than OpenSSL. * If you modify</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment"> * file(s) with this exception, you may extend this exception to your</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="comment"> * version of the file(s), but you are not obligated to do so. * If you</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="comment"> * do not wish to do so, delete this exception statement from your</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="comment"> * version. * If you delete this exception statement from all source</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="comment"> * files in the program, then also delete it here.</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="preprocessor">#include &quot;config.h&quot;</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="preprocessor">#include &lt;errno.h&gt;</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="preprocessor">#include &lt;fcntl.h&gt;</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="preprocessor">#include &lt;sys/stat.h&gt;</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="preprocessor">#include &lt;locale.h&gt;</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="preprocessor">#include &lt;langinfo.h&gt;</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="preprocessor">#include &lt;stdlib.h&gt;</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="preprocessor">#include &lt;string.h&gt;</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="preprocessor">#include &lt;time.h&gt;</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="preprocessor">#include &lt;unistd.h&gt;</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="preprocessor">#include &lt;utime.h&gt;</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="preprocessor">#include &lt;gtk/gtk.h&gt;</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;<span class="preprocessor">#include &lt;glib/gi18n.h&gt;</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="preprocessor">#include &lt;glib/gstdio.h&gt;</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__trace__calls_8h.html">remmina/remmina_trace_calls.h</a>&quot;</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__crypt_8h.html">remmina_crypt.h</a>&quot;</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__file__manager_8h.html">remmina_file_manager.h</a>&quot;</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__log_8h.html">remmina_log.h</a>&quot;</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__main_8h.html">remmina_main.h</a>&quot;</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__masterthread__exec_8h.html">remmina_masterthread_exec.h</a>&quot;</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__plugin__manager_8h.html">remmina_plugin_manager.h</a>&quot;</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__pref_8h.html">remmina_pref.h</a>&quot;</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__public_8h.html">remmina_public.h</a>&quot;</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__sodium_8h.html">remmina_sodium.h</a>&quot;</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__utils_8h.html">remmina_utils.h</a>&quot;</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;<span class="preprocessor">#define MIN_WINDOW_WIDTH 10</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;<span class="preprocessor">#define MIN_WINDOW_HEIGHT 10</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;<span class="preprocessor">#define KEYFILE_GROUP_REMMINA &quot;remmina&quot;</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;<span class="preprocessor">#define KEYFILE_GROUP_STATE &quot;Remmina Connection States&quot;</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;</div><div class="line"><a name="l00073"></a><span class="lineno"><a class="line" href="remmina__file_8c.html#a3793ec19ecbc8c8afc4d1dd8969f880d"> 73</a></span>&#160;<span class="keyword">static</span> <span class="keyword">struct </span>timespec <a class="code" href="remmina__file_8c.html#a3793ec19ecbc8c8afc4d1dd8969f880d">times</a>[2];</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;<span class="keyword">static</span> <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *</div><div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="remmina__file_8c.html#adab087b7139756f029020a87a5438cfa"> 76</a></span>&#160;<a class="code" href="remmina__file_8c.html#adab087b7139756f029020a87a5438cfa">remmina_file_new_empty</a>(<span class="keywordtype">void</span>)</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;{</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; remminafile = g_new0(<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a>, 1);</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; remminafile-&gt;settings = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; remminafile-&gt;states = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="comment">/* spsettings contains settings that are loaded from the secure_plugin.</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;<span class="comment"> * it’s used by remmina_file_store_secret_plugin_password() to know</span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;<span class="comment"> * where to change */</span></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; remminafile-&gt;spsettings = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; remminafile-&gt;prevent_saving = FALSE;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordflow">return</span> remminafile;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;}</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *</div><div class="line"><a name="l00093"></a><span class="lineno"><a class="line" href="remmina__file_8h.html#a5e421ba636d34e21bba5ece463e98892"> 93</a></span>&#160;<a class="code" href="remmina__file_8c.html#a5e421ba636d34e21bba5ece463e98892">remmina_file_new</a>(<span class="keywordtype">void</span>)</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;{</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="comment">/* Try to load from the preference file for default settings first */</span></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; remminafile = <a class="code" href="remmina__file_8c.html#ac1cc2d7f827f7d64c7fd3edf10e9383e">remmina_file_load</a>(<a class="code" href="rcw_8c.html#af657fd4825d16d8d003a8b42fbd0c715">remmina_pref_file</a>);</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keywordflow">if</span> (remminafile) {</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; g_free(remminafile-&gt;filename);</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; remminafile-&gt;filename = NULL;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; remminafile = <a class="code" href="remmina__file_8c.html#adab087b7139756f029020a87a5438cfa">remmina_file_new_empty</a>();</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; }</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="keywordflow">return</span> remminafile;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;}</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;</div><div class="line"><a name="l00114"></a><span class="lineno"><a class="line" href="remmina__file_8h.html#ac952f8ddb715314f11cef1ccc513fb7e"> 114</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__file_8c.html#ac952f8ddb715314f11cef1ccc513fb7e">remmina_file_generate_filename</a>(<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile)</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;{</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; gchar *invalid_chars = <span class="stringliteral">&quot;\\%|/$?&lt;&gt;:*. \&quot;&quot;</span>;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; GString *filenamestr;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keyword">const</span> gchar *s;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="comment">/* functions we can use</span></div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;<span class="comment"> * g_strstrip( string )</span></div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;<span class="comment"> * Removes leading and trailing whitespace from a string</span></div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;<span class="comment"> * g_strdelimit (str, invalid_chars, &#39;-&#39;))</span></div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;<span class="comment"> * Convert each invalid_chars in a hyphen</span></div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;<span class="comment"> * g_ascii_strdown(string)</span></div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;<span class="comment"> * all lowercase</span></div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;<span class="comment"> * To be safe we should remove control characters as well (but I&#39;m lazy)</span></div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;<span class="comment"> * https://rosettacode.org/wiki/Strip_control_codes_and_extended_characters_from_a_string#C</span></div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;<span class="comment"> * g_utf8_strncpy (gchar *dest, const gchar *src, gsize n);</span></div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;<span class="comment"> * copies a given number of characters instead of a given number of bytes. The src string must be valid UTF-8 encoded text.</span></div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;<span class="comment"> * g_utf8_validate (const gchar *str, gssize max_len, const gchar **end);</span></div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160;<span class="comment"> * Validates UTF-8 encoded text.</span></div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="comment">//g_free(remminafile-&gt;filename), remminafile-&gt;filename = NULL;</span></div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; filenamestr = g_string_new(g_strdup_printf(<span class="stringliteral">&quot;%s&quot;</span>,</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#aa1544a98f03088dc260ed98f2deac94f">remmina_file_name</a>));</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="keywordflow">if</span> ((s = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">&quot;name&quot;</span>)) == NULL) s = <span class="stringliteral">&quot;name&quot;</span>;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="keywordflow">if</span> (g_strstr_len(filenamestr-&gt;str, -1, <span class="stringliteral">&quot;%N&quot;</span>) != NULL)</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <a class="code" href="remmina__utils_8c.html#ac804e6111e538ee2fa425b8b6fd1fb66">remmina_utils_string_replace_all</a>(filenamestr, <span class="stringliteral">&quot;%N&quot;</span>, s);</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160;</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keywordflow">if</span> ((s = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">&quot;group&quot;</span>)) == NULL) s = <span class="stringliteral">&quot;group&quot;</span>;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="keywordflow">if</span> (g_strstr_len(filenamestr-&gt;str, -1, <span class="stringliteral">&quot;%G&quot;</span>) != NULL)</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <a class="code" href="remmina__utils_8c.html#ac804e6111e538ee2fa425b8b6fd1fb66">remmina_utils_string_replace_all</a>(filenamestr, <span class="stringliteral">&quot;%G&quot;</span>, s);</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="keywordflow">if</span> ((s = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">&quot;protocol&quot;</span>)) == NULL) s = <span class="stringliteral">&quot;proto&quot;</span>;</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="keywordflow">if</span> (g_strstr_len(filenamestr-&gt;str, -1, <span class="stringliteral">&quot;%P&quot;</span>) != NULL)</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <a class="code" href="remmina__utils_8c.html#ac804e6111e538ee2fa425b8b6fd1fb66">remmina_utils_string_replace_all</a>(filenamestr, <span class="stringliteral">&quot;%P&quot;</span>, s);</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <span class="keywordflow">if</span> ((s = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">&quot;server&quot;</span>)) == NULL) s = <span class="stringliteral">&quot;host&quot;</span>;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keywordflow">if</span> (g_strstr_len(filenamestr-&gt;str, -1, <span class="stringliteral">&quot;%h&quot;</span>) != NULL)</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <a class="code" href="remmina__utils_8c.html#ac804e6111e538ee2fa425b8b6fd1fb66">remmina_utils_string_replace_all</a>(filenamestr, <span class="stringliteral">&quot;%h&quot;</span>, s);</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; s = NULL;</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; g_autofree gchar *filename = g_strdelimit(g_ascii_strdown(g_strstrip(g_string_free(filenamestr, FALSE)), -1),</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; invalid_chars, <span class="charliteral">&#39;-&#39;</span>);</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; GDir *dir = g_dir_open(<a class="code" href="remmina__file__manager_8c.html#aa65bc30beb59d607ba430d966e7e27f5">remmina_file_get_datadir</a>(), 0, NULL);</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <span class="keywordflow">if</span> (dir != NULL)</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; remminafile-&gt;filename = g_strdup_printf(<span class="stringliteral">&quot;%s/%s.remmina&quot;</span>, <a class="code" href="remmina__file__manager_8c.html#aa65bc30beb59d607ba430d966e7e27f5">remmina_file_get_datadir</a>(), filename);</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; remminafile-&gt;filename = NULL;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; g_dir_close(dir);</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;}</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160;</div><div class="line"><a name="l00182"></a><span class="lineno"><a class="line" href="remmina__file_8h.html#ab03b042504c09c1ad880ac126a703114"> 182</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__file_8c.html#ab03b042504c09c1ad880ac126a703114">remmina_file_set_filename</a>(<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile, <span class="keyword">const</span> gchar *filename)</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160;{</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; g_free(remminafile-&gt;filename);</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; remminafile-&gt;filename = g_strdup(filename);</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160;}</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160;</div><div class="line"><a name="l00189"></a><span class="lineno"><a class="line" href="remmina__file_8h.html#aeefa562baee867fba8c06165ae656de1"> 189</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__file_8c.html#aeefa562baee867fba8c06165ae656de1">remmina_file_set_statefile</a>(<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile)</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160;{</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160;</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="keywordflow">if</span> (!remminafile)</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; g_free(remminafile-&gt;statefile);</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; gchar *basename = g_path_get_basename(remminafile-&gt;filename);</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; gchar *<a class="code" href="remmina__file__manager_8c.html#ace1098aad45256ac0b0155cb042472e9">cachedir</a> = g_build_path(<span class="stringliteral">&quot;/&quot;</span>, g_get_user_cache_dir(), <span class="stringliteral">&quot;remmina&quot;</span>, NULL);</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; GString *fname = g_string_new(basename);</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160;</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; remminafile-&gt;statefile = g_strdup_printf(<span class="stringliteral">&quot;%s/%s.state&quot;</span>, cachedir, fname-&gt;str);</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160;</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; g_free(cachedir);</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; g_string_free(fname, TRUE);</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; g_free(basename);</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160;}</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160;</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160;<span class="keyword">const</span> gchar *</div><div class="line"><a name="l00210"></a><span class="lineno"><a class="line" href="remmina__file_8h.html#ad1e4f3a0f64cd98e301044b6c38a1f1d"> 210</a></span>&#160;<a class="code" href="remmina__file_8c.html#ad1e4f3a0f64cd98e301044b6c38a1f1d">remmina_file_get_filename</a>(<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile)</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160;{</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <span class="keywordflow">return</span> remminafile-&gt;filename;</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160;}</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160;</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160;<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *</div><div class="line"><a name="l00217"></a><span class="lineno"><a class="line" href="remmina__file_8h.html#ac1685edf35a793a396ce039d7eec5343"> 217</a></span>&#160;<a class="code" href="remmina__file_8c.html#ac1685edf35a793a396ce039d7eec5343">remmina_file_copy</a>(<span class="keyword">const</span> gchar *filename)</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160;{</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile;</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; gchar *buf;</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160;</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; remminafile = <a class="code" href="remmina__file_8c.html#ac1cc2d7f827f7d64c7fd3edf10e9383e">remmina_file_load</a>(filename);</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; buf = g_strdup_printf( <span class="stringliteral">&quot;COPY %s&quot;</span>,</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">&quot;name&quot;</span>));</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, <span class="stringliteral">&quot;name&quot;</span>, buf);</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; g_free(buf);</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160;</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <span class="keywordflow">if</span> (remminafile)</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <a class="code" href="remmina__file_8c.html#ac952f8ddb715314f11cef1ccc513fb7e">remmina_file_generate_filename</a>(remminafile);</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160;</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <span class="keywordflow">return</span> remminafile;</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160;}</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160;</div><div class="line"><a name="l00235"></a><span class="lineno"><a class="line" href="remmina__file_8c.html#a1399e5b83aa040b6613cf98be45b4c99"> 235</a></span>&#160;<span class="keyword">const</span> <a class="code" href="struct___remmina_protocol_setting.html">RemminaProtocolSetting</a> *<a class="code" href="remmina__file_8c.html#a1399e5b83aa040b6613cf98be45b4c99">find_protocol_setting</a>(<span class="keyword">const</span> gchar *name, <a class="code" href="struct___remmina_protocol_plugin.html">RemminaProtocolPlugin</a> *protocol_plugin)</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160;{</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <span class="keyword">const</span> <a class="code" href="struct___remmina_protocol_setting.html">RemminaProtocolSetting</a> *setting_iter;</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160;</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <span class="keywordflow">if</span> (protocol_plugin == NULL)</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160;</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; setting_iter = protocol_plugin-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#aae09a7e2c978cc36e85d0f295518978d">basic_settings</a>;</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <span class="keywordflow">if</span> (setting_iter) {</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; <span class="keywordflow">while</span> (setting_iter-&gt;<a class="code" href="struct___remmina_protocol_setting.html#a6274d44b592a54162ff583135e55ffc9">type</a> != <a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350ad898beb6ae625dee1ae27de75f1ab4e3">REMMINA_PROTOCOL_SETTING_TYPE_END</a>) {</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; <span class="keywordflow">if</span> (strcmp(name, <a class="code" href="remmina__plugin__manager_8c.html#af60b8edfa50563ae4c7593efc3deed55">remmina_plugin_manager_get_canonical_setting_name</a>(setting_iter)) == 0)</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <span class="keywordflow">return</span> setting_iter;</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; setting_iter++;</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; }</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; }</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160;</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; setting_iter = protocol_plugin-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#aceb00d9dff794500ccb04a1373eb32db">advanced_settings</a>;</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <span class="keywordflow">if</span> (setting_iter) {</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; <span class="keywordflow">while</span> (setting_iter-&gt;<a class="code" href="struct___remmina_protocol_setting.html#a6274d44b592a54162ff583135e55ffc9">type</a> != <a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350ad898beb6ae625dee1ae27de75f1ab4e3">REMMINA_PROTOCOL_SETTING_TYPE_END</a>) {</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <span class="keywordflow">if</span> (strcmp(name, <a class="code" href="remmina__plugin__manager_8c.html#af60b8edfa50563ae4c7593efc3deed55">remmina_plugin_manager_get_canonical_setting_name</a>(setting_iter)) == 0)</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <span class="keywordflow">return</span> setting_iter;</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; setting_iter++;</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; }</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; }</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160;</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160;}</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160;</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160;</div><div class="line"><a name="l00265"></a><span class="lineno"><a class="line" href="remmina__file_8c.html#a42231fba69c82eb51a4e210c2de76960"> 265</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__file_8c.html#a42231fba69c82eb51a4e210c2de76960">upgrade_sshkeys_202001_mig_common_setting</a>(<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile, gboolean protocol_is_ssh, gboolean ssh_enabled, gchar *suffix)</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160;{</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; gchar *src_key;</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; gchar *dst_key;</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; <span class="keyword">const</span> gchar *val;</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160;</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; src_key = g_strdup_printf(<span class="stringliteral">&quot;ssh_%s&quot;</span>, suffix);</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; dst_key = g_strdup_printf(<span class="stringliteral">&quot;ssh_tunnel_%s&quot;</span>, suffix);</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160;</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; val = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, src_key);</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; <span class="keywordflow">if</span> (!val) {</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; g_free(dst_key);</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; g_free(src_key);</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; }</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160;</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; <span class="keywordflow">if</span> (ssh_enabled &amp;&amp; val &amp;&amp; val[0] != 0)</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, dst_key, val);</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160;</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; <span class="keywordflow">if</span> (!protocol_is_ssh)</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, src_key, NULL);</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160;</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; g_free(dst_key);</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; g_free(src_key);</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160;}</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160;</div><div class="line"><a name="l00291"></a><span class="lineno"><a class="line" href="remmina__file_8c.html#a3feeafd4956b364975aef178ef99b7a6"> 291</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__file_8c.html#a3feeafd4956b364975aef178ef99b7a6">upgrade_sshkeys_202001</a>(<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile)</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160;{</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160;</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; gboolean protocol_is_ssh;</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; gboolean ssh_enabled;</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <span class="keyword">const</span> gchar *val;</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160;</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">&quot;ssh_enabled&quot;</span>)) {</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; <span class="comment">/* Upgrade ssh params from remmina pre 1.4 */</span></div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160;</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; ssh_enabled = <a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(remminafile, <span class="stringliteral">&quot;ssh_enabled&quot;</span>, 0);</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; val = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">&quot;protocol&quot;</span>);</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; protocol_is_ssh = (strcmp(val, <span class="stringliteral">&quot;SSH&quot;</span>) == 0);</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160;</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; <a class="code" href="remmina__file_8c.html#a42231fba69c82eb51a4e210c2de76960">upgrade_sshkeys_202001_mig_common_setting</a>(remminafile, protocol_is_ssh, ssh_enabled, <span class="stringliteral">&quot;stricthostkeycheck&quot;</span>);</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; <a class="code" href="remmina__file_8c.html#a42231fba69c82eb51a4e210c2de76960">upgrade_sshkeys_202001_mig_common_setting</a>(remminafile, protocol_is_ssh, ssh_enabled, <span class="stringliteral">&quot;kex_algorithms&quot;</span>);</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; <a class="code" href="remmina__file_8c.html#a42231fba69c82eb51a4e210c2de76960">upgrade_sshkeys_202001_mig_common_setting</a>(remminafile, protocol_is_ssh, ssh_enabled, <span class="stringliteral">&quot;hostkeytypes&quot;</span>);</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <a class="code" href="remmina__file_8c.html#a42231fba69c82eb51a4e210c2de76960">upgrade_sshkeys_202001_mig_common_setting</a>(remminafile, protocol_is_ssh, ssh_enabled, <span class="stringliteral">&quot;ciphers&quot;</span>);</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; <a class="code" href="remmina__file_8c.html#a42231fba69c82eb51a4e210c2de76960">upgrade_sshkeys_202001_mig_common_setting</a>(remminafile, protocol_is_ssh, ssh_enabled, <span class="stringliteral">&quot;proxycommand&quot;</span>);</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; <a class="code" href="remmina__file_8c.html#a42231fba69c82eb51a4e210c2de76960">upgrade_sshkeys_202001_mig_common_setting</a>(remminafile, protocol_is_ssh, ssh_enabled, <span class="stringliteral">&quot;passphrase&quot;</span>);</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; <a class="code" href="remmina__file_8c.html#a42231fba69c82eb51a4e210c2de76960">upgrade_sshkeys_202001_mig_common_setting</a>(remminafile, protocol_is_ssh, ssh_enabled, <span class="stringliteral">&quot;auth&quot;</span>);</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; <a class="code" href="remmina__file_8c.html#a42231fba69c82eb51a4e210c2de76960">upgrade_sshkeys_202001_mig_common_setting</a>(remminafile, protocol_is_ssh, ssh_enabled, <span class="stringliteral">&quot;privatekey&quot;</span>);</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160;</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; val = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">&quot;ssh_loopback&quot;</span>);</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; <span class="keywordflow">if</span> (val) {</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, <span class="stringliteral">&quot;ssh_tunnel_loopback&quot;</span>, val);</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, <span class="stringliteral">&quot;ssh_loopback&quot;</span>, NULL);</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; }</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160;</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; val = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">&quot;ssh_username&quot;</span>);</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; <span class="keywordflow">if</span> (val) {</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, <span class="stringliteral">&quot;ssh_tunnel_username&quot;</span>, val);</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; <span class="keywordflow">if</span> (protocol_is_ssh)</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, <span class="stringliteral">&quot;username&quot;</span>, val);</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, <span class="stringliteral">&quot;ssh_username&quot;</span>, NULL);</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; }</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160;</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; val = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">&quot;ssh_password&quot;</span>);</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; <span class="keywordflow">if</span> (val) {</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, <span class="stringliteral">&quot;ssh_tunnel_password&quot;</span>, val);</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; <span class="keywordflow">if</span> (protocol_is_ssh)</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, <span class="stringliteral">&quot;password&quot;</span>, val);</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, <span class="stringliteral">&quot;ssh_password&quot;</span>, NULL);</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; }</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160;</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; val = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">&quot;ssh_server&quot;</span>);</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; <span class="keywordflow">if</span> (val) {</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, <span class="stringliteral">&quot;ssh_tunnel_server&quot;</span>, val);</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, <span class="stringliteral">&quot;ssh_server&quot;</span>, NULL);</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; }</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160;</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; <span class="comment">/* Real key removal will be done by remmina_file_save() */</span></div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160;</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; <a class="code" href="remmina__file_8c.html#af153b0d289ac93f6ecdaa15d5f3b9b8c">remmina_file_set_int</a>(remminafile, <span class="stringliteral">&quot;ssh_tunnel_enabled&quot;</span>, ssh_enabled);</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; }</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160;}</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160;</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160;<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *</div><div class="line"><a name="l00350"></a><span class="lineno"><a class="line" href="remmina__file_8h.html#ac1cc2d7f827f7d64c7fd3edf10e9383e"> 350</a></span>&#160;<a class="code" href="remmina__file_8c.html#ac1cc2d7f827f7d64c7fd3edf10e9383e">remmina_file_load</a>(<span class="keyword">const</span> gchar *filename)</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160;{</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; GKeyFile *gkeyfile;</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile;</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; gchar *key;</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; gchar *s;</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; <a class="code" href="struct___remmina_protocol_plugin.html">RemminaProtocolPlugin</a> *protocol_plugin;</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; <a class="code" href="struct___remmina_secret_plugin.html">RemminaSecretPlugin</a> *secret_plugin;</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; gboolean secret_service_available;</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; <span class="keywordtype">int</span> w, h;</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160;</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; gkeyfile = g_key_file_new();</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160;</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; <span class="keywordflow">if</span> (g_file_test(filename, G_FILE_TEST_IS_REGULAR | G_FILE_TEST_EXISTS)) {</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; <span class="keywordflow">if</span> (!g_key_file_load_from_file(gkeyfile, filename, G_KEY_FILE_NONE, NULL)) {</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; g_key_file_free(gkeyfile);</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Unable to load remmina profile file %s: g_key_file_load_from_file() returned NULL.\n&quot;</span>, filename);</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; }</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; }</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160;</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; <span class="keywordflow">if</span> (!g_key_file_has_key(gkeyfile, KEYFILE_GROUP_REMMINA, <span class="stringliteral">&quot;name&quot;</span>, NULL)) {</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160;</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Unable to load remmina profile file %s: cannot find key name= in section remmina.\n&quot;</span>, filename);</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; remminafile = NULL;</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; <a class="code" href="remmina__file_8c.html#aeefa562baee867fba8c06165ae656de1">remmina_file_set_statefile</a>(remminafile);</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160;</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; g_key_file_free(gkeyfile);</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160;</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; <span class="keywordflow">return</span> remminafile;</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; }</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; remminafile = <a class="code" href="remmina__file_8c.html#adab087b7139756f029020a87a5438cfa">remmina_file_new_empty</a>();</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160;</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; protocol_plugin = NULL;</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160;</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; <span class="comment">/* Identify the protocol plugin and get pointers to its RemminaProtocolSetting structs */</span></div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; gchar *proto = g_key_file_get_string(gkeyfile, KEYFILE_GROUP_REMMINA, <span class="stringliteral">&quot;protocol&quot;</span>, NULL);</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; <span class="keywordflow">if</span> (proto) {</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; protocol_plugin = (<a class="code" href="struct___remmina_protocol_plugin.html">RemminaProtocolPlugin</a> *)<a class="code" href="remmina__plugin__manager_8c.html#a3872c8656a8a3d5147bcc603471c1932">remmina_plugin_manager_get_plugin</a>(<a class="code" href="plugin_8h.html#aaf53c620d115a4642130227cff4a624aa45e094c248384c12cdafd9d088e4aa24">REMMINA_PLUGIN_TYPE_PROTOCOL</a>, proto);</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; g_free(proto);</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; }</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160;</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; secret_plugin = <a class="code" href="remmina__plugin__manager_8c.html#ad380a98f6624aa8c830015c8b428b7b4">remmina_plugin_manager_get_secret_plugin</a>();</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; secret_service_available = secret_plugin &amp;&amp; secret_plugin-&gt;<a class="code" href="struct___remmina_secret_plugin.html#a2123e14795b104f5fe8d77a4b7847261">is_service_available</a>(secret_plugin);</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160;</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; remminafile-&gt;filename = g_strdup(filename);</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; gsize nkeys = 0;</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; gint keyindex;</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; GError *err = NULL;</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; gchar **keys = g_key_file_get_keys(gkeyfile, KEYFILE_GROUP_REMMINA, &amp;nkeys, &amp;err);</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; <span class="keywordflow">if</span> (keys == NULL) {</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; g_clear_error(&amp;err);</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; }</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; <span class="keywordflow">for</span> (keyindex = 0; keyindex &lt; nkeys; ++keyindex) {</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; key = keys[keyindex];</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; <span class="comment">/* It may contain an encrypted password</span></div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160;<span class="comment"> * - password = . // secret_service</span></div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160;<span class="comment"> * - password = $argon2id$v=19$m=262144,t=3,p=… // libsodium</span></div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; <span class="keywordflow">if</span> (protocol_plugin &amp;&amp; <a class="code" href="remmina__plugin__manager_8c.html#aef243c58b9e8c778232d5acb32c7729b">remmina_plugin_manager_is_encrypted_setting</a>(protocol_plugin, key)) {</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; s = g_key_file_get_string(gkeyfile, KEYFILE_GROUP_REMMINA, key, NULL);</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160;<span class="preprocessor">#if 0</span></div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; <span class="keywordflow">switch</span> (<a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a788378c190a4ec0ebcf60c570f3b50d5">enc_mode</a>) {</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; <span class="keywordflow">case</span> <a class="code" href="remmina__pref_8h.html#ab48899087cc647f0f791ed0c459adc53a90f2025ec8d2c4987db5591e8e3b4076">RM_ENC_MODE_SODIUM_INTERACTIVE</a>:</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; <span class="keywordflow">case</span> <a class="code" href="remmina__pref_8h.html#ab48899087cc647f0f791ed0c459adc53ad5263951640011bc43bd8a31f67a9f8b">RM_ENC_MODE_SODIUM_MODERATE</a>:</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; <span class="keywordflow">case</span> <a class="code" href="remmina__pref_8h.html#ab48899087cc647f0f791ed0c459adc53a0378e0f09c7bc6fd7f8d95b3827ad561">RM_ENC_MODE_SODIUM_SENSITIVE</a>:</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160;<span class="preprocessor">#if SODIUM_VERSION_INT &gt;= 90200</span></div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; <span class="keywordflow">case</span> <a class="code" href="remmina__pref_8h.html#ab48899087cc647f0f791ed0c459adc53a315a71c81da464332f675857ae84b880">RM_ENC_MODE_GCRYPT</a>:</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; <span class="keywordflow">case</span> <a class="code" href="remmina__pref_8h.html#ab48899087cc647f0f791ed0c459adc53aa57e81572c52d0ea2bbb8dd90b10651a">RM_ENC_MODE_SECRET</a>:</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; }</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; <span class="keywordflow">if</span> ((g_strcmp0(s, <span class="stringliteral">&quot;.&quot;</span>) == 0) &amp;&amp; (secret_service_available)) {</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; gchar *sec = secret_plugin-&gt;<a class="code" href="struct___remmina_secret_plugin.html#a34defea2606bbc99a2c334f57e056b06">get_password</a>(secret_plugin, remminafile, key);</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, key, sec);</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; <span class="comment">/* Annotate in spsettings that this value comes from secret_plugin */</span></div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; g_hash_table_insert(remminafile-&gt;spsettings, g_strdup(key), NULL);</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; g_free(sec);</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; gchar *decrypted;</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; decrypted = <a class="code" href="remmina__crypt_8c.html#a3fe2fa245d401146adf02a3a8f996ab9">remmina_crypt_decrypt</a>(s);</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, key, decrypted);</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; g_free(decrypted);</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; }</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; g_free(s), s = NULL;</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; <span class="comment">/* If we find &quot;resolution&quot;, then we split it in two */</span></div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; <span class="keywordflow">if</span> (strcmp(key, <span class="stringliteral">&quot;resolution&quot;</span>) == 0) {</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; gchar *resolution_str = g_key_file_get_string(gkeyfile, KEYFILE_GROUP_REMMINA, key, NULL);</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="remmina__public_8c.html#aaf3fdb980c24cd06965b85ebcdd79173">remmina_public_split_resolution_string</a>(resolution_str, &amp;w, &amp;h)) {</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; gchar *buf;</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; buf = g_strdup_printf(<span class="stringliteral">&quot;%i&quot;</span>, w); <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, <span class="stringliteral">&quot;resolution_width&quot;</span>, buf); g_free(buf);</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; buf = g_strdup_printf(<span class="stringliteral">&quot;%i&quot;</span>, h); <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, <span class="stringliteral">&quot;resolution_height&quot;</span>, buf); g_free(buf);</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, <span class="stringliteral">&quot;resolution_width&quot;</span>, NULL);</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, <span class="stringliteral">&quot;resolution_height&quot;</span>, NULL);</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; }</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; g_free(resolution_str);</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; gchar *value;</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; value = g_key_file_get_string(gkeyfile, KEYFILE_GROUP_REMMINA, key, NULL);</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, key, value);</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; g_free(value);</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; }</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; }</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; }</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160;</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; <a class="code" href="remmina__file_8c.html#a3feeafd4956b364975aef178ef99b7a6">upgrade_sshkeys_202001</a>(remminafile);</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; g_strfreev(keys);</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; <a class="code" href="remmina__file_8c.html#aeefa562baee867fba8c06165ae656de1">remmina_file_set_statefile</a>(remminafile);</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; g_key_file_free(gkeyfile);</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; <span class="keywordflow">return</span> remminafile;</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160;}</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160;</div><div class="line"><a name="l00469"></a><span class="lineno"><a class="line" href="remmina__file_8h.html#a85ca1ca2d0bf9ef29e490c6f4527a954"> 469</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile, <span class="keyword">const</span> gchar *setting, <span class="keyword">const</span> gchar *value)</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160;{</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160;</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; <span class="comment">/* Note: setting and value are copied on the heap, so it is responsibility of the caller</span></div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160;<span class="comment"> * to deallocate them when returning from remmina_file_set_string() if needed */</span></div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160;</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="remmina__masterthread__exec_8c.html#a3a52e863a3a3da6da6bb5d36c13b7ff4">remmina_masterthread_exec_is_main_thread</a>()) {</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; <span class="comment">/* Allow the execution of this function from a non main thread</span></div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160;<span class="comment"> * (plugins needs it to have user credentials)*/</span></div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; <a class="code" href="structremmina__masterthread__exec__data.html">RemminaMTExecData</a> *d;</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; d = (<a class="code" href="structremmina__masterthread__exec__data.html">RemminaMTExecData</a> *)g_malloc(<span class="keyword">sizeof</span>(<a class="code" href="structremmina__masterthread__exec__data.html">RemminaMTExecData</a>));</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#ab3d58f7a9847ce04c9dcd3917910fdb1">func</a> = FUNC_FILE_SET_STRING;</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#af4aac360c396741c659474158d7c0e87">file_set_string</a>.remminafile = remminafile;</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#af4aac360c396741c659474158d7c0e87">file_set_string</a>.setting = setting;</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#af4aac360c396741c659474158d7c0e87">file_set_string</a>.value = value;</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; <a class="code" href="remmina__masterthread__exec_8c.html#a14628c2470cac50e87916a70ea05c97d">remmina_masterthread_exec_and_wait</a>(d);</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; g_free(d);</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; }</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160;</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; <span class="keywordflow">if</span> (value) {</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; <span class="comment">/* We refuse to accept to set the &quot;resolution&quot; field */</span></div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; <span class="keywordflow">if</span> (strcmp(setting, <span class="stringliteral">&quot;resolution&quot;</span>) == 0) {</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; <span class="comment">// TRANSLATORS: This is a message that pops up when an external Remmina plugin tries to set the window resolution using a legacy parameter.</span></div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; <span class="keyword">const</span> gchar *message = _(<span class="stringliteral">&quot;Using the «resolution» parameter in the Remmina preferences file is deprecated.\n&quot;</span>);</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; REMMINA_CRITICAL(message);</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; <a class="code" href="remmina__main_8c.html#ad99b9c0bf2fa8c166a8b4a09e06ffdf7">remmina_main_show_warning_dialog</a>(message);</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; }</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; g_hash_table_insert(remminafile-&gt;settings, g_strdup(setting), g_strdup(value));</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; g_hash_table_insert(remminafile-&gt;settings, g_strdup(setting), g_strdup(<span class="stringliteral">&quot;&quot;</span>));</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; }</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160;}</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160;</div><div class="line"><a name="l00505"></a><span class="lineno"><a class="line" href="remmina__file_8h.html#a2c41790e4881335bf934b6c10f94f29d"> 505</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__file_8c.html#a2c41790e4881335bf934b6c10f94f29d">remmina_file_set_state</a>(<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile, <span class="keyword">const</span> gchar *setting, <span class="keyword">const</span> gchar *value)</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160;{</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160;</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; <span class="keywordflow">if</span> (value &amp;&amp; value[0] != 0)</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; g_hash_table_insert(remminafile-&gt;states, g_strdup(setting), g_strdup(value));</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; g_hash_table_insert(remminafile-&gt;states, g_strdup(setting), g_strdup(<span class="stringliteral">&quot;&quot;</span>));</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160;}</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160;</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160;<span class="keyword">const</span> gchar *</div><div class="line"><a name="l00516"></a><span class="lineno"><a class="line" href="remmina__file_8h.html#a8eb1b213d9d08c6ad13683ce05f4355e"> 516</a></span>&#160;<a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile, <span class="keyword">const</span> gchar *setting)</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160;{</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; gchar *value;</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160;</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; <span class="comment">/* Returned value is a pointer to the string stored on the hash table,</span></div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160;<span class="comment"> * please do not free it or the hash table will contain invalid pointer */</span></div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="remmina__masterthread__exec_8c.html#a3a52e863a3a3da6da6bb5d36c13b7ff4">remmina_masterthread_exec_is_main_thread</a>()) {</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; <span class="comment">/* Allow the execution of this function from a non main thread</span></div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160;<span class="comment"> * (plugins needs it to have user credentials)*/</span></div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; <a class="code" href="structremmina__masterthread__exec__data.html">RemminaMTExecData</a> *d;</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; <span class="keyword">const</span> gchar *retval;</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; d = (<a class="code" href="structremmina__masterthread__exec__data.html">RemminaMTExecData</a> *)g_malloc(<span class="keyword">sizeof</span>(<a class="code" href="structremmina__masterthread__exec__data.html">RemminaMTExecData</a>));</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#ab3d58f7a9847ce04c9dcd3917910fdb1">func</a> = FUNC_FILE_GET_STRING;</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#ac76a0900842e936efdd2add9ec352886">file_get_string</a>.remminafile = remminafile;</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#ac76a0900842e936efdd2add9ec352886">file_get_string</a>.setting = setting;</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; <a class="code" href="remmina__masterthread__exec_8c.html#a14628c2470cac50e87916a70ea05c97d">remmina_masterthread_exec_and_wait</a>(d);</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; retval = d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#ac76a0900842e936efdd2add9ec352886">file_get_string</a>.retval;</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; g_free(d);</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; <span class="keywordflow">return</span> retval;</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; }</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160;</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; <span class="keywordflow">if</span> (strcmp(setting, <span class="stringliteral">&quot;resolution&quot;</span>) == 0) {</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; <span class="comment">// TRANSLATORS: This is a message that pop-up when an external Remmina plugin tries to set the windows resolution using a legacy parameter.</span></div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; <span class="keyword">const</span> gchar *message = _(<span class="stringliteral">&quot;Using the «resolution» parameter in the Remmina preferences file is deprecated.\n&quot;</span>);</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; REMMINA_CRITICAL(message);</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; <a class="code" href="remmina__main_8c.html#ad99b9c0bf2fa8c166a8b4a09e06ffdf7">remmina_main_show_warning_dialog</a>(message);</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; }</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160;</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; value = (gchar *)g_hash_table_lookup(remminafile-&gt;settings, setting);</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; <span class="keywordflow">return</span> value &amp;&amp; value[0] ? value : NULL;</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160;}</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160;</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160;gchar *</div><div class="line"><a name="l00551"></a><span class="lineno"><a class="line" href="remmina__file_8h.html#ad514c2523ff0c919ddf535e3dbad9f3a"> 551</a></span>&#160;<a class="code" href="remmina__file_8c.html#ad514c2523ff0c919ddf535e3dbad9f3a">remmina_file_get_secret</a>(<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile, <span class="keyword">const</span> gchar *setting)</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160;{</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160;</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; <span class="comment">/* This function is in the RemminaPluginService table, we cannot remove it</span></div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160;<span class="comment"> * without breaking plugin API */</span></div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; g_warning(<span class="stringliteral">&quot;remmina_file_get_secret(remminafile,“%s”) is deprecated and must not be called. Use remmina_file_get_string() and do not deallocate returned memory.\n&quot;</span>, setting);</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; <span class="keywordflow">return</span> g_strdup(<a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, setting));</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160;}</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160;</div><div class="line"><a name="l00561"></a><span class="lineno"><a class="line" href="remmina__file_8h.html#afd8b12f3d84b4e201b9f465d5b8e0d03"> 561</a></span>&#160;gchar *<a class="code" href="remmina__file_8c.html#afd8b12f3d84b4e201b9f465d5b8e0d03">remmina_file_format_properties</a>(<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile, <span class="keyword">const</span> gchar *setting)</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160;{</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; gchar *res = NULL;</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; GString *fmt_str;</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; GDateTime *now;</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; gchar *date_str = NULL;</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160;</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; fmt_str = g_string_new(setting);</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; <a class="code" href="remmina__utils_8c.html#ac804e6111e538ee2fa425b8b6fd1fb66">remmina_utils_string_replace_all</a>(fmt_str, <span class="stringliteral">&quot;%h&quot;</span>, <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">&quot;server&quot;</span>));</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; <a class="code" href="remmina__utils_8c.html#ac804e6111e538ee2fa425b8b6fd1fb66">remmina_utils_string_replace_all</a>(fmt_str, <span class="stringliteral">&quot;%t&quot;</span>, <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">&quot;ssh_tunnel_server&quot;</span>));</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; <a class="code" href="remmina__utils_8c.html#ac804e6111e538ee2fa425b8b6fd1fb66">remmina_utils_string_replace_all</a>(fmt_str, <span class="stringliteral">&quot;%u&quot;</span>, <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">&quot;username&quot;</span>));</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; <a class="code" href="remmina__utils_8c.html#ac804e6111e538ee2fa425b8b6fd1fb66">remmina_utils_string_replace_all</a>(fmt_str, <span class="stringliteral">&quot;%U&quot;</span>, <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">&quot;ssh_tunnel_username&quot;</span>));</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; <a class="code" href="remmina__utils_8c.html#ac804e6111e538ee2fa425b8b6fd1fb66">remmina_utils_string_replace_all</a>(fmt_str, <span class="stringliteral">&quot;%p&quot;</span>, <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">&quot;name&quot;</span>));</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; <a class="code" href="remmina__utils_8c.html#ac804e6111e538ee2fa425b8b6fd1fb66">remmina_utils_string_replace_all</a>(fmt_str, <span class="stringliteral">&quot;%g&quot;</span>, <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">&quot;group&quot;</span>));</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160;</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; now = g_date_time_new_now_local();</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; date_str = g_date_time_format(now, <span class="stringliteral">&quot;%FT%TZ&quot;</span>);</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; <a class="code" href="remmina__utils_8c.html#ac804e6111e538ee2fa425b8b6fd1fb66">remmina_utils_string_replace_all</a>(fmt_str, <span class="stringliteral">&quot;%d&quot;</span>, date_str);</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; g_free(date_str);</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160;</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; res = g_string_free(fmt_str, FALSE);</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; <span class="keywordflow">return</span> res;</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160;}</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160;</div><div class="line"><a name="l00585"></a><span class="lineno"><a class="line" href="remmina__file_8h.html#af153b0d289ac93f6ecdaa15d5f3b9b8c"> 585</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__file_8c.html#af153b0d289ac93f6ecdaa15d5f3b9b8c">remmina_file_set_int</a>(<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile, <span class="keyword">const</span> gchar *setting, gint value)</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160;{</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; <span class="keywordflow">if</span> (remminafile)</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; g_hash_table_insert(remminafile-&gt;settings,</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; g_strdup(setting),</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; g_strdup_printf(<span class="stringliteral">&quot;%i&quot;</span>, value));</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160;}</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160;</div><div class="line"><a name="l00594"></a><span class="lineno"><a class="line" href="remmina__file_8h.html#ac1089fb270a526fa8a4d1bf65ad4d14e"> 594</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__file_8c.html#ac1089fb270a526fa8a4d1bf65ad4d14e">remmina_file_set_state_int</a>(<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile, <span class="keyword">const</span> gchar *setting, gint value)</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160;{</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; <span class="keywordflow">if</span> (remminafile)</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; g_hash_table_insert(remminafile-&gt;states,</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; g_strdup(setting),</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; g_strdup_printf(<span class="stringliteral">&quot;%i&quot;</span>, value));</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160;}</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160;</div><div class="line"><a name="l00603"></a><span class="lineno"><a class="line" href="remmina__file_8h.html#a4884356c195dcfb4ceacf641a1e74e66"> 603</a></span>&#160;gint <a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile, <span class="keyword">const</span> gchar *setting, gint default_value)</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160;{</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; gchar *value;</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; gint r;</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160;</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; value = g_hash_table_lookup(remminafile-&gt;settings, setting);</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; r = value == NULL ? default_value : (value[0] == <span class="charliteral">&#39;t&#39;</span> ? TRUE : atoi(value));</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; <span class="comment">// TOO verbose: REMMINA_DEBUG (&quot;Integer value is: %d&quot;, r);</span></div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; <span class="keywordflow">return</span> r;</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160;}</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160;</div><div class="line"><a name="l00615"></a><span class="lineno"><a class="line" href="remmina__file_8h.html#aba0aa663aaad89e4df41b42259d29841"> 615</a></span>&#160;gint <a class="code" href="remmina__file_8c.html#aba0aa663aaad89e4df41b42259d29841">remmina_file_get_state_int</a>(<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile, <span class="keyword">const</span> gchar *setting, gint default_value)</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160;{</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; gchar *value;</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; gint r;</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160;</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; value = g_hash_table_lookup(remminafile-&gt;states, setting);</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; r = value == NULL ? default_value : (value[0] == <span class="charliteral">&#39;t&#39;</span> ? TRUE : atoi(value));</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; <span class="comment">// TOO verbose: REMMINA_DEBUG (&quot;Integer value is: %d&quot;, r);</span></div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; <span class="keywordflow">return</span> r;</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160;}</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160;</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160;<span class="comment">// sscanf uses the set language to convert the float.</span></div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160;<span class="comment">// therefore &#39;.&#39; and &#39;,&#39; cannot be used interchangeably.</span></div><div class="line"><a name="l00629"></a><span class="lineno"><a class="line" href="remmina__file_8c.html#a4e31f91e2398f16844f58c1cf13582da"> 629</a></span>&#160;gdouble <a class="code" href="remmina__file_8c.html#a4e31f91e2398f16844f58c1cf13582da">remmina_file_get_double</a>(<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> * remminafile,</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; <span class="keyword">const</span> gchar * setting,</div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; gdouble default_value)</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160;{</div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; gchar *value;</div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160;</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; value = g_hash_table_lookup(remminafile-&gt;settings, setting);</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; <span class="keywordflow">if</span> (!value)</div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160; <span class="keywordflow">return</span> default_value;</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160;</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; <span class="comment">// str to double.</span></div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; <span class="comment">// https://stackoverflow.com/questions/10075294/converting-string-to-a-double-variable-in-c</span></div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; gdouble d;</div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; gint ret = sscanf(value, <span class="stringliteral">&quot;%lf&quot;</span>, &amp;d);</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160;</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; <span class="keywordflow">if</span> (ret != 1)</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; <span class="comment">// failed.</span></div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; d = default_value;</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160;</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160; <span class="comment">// TOO VERBOSE: REMMINA_DEBUG(&quot;Double value is: %lf&quot;, d);</span></div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160; <span class="keywordflow">return</span> d;</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160;}</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160;</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160;<span class="comment">// sscanf uses the set language to convert the float.</span></div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160;<span class="comment">// therefore &#39;.&#39; and &#39;,&#39; cannot be used interchangeably.</span></div><div class="line"><a name="l00655"></a><span class="lineno"><a class="line" href="remmina__file_8h.html#ad2cf2ab34ab748bb984005fdd579d113"> 655</a></span>&#160;gdouble <a class="code" href="remmina__file_8c.html#ad2cf2ab34ab748bb984005fdd579d113">remmina_file_get_state_double</a>(<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> * remminafile,</div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; <span class="keyword">const</span> gchar * setting,</div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; gdouble default_value)</div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160;{</div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160; gchar *value;</div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160;</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; value = g_hash_table_lookup(remminafile-&gt;states, setting);</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; <span class="keywordflow">if</span> (!value)</div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160; <span class="keywordflow">return</span> default_value;</div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160;</div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; <span class="comment">// str to double.</span></div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160; <span class="comment">// https://stackoverflow.com/questions/10075294/converting-string-to-a-double-variable-in-c</span></div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160; gdouble d;</div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160; gint ret = sscanf(value, <span class="stringliteral">&quot;%lf&quot;</span>, &amp;d);</div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160;</div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160; <span class="keywordflow">if</span> (ret != 1)</div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160; <span class="comment">// failed.</span></div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160; d = default_value;</div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160;</div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160; <span class="comment">// TOO VERBOSE: REMMINA_DEBUG(&quot;Double value is: %lf&quot;, d);</span></div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160; <span class="keywordflow">return</span> d;</div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160;}</div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160;</div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160;<span class="keyword">static</span> GKeyFile *</div><div class="line"><a name="l00680"></a><span class="lineno"><a class="line" href="remmina__file_8c.html#a89ec355adbf6e03ad16d7faf810af46f"> 680</a></span>&#160;<a class="code" href="remmina__file_8c.html#a89ec355adbf6e03ad16d7faf810af46f">remmina_file_get_keyfile</a>(<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile)</div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160;{</div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160; GKeyFile *gkeyfile;</div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160;</div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160; <span class="keywordflow">if</span> (remminafile-&gt;filename == NULL)</div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160; gkeyfile = g_key_file_new();</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160; <span class="keywordflow">if</span> (!g_key_file_load_from_file(gkeyfile, remminafile-&gt;filename, G_KEY_FILE_NONE, NULL)) {</div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160; <span class="comment">/* it will fail if it’s a new file, but shouldn’t matter. */</span></div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160; }</div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160; <span class="keywordflow">return</span> gkeyfile;</div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160;}</div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160;</div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160;<span class="keyword">static</span> GKeyFile *</div><div class="line"><a name="l00695"></a><span class="lineno"><a class="line" href="remmina__file_8c.html#a227276a531775a77d497852ce66ebdd2"> 695</a></span>&#160;<a class="code" href="remmina__file_8c.html#a227276a531775a77d497852ce66ebdd2">remmina_file_get_keystate</a>(<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile)</div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160;{</div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160; GKeyFile *gkeyfile;</div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160;</div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160; <span class="keywordflow">if</span> (remminafile-&gt;statefile == NULL)</div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160; gkeyfile = g_key_file_new();</div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160; <span class="keywordflow">if</span> (!g_key_file_load_from_file(gkeyfile, remminafile-&gt;statefile, G_KEY_FILE_NONE, NULL)) {</div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160; <span class="comment">/* it will fail if it’s a new file, but shouldn’t matter. */</span></div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; }</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; <span class="keywordflow">return</span> gkeyfile;</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160;}</div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160;</div><div class="line"><a name="l00709"></a><span class="lineno"><a class="line" href="remmina__file_8h.html#abd2f06bf0a5ddcf7156e5ef7d0c8d4d7"> 709</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__file_8c.html#abd2f06bf0a5ddcf7156e5ef7d0c8d4d7">remmina_file_free</a>(<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile)</div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160;{</div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160; <span class="keywordflow">if</span> (remminafile == NULL)</div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160;</div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160; <span class="keywordflow">if</span> (remminafile-&gt;filename)</div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; g_free(remminafile-&gt;filename);</div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160; <span class="keywordflow">if</span> (remminafile-&gt;statefile)</div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; g_free(remminafile-&gt;statefile);</div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160; <span class="keywordflow">if</span> (remminafile-&gt;settings)</div><div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160; g_hash_table_destroy(remminafile-&gt;settings);</div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160; <span class="keywordflow">if</span> (remminafile-&gt;spsettings)</div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160; g_hash_table_destroy(remminafile-&gt;spsettings);</div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160;</div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160; g_free(remminafile);</div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160;}</div><div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160;</div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160;</div><div class="line"><a name="l00728"></a><span class="lineno"><a class="line" href="remmina__file_8h.html#a8c893a5deec9bc446bd89cc9973416c7"> 728</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__file_8c.html#a8c893a5deec9bc446bd89cc9973416c7">remmina_file_save</a>(<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile)</div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160;{</div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160; <a class="code" href="struct___remmina_secret_plugin.html">RemminaSecretPlugin</a> *secret_plugin;</div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160; gboolean secret_service_available;</div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160; <a class="code" href="struct___remmina_protocol_plugin.html">RemminaProtocolPlugin</a> *protocol_plugin;</div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160; GHashTableIter iter;</div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160; <span class="keyword">const</span> gchar *key, *value;</div><div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160; gchar *s, *proto, *content;</div><div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160; gint nopasswdsave;</div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160; GKeyFile *gkeyfile;</div><div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160; GKeyFile *gkeystate;</div><div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160; gsize length = 0;</div><div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160; GError *err = NULL;</div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160;</div><div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160; <span class="keywordflow">if</span> (remminafile-&gt;prevent_saving)</div><div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160;</div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160; <span class="keywordflow">if</span> ((gkeyfile = <a class="code" href="remmina__file_8c.html#a89ec355adbf6e03ad16d7faf810af46f">remmina_file_get_keyfile</a>(remminafile)) == NULL)</div><div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00748"></a><span class="lineno"> 748</span>&#160;</div><div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160; <span class="keywordflow">if</span> ((gkeystate = <a class="code" href="remmina__file_8c.html#a227276a531775a77d497852ce66ebdd2">remmina_file_get_keystate</a>(remminafile)) == NULL)</div><div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00751"></a><span class="lineno"> 751</span>&#160;</div><div class="line"><a name="l00752"></a><span class="lineno"> 752</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Saving profile&quot;</span>);</div><div class="line"><a name="l00753"></a><span class="lineno"> 753</span>&#160; <span class="comment">/* get disablepasswordstoring */</span></div><div class="line"><a name="l00754"></a><span class="lineno"> 754</span>&#160; nopasswdsave = <a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(remminafile, <span class="stringliteral">&quot;disablepasswordstoring&quot;</span>, 0);</div><div class="line"><a name="l00755"></a><span class="lineno"> 755</span>&#160; <span class="comment">/* Identify the protocol plugin and get pointers to its RemminaProtocolSetting structs */</span></div><div class="line"><a name="l00756"></a><span class="lineno"> 756</span>&#160; proto = (gchar *)g_hash_table_lookup(remminafile-&gt;settings, <span class="stringliteral">&quot;protocol&quot;</span>);</div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span>&#160; <span class="keywordflow">if</span> (proto) {</div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160; protocol_plugin = (<a class="code" href="struct___remmina_protocol_plugin.html">RemminaProtocolPlugin</a> *)<a class="code" href="remmina__plugin__manager_8c.html#a3872c8656a8a3d5147bcc603471c1932">remmina_plugin_manager_get_plugin</a>(<a class="code" href="plugin_8h.html#aaf53c620d115a4642130227cff4a624aa45e094c248384c12cdafd9d088e4aa24">REMMINA_PLUGIN_TYPE_PROTOCOL</a>, proto);</div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160; REMMINA_CRITICAL(<span class="stringliteral">&quot;Saving settings for unknown protocol:&quot;</span>, proto);</div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160; protocol_plugin = NULL;</div><div class="line"><a name="l00762"></a><span class="lineno"> 762</span>&#160; }</div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160;</div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span>&#160; secret_plugin = <a class="code" href="remmina__plugin__manager_8c.html#ad380a98f6624aa8c830015c8b428b7b4">remmina_plugin_manager_get_secret_plugin</a>();</div><div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160; secret_service_available = secret_plugin &amp;&amp; secret_plugin-&gt;<a class="code" href="struct___remmina_secret_plugin.html#a2123e14795b104f5fe8d77a4b7847261">is_service_available</a>(secret_plugin);</div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160;</div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160; g_hash_table_iter_init(&amp;iter, remminafile-&gt;settings);</div><div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160; <span class="keywordflow">while</span> (g_hash_table_iter_next(&amp;iter, (gpointer *)&amp;key, (gpointer *)&amp;value)) {</div><div class="line"><a name="l00769"></a><span class="lineno"> 769</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="remmina__plugin__manager_8c.html#aef243c58b9e8c778232d5acb32c7729b">remmina_plugin_manager_is_encrypted_setting</a>(protocol_plugin, key)) {</div><div class="line"><a name="l00770"></a><span class="lineno"> 770</span>&#160; <span class="keywordflow">if</span> (remminafile-&gt;filename &amp;&amp; g_strcmp0(remminafile-&gt;filename, <a class="code" href="rcw_8c.html#af657fd4825d16d8d003a8b42fbd0c715">remmina_pref_file</a>)) {</div><div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160; <span class="keywordflow">if</span> (secret_service_available &amp;&amp; nopasswdsave == 0) {</div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;We have a secret and disablepasswordstoring=0&quot;</span>);</div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160; <span class="keywordflow">if</span> (value &amp;&amp; value[0]) {</div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160; <span class="keywordflow">if</span> (g_strcmp0(value, <span class="stringliteral">&quot;.&quot;</span>) != 0)</div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span>&#160; secret_plugin-&gt;<a class="code" href="struct___remmina_secret_plugin.html#a03fab6fcb013fa87be06d551f936c317">store_password</a>(secret_plugin, remminafile, key, value);</div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160; g_key_file_set_string(gkeyfile, KEYFILE_GROUP_REMMINA, key, <span class="stringliteral">&quot;.&quot;</span>);</div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160; g_key_file_set_string(gkeyfile, KEYFILE_GROUP_REMMINA, key, <span class="stringliteral">&quot;&quot;</span>);</div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160; secret_plugin-&gt;<a class="code" href="struct___remmina_secret_plugin.html#abbe56963e94b1a131f3e6d9bcafce772">delete_password</a>(secret_plugin, remminafile, key);</div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160; }</div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;We have a password and disablepasswordstoring=0&quot;</span>);</div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160; <span class="keywordflow">if</span> (value &amp;&amp; value[0] &amp;&amp; nopasswdsave == 0) {</div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span>&#160; s = <a class="code" href="remmina__crypt_8c.html#aa02cf0fed3eb68d6a89815c3ba3bf7b1">remmina_crypt_encrypt</a>(value);</div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span>&#160; g_key_file_set_string(gkeyfile, KEYFILE_GROUP_REMMINA, key, s);</div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span>&#160; g_free(s);</div><div class="line"><a name="l00787"></a><span class="lineno"> 787</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160; g_key_file_set_string(gkeyfile, KEYFILE_GROUP_REMMINA, key, <span class="stringliteral">&quot;&quot;</span>);</div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160; }</div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span>&#160; }</div><div class="line"><a name="l00791"></a><span class="lineno"> 791</span>&#160; <span class="keywordflow">if</span> (secret_service_available &amp;&amp; nopasswdsave == 1) {</div><div class="line"><a name="l00792"></a><span class="lineno"> 792</span>&#160; <span class="keywordflow">if</span> (value &amp;&amp; value[0]) {</div><div class="line"><a name="l00793"></a><span class="lineno"> 793</span>&#160; <span class="keywordflow">if</span> (g_strcmp0(value, <span class="stringliteral">&quot;.&quot;</span>) != 0) {</div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Deleting the secret in the keyring as disablepasswordstoring=1&quot;</span>);</div><div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160; secret_plugin-&gt;<a class="code" href="struct___remmina_secret_plugin.html#abbe56963e94b1a131f3e6d9bcafce772">delete_password</a>(secret_plugin, remminafile, key);</div><div class="line"><a name="l00796"></a><span class="lineno"> 796</span>&#160; g_key_file_set_string(gkeyfile, KEYFILE_GROUP_REMMINA, key, <span class="stringliteral">&quot;.&quot;</span>);</div><div class="line"><a name="l00797"></a><span class="lineno"> 797</span>&#160; }</div><div class="line"><a name="l00798"></a><span class="lineno"> 798</span>&#160; }</div><div class="line"><a name="l00799"></a><span class="lineno"> 799</span>&#160; }</div><div class="line"><a name="l00800"></a><span class="lineno"> 800</span>&#160; }</div><div class="line"><a name="l00801"></a><span class="lineno"> 801</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00802"></a><span class="lineno"> 802</span>&#160; g_key_file_set_string(gkeyfile, KEYFILE_GROUP_REMMINA, key, value);</div><div class="line"><a name="l00803"></a><span class="lineno"> 803</span>&#160; }</div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span>&#160; }</div><div class="line"><a name="l00805"></a><span class="lineno"> 805</span>&#160;</div><div class="line"><a name="l00806"></a><span class="lineno"> 806</span>&#160; <span class="comment">/* Avoid storing redundant and deprecated &quot;resolution&quot; field */</span></div><div class="line"><a name="l00807"></a><span class="lineno"> 807</span>&#160; g_key_file_remove_key(gkeyfile, KEYFILE_GROUP_REMMINA, <span class="stringliteral">&quot;resolution&quot;</span>, NULL);</div><div class="line"><a name="l00808"></a><span class="lineno"> 808</span>&#160;</div><div class="line"><a name="l00809"></a><span class="lineno"> 809</span>&#160; <span class="comment">/* Delete old pre-1.4 ssh keys */</span></div><div class="line"><a name="l00810"></a><span class="lineno"> 810</span>&#160; g_key_file_remove_key(gkeyfile, KEYFILE_GROUP_REMMINA, <span class="stringliteral">&quot;ssh_enabled&quot;</span>, NULL);</div><div class="line"><a name="l00811"></a><span class="lineno"> 811</span>&#160; g_key_file_remove_key(gkeyfile, KEYFILE_GROUP_REMMINA, <span class="stringliteral">&quot;save_ssh_server&quot;</span>, NULL);</div><div class="line"><a name="l00812"></a><span class="lineno"> 812</span>&#160; g_key_file_remove_key(gkeyfile, KEYFILE_GROUP_REMMINA, <span class="stringliteral">&quot;save_ssh_username&quot;</span>, NULL);</div><div class="line"><a name="l00813"></a><span class="lineno"> 813</span>&#160;</div><div class="line"><a name="l00814"></a><span class="lineno"> 814</span>&#160; <span class="comment">/* Store gkeyfile to disk (password are already sent to keyring) */</span></div><div class="line"><a name="l00815"></a><span class="lineno"> 815</span>&#160; content = g_key_file_to_data(gkeyfile, &amp;length, NULL);</div><div class="line"><a name="l00816"></a><span class="lineno"> 816</span>&#160;</div><div class="line"><a name="l00817"></a><span class="lineno"> 817</span>&#160; <span class="keywordflow">if</span> (g_file_set_contents(remminafile-&gt;filename, content, length, &amp;err))</div><div class="line"><a name="l00818"></a><span class="lineno"> 818</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Profile saved&quot;</span>);</div><div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160; REMMINA_WARNING(<span class="stringliteral">&quot;Remmina connection profile cannot be saved, with error %d (%s)&quot;</span>, err-&gt;code, err-&gt;message);</div><div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160; <span class="keywordflow">if</span> (err != NULL)</div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160; g_error_free(err);</div><div class="line"><a name="l00823"></a><span class="lineno"> 823</span>&#160;</div><div class="line"><a name="l00824"></a><span class="lineno"> 824</span>&#160; g_free(content), content = NULL;</div><div class="line"><a name="l00825"></a><span class="lineno"> 825</span>&#160; <span class="comment">/* Saving states */</span></div><div class="line"><a name="l00826"></a><span class="lineno"> 826</span>&#160; g_hash_table_iter_init(&amp;iter, remminafile-&gt;states);</div><div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160; <span class="keywordflow">while</span> (g_hash_table_iter_next(&amp;iter, (gpointer *)&amp;key, (gpointer *)&amp;value))</div><div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160; g_key_file_set_string(gkeyfile, KEYFILE_GROUP_STATE, key, value);</div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160; content = g_key_file_to_data(gkeystate, &amp;length, NULL);</div><div class="line"><a name="l00830"></a><span class="lineno"> 830</span>&#160; <span class="keywordflow">if</span> (g_file_set_contents(remminafile-&gt;statefile, content, length, &amp;err))</div><div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Connection profile states saved&quot;</span>);</div><div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160; REMMINA_WARNING(<span class="stringliteral">&quot;Remmina connection profile cannot be saved, with error %d (%s)&quot;</span>, err-&gt;code, err-&gt;message);</div><div class="line"><a name="l00834"></a><span class="lineno"> 834</span>&#160; <span class="keywordflow">if</span> (err != NULL)</div><div class="line"><a name="l00835"></a><span class="lineno"> 835</span>&#160; g_error_free(err);</div><div class="line"><a name="l00836"></a><span class="lineno"> 836</span>&#160; g_free(content), content = NULL;</div><div class="line"><a name="l00837"></a><span class="lineno"> 837</span>&#160; g_key_file_free(gkeyfile);</div><div class="line"><a name="l00838"></a><span class="lineno"> 838</span>&#160; g_key_file_free(gkeystate);</div><div class="line"><a name="l00839"></a><span class="lineno"> 839</span>&#160;</div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a994425a04b78282ff40a05580cc9355c">list_refresh_workaround</a>)</div><div class="line"><a name="l00841"></a><span class="lineno"> 841</span>&#160; <a class="code" href="remmina__main_8c.html#a5ae0372dafe41f96a09097c07d1b270a">remmina_main_update_file_datetime</a>(remminafile);</div><div class="line"><a name="l00842"></a><span class="lineno"> 842</span>&#160;}</div><div class="line"><a name="l00843"></a><span class="lineno"> 843</span>&#160;</div><div class="line"><a name="l00844"></a><span class="lineno"><a class="line" href="remmina__file_8h.html#a3be28ff7f5a9b44dc47f92b883a85ac5"> 844</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__file_8c.html#a3be28ff7f5a9b44dc47f92b883a85ac5">remmina_file_store_secret_plugin_password</a>(<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile, <span class="keyword">const</span> gchar *key, <span class="keyword">const</span> gchar *value)</div><div class="line"><a name="l00845"></a><span class="lineno"> 845</span>&#160;{</div><div class="line"><a name="l00846"></a><span class="lineno"> 846</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00847"></a><span class="lineno"> 847</span>&#160;</div><div class="line"><a name="l00848"></a><span class="lineno"> 848</span>&#160; <span class="comment">/* Only change the password in the keyring. This function</span></div><div class="line"><a name="l00849"></a><span class="lineno"> 849</span>&#160;<span class="comment"> * is a shortcut which avoids updating of date/time of .pref file</span></div><div class="line"><a name="l00850"></a><span class="lineno"> 850</span>&#160;<span class="comment"> * when possible, and is used by the mpchanger */</span></div><div class="line"><a name="l00851"></a><span class="lineno"> 851</span>&#160; <a class="code" href="struct___remmina_secret_plugin.html">RemminaSecretPlugin</a> *plugin;</div><div class="line"><a name="l00852"></a><span class="lineno"> 852</span>&#160;</div><div class="line"><a name="l00853"></a><span class="lineno"> 853</span>&#160; <span class="keywordflow">if</span> (g_hash_table_lookup_extended(remminafile-&gt;spsettings, g_strdup(key), NULL, NULL)) {</div><div class="line"><a name="l00854"></a><span class="lineno"> 854</span>&#160; plugin = <a class="code" href="remmina__plugin__manager_8c.html#ad380a98f6624aa8c830015c8b428b7b4">remmina_plugin_manager_get_secret_plugin</a>();</div><div class="line"><a name="l00855"></a><span class="lineno"> 855</span>&#160; plugin-&gt;<a class="code" href="struct___remmina_secret_plugin.html#a03fab6fcb013fa87be06d551f936c317">store_password</a>(plugin, remminafile, key, value);</div><div class="line"><a name="l00856"></a><span class="lineno"> 856</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00857"></a><span class="lineno"> 857</span>&#160; <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, key, value);</div><div class="line"><a name="l00858"></a><span class="lineno"> 858</span>&#160; <a class="code" href="remmina__file_8c.html#a8c893a5deec9bc446bd89cc9973416c7">remmina_file_save</a>(remminafile);</div><div class="line"><a name="l00859"></a><span class="lineno"> 859</span>&#160; }</div><div class="line"><a name="l00860"></a><span class="lineno"> 860</span>&#160;}</div><div class="line"><a name="l00861"></a><span class="lineno"> 861</span>&#160;</div><div class="line"><a name="l00862"></a><span class="lineno"> 862</span>&#160;<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *</div><div class="line"><a name="l00863"></a><span class="lineno"><a class="line" href="remmina__file_8h.html#a3fb992fced83e0f1c4e4e3c8d2206be5"> 863</a></span>&#160;<a class="code" href="remmina__file_8c.html#a3fb992fced83e0f1c4e4e3c8d2206be5">remmina_file_dup</a>(<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile)</div><div class="line"><a name="l00864"></a><span class="lineno"> 864</span>&#160;{</div><div class="line"><a name="l00865"></a><span class="lineno"> 865</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00866"></a><span class="lineno"> 866</span>&#160; <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *dupfile;</div><div class="line"><a name="l00867"></a><span class="lineno"> 867</span>&#160; GHashTableIter iter;</div><div class="line"><a name="l00868"></a><span class="lineno"> 868</span>&#160; <span class="keyword">const</span> gchar *key, *value;</div><div class="line"><a name="l00869"></a><span class="lineno"> 869</span>&#160;</div><div class="line"><a name="l00870"></a><span class="lineno"> 870</span>&#160; dupfile = <a class="code" href="remmina__file_8c.html#adab087b7139756f029020a87a5438cfa">remmina_file_new_empty</a>();</div><div class="line"><a name="l00871"></a><span class="lineno"> 871</span>&#160; dupfile-&gt;filename = g_strdup(remminafile-&gt;filename);</div><div class="line"><a name="l00872"></a><span class="lineno"> 872</span>&#160;</div><div class="line"><a name="l00873"></a><span class="lineno"> 873</span>&#160; g_hash_table_iter_init(&amp;iter, remminafile-&gt;settings);</div><div class="line"><a name="l00874"></a><span class="lineno"> 874</span>&#160; <span class="keywordflow">while</span> (g_hash_table_iter_next(&amp;iter, (gpointer *)&amp;key, (gpointer *)&amp;value))</div><div class="line"><a name="l00875"></a><span class="lineno"> 875</span>&#160; <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(dupfile, key, value);</div><div class="line"><a name="l00876"></a><span class="lineno"> 876</span>&#160;</div><div class="line"><a name="l00877"></a><span class="lineno"> 877</span>&#160; <a class="code" href="remmina__file_8c.html#aeefa562baee867fba8c06165ae656de1">remmina_file_set_statefile</a>(dupfile);</div><div class="line"><a name="l00878"></a><span class="lineno"> 878</span>&#160; <a class="code" href="remmina__file_8c.html#a3d19095f74e9b7c92d74f11bd5a39a8c">remmina_file_touch</a>(dupfile);</div><div class="line"><a name="l00879"></a><span class="lineno"> 879</span>&#160; <span class="keywordflow">return</span> dupfile;</div><div class="line"><a name="l00880"></a><span class="lineno"> 880</span>&#160;}</div><div class="line"><a name="l00881"></a><span class="lineno"> 881</span>&#160;</div><div class="line"><a name="l00882"></a><span class="lineno"> 882</span>&#160;<span class="keyword">const</span> gchar *</div><div class="line"><a name="l00883"></a><span class="lineno"><a class="line" href="remmina__file_8h.html#a2feb8e9e32f3ff4e2fac836e67a77331"> 883</a></span>&#160;<a class="code" href="remmina__file_8c.html#a2feb8e9e32f3ff4e2fac836e67a77331">remmina_file_get_icon_name</a>(<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile)</div><div class="line"><a name="l00884"></a><span class="lineno"> 884</span>&#160;{</div><div class="line"><a name="l00885"></a><span class="lineno"> 885</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00886"></a><span class="lineno"> 886</span>&#160; <a class="code" href="struct___remmina_protocol_plugin.html">RemminaProtocolPlugin</a> *plugin;</div><div class="line"><a name="l00887"></a><span class="lineno"> 887</span>&#160;</div><div class="line"><a name="l00888"></a><span class="lineno"> 888</span>&#160; plugin = (<a class="code" href="struct___remmina_protocol_plugin.html">RemminaProtocolPlugin</a> *)<a class="code" href="remmina__plugin__manager_8c.html#a3872c8656a8a3d5147bcc603471c1932">remmina_plugin_manager_get_plugin</a>(<a class="code" href="plugin_8h.html#aaf53c620d115a4642130227cff4a624aa45e094c248384c12cdafd9d088e4aa24">REMMINA_PLUGIN_TYPE_PROTOCOL</a>,</div><div class="line"><a name="l00889"></a><span class="lineno"> 889</span>&#160; <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">&quot;protocol&quot;</span>));</div><div class="line"><a name="l00890"></a><span class="lineno"> 890</span>&#160; <span class="keywordflow">if</span> (!plugin)</div><div class="line"><a name="l00891"></a><span class="lineno"> 891</span>&#160; <span class="keywordflow">return</span> g_strconcat(REMMINA_APP_ID, <span class="stringliteral">&quot;-symbolic&quot;</span>, NULL);</div><div class="line"><a name="l00892"></a><span class="lineno"> 892</span>&#160;</div><div class="line"><a name="l00893"></a><span class="lineno"> 893</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(remminafile, <span class="stringliteral">&quot;ssh_tunnel_enabled&quot;</span>, FALSE) ? plugin-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#a8a4c7d195e85a1428abf82e952ff4df3">icon_name_ssh</a> : plugin-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#a9552c70a10eea2b8263dbc7d05e2fb10">icon_name</a>;</div><div class="line"><a name="l00894"></a><span class="lineno"> 894</span>&#160;}</div><div class="line"><a name="l00895"></a><span class="lineno"> 895</span>&#160;</div><div class="line"><a name="l00896"></a><span class="lineno"> 896</span>&#160;<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *</div><div class="line"><a name="l00897"></a><span class="lineno"><a class="line" href="remmina__file_8h.html#a52a0986eaf54c9e606ce9cdf8bb57e60"> 897</a></span>&#160;<a class="code" href="remmina__file_8c.html#a52a0986eaf54c9e606ce9cdf8bb57e60">remmina_file_dup_temp_protocol</a>(<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile, <span class="keyword">const</span> gchar *new_protocol)</div><div class="line"><a name="l00898"></a><span class="lineno"> 898</span>&#160;{</div><div class="line"><a name="l00899"></a><span class="lineno"> 899</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00900"></a><span class="lineno"> 900</span>&#160; <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *tmp;</div><div class="line"><a name="l00901"></a><span class="lineno"> 901</span>&#160;</div><div class="line"><a name="l00902"></a><span class="lineno"> 902</span>&#160; tmp = <a class="code" href="remmina__file_8c.html#a3fb992fced83e0f1c4e4e3c8d2206be5">remmina_file_dup</a>(remminafile);</div><div class="line"><a name="l00903"></a><span class="lineno"> 903</span>&#160; g_free(tmp-&gt;filename);</div><div class="line"><a name="l00904"></a><span class="lineno"> 904</span>&#160; tmp-&gt;filename = NULL;</div><div class="line"><a name="l00905"></a><span class="lineno"> 905</span>&#160; <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(tmp, <span class="stringliteral">&quot;protocol&quot;</span>, new_protocol);</div><div class="line"><a name="l00906"></a><span class="lineno"> 906</span>&#160; <span class="keywordflow">return</span> tmp;</div><div class="line"><a name="l00907"></a><span class="lineno"> 907</span>&#160;}</div><div class="line"><a name="l00908"></a><span class="lineno"> 908</span>&#160;</div><div class="line"><a name="l00909"></a><span class="lineno"><a class="line" href="remmina__file_8h.html#a55f66f2bb81bf427d6837e1adb7fe1d4"> 909</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__file_8c.html#a55f66f2bb81bf427d6837e1adb7fe1d4">remmina_file_delete</a>(<span class="keyword">const</span> gchar *filename)</div><div class="line"><a name="l00910"></a><span class="lineno"> 910</span>&#160;{</div><div class="line"><a name="l00911"></a><span class="lineno"> 911</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00912"></a><span class="lineno"> 912</span>&#160; <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile;</div><div class="line"><a name="l00913"></a><span class="lineno"> 913</span>&#160;</div><div class="line"><a name="l00914"></a><span class="lineno"> 914</span>&#160; remminafile = <a class="code" href="remmina__file_8c.html#ac1cc2d7f827f7d64c7fd3edf10e9383e">remmina_file_load</a>(filename);</div><div class="line"><a name="l00915"></a><span class="lineno"> 915</span>&#160; <span class="keywordflow">if</span> (remminafile) {</div><div class="line"><a name="l00916"></a><span class="lineno"> 916</span>&#160; <a class="code" href="remmina__file_8c.html#a503e53fe49430a5ed310c342c946c014">remmina_file_unsave_passwords</a>(remminafile);</div><div class="line"><a name="l00917"></a><span class="lineno"> 917</span>&#160; <a class="code" href="remmina__file_8c.html#abd2f06bf0a5ddcf7156e5ef7d0c8d4d7">remmina_file_free</a>(remminafile);</div><div class="line"><a name="l00918"></a><span class="lineno"> 918</span>&#160; }</div><div class="line"><a name="l00919"></a><span class="lineno"> 919</span>&#160; g_unlink(filename);</div><div class="line"><a name="l00920"></a><span class="lineno"> 920</span>&#160;}</div><div class="line"><a name="l00921"></a><span class="lineno"> 921</span>&#160;</div><div class="line"><a name="l00922"></a><span class="lineno"> 922</span>&#160;<span class="keyword">const</span> gchar *</div><div class="line"><a name="l00923"></a><span class="lineno"><a class="line" href="remmina__file_8h.html#af8c58daf7ee71345ae548e7a5332a8f6"> 923</a></span>&#160;<a class="code" href="remmina__file_8c.html#af8c58daf7ee71345ae548e7a5332a8f6">remmina_file_get_state</a>(<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile, <span class="keyword">const</span> gchar *setting)</div><div class="line"><a name="l00924"></a><span class="lineno"> 924</span>&#160;{</div><div class="line"><a name="l00925"></a><span class="lineno"> 925</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00926"></a><span class="lineno"> 926</span>&#160; g_autoptr(GError) error = NULL;</div><div class="line"><a name="l00927"></a><span class="lineno"> 927</span>&#160; g_autoptr(GKeyFile) key_file = g_key_file_new();</div><div class="line"><a name="l00928"></a><span class="lineno"> 928</span>&#160;</div><div class="line"><a name="l00929"></a><span class="lineno"> 929</span>&#160; <span class="keywordflow">if</span> (!g_key_file_load_from_file(key_file, remminafile-&gt;statefile, G_KEY_FILE_NONE, &amp;error)) {</div><div class="line"><a name="l00930"></a><span class="lineno"> 930</span>&#160; <span class="keywordflow">if</span> (!g_error_matches(error, G_FILE_ERROR, G_FILE_ERROR_NOENT))</div><div class="line"><a name="l00931"></a><span class="lineno"> 931</span>&#160; REMMINA_CRITICAL(<span class="stringliteral">&quot;Could not load the state file. %s&quot;</span>, error-&gt;message);</div><div class="line"><a name="l00932"></a><span class="lineno"> 932</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00933"></a><span class="lineno"> 933</span>&#160; }</div><div class="line"><a name="l00934"></a><span class="lineno"> 934</span>&#160;</div><div class="line"><a name="l00935"></a><span class="lineno"> 935</span>&#160; g_autofree gchar *val = g_key_file_get_string(key_file, KEYFILE_GROUP_STATE, setting, &amp;error);</div><div class="line"><a name="l00936"></a><span class="lineno"> 936</span>&#160;</div><div class="line"><a name="l00937"></a><span class="lineno"> 937</span>&#160; <span class="keywordflow">if</span> (val == NULL &amp;&amp;</div><div class="line"><a name="l00938"></a><span class="lineno"> 938</span>&#160; !g_error_matches(error, G_KEY_FILE_ERROR, G_KEY_FILE_ERROR_KEY_NOT_FOUND)) {</div><div class="line"><a name="l00939"></a><span class="lineno"> 939</span>&#160; REMMINA_CRITICAL(<span class="stringliteral">&quot;Could not find \&quot;%s\&quot; in the \&quot;%s\&quot; state file. %s&quot;</span>,</div><div class="line"><a name="l00940"></a><span class="lineno"> 940</span>&#160; setting, remminafile-&gt;statefile, error-&gt;message);</div><div class="line"><a name="l00941"></a><span class="lineno"> 941</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00942"></a><span class="lineno"> 942</span>&#160; }</div><div class="line"><a name="l00943"></a><span class="lineno"> 943</span>&#160; <span class="keywordflow">return</span> val &amp;&amp; val[0] ? val : NULL;</div><div class="line"><a name="l00944"></a><span class="lineno"> 944</span>&#160;}</div><div class="line"><a name="l00945"></a><span class="lineno"> 945</span>&#160;</div><div class="line"><a name="l00946"></a><span class="lineno"><a class="line" href="remmina__file_8h.html#a493ffa77b862ff3bad9ea951592715a8"> 946</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__file_8c.html#a493ffa77b862ff3bad9ea951592715a8">remmina_file_state_last_success</a>(<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile)</div><div class="line"><a name="l00947"></a><span class="lineno"> 947</span>&#160;{</div><div class="line"><a name="l00948"></a><span class="lineno"> 948</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00949"></a><span class="lineno"> 949</span>&#160;</div><div class="line"><a name="l00950"></a><span class="lineno"> 950</span>&#160; g_autoptr(GKeyFile) key_statefile = g_key_file_new();</div><div class="line"><a name="l00951"></a><span class="lineno"> 951</span>&#160; g_autoptr(GKeyFile) key_remminafile = g_key_file_new();</div><div class="line"><a name="l00952"></a><span class="lineno"> 952</span>&#160; GError *error = NULL;</div><div class="line"><a name="l00953"></a><span class="lineno"> 953</span>&#160;</div><div class="line"><a name="l00954"></a><span class="lineno"> 954</span>&#160; <span class="keyword">const</span> gchar *date = NULL;</div><div class="line"><a name="l00955"></a><span class="lineno"> 955</span>&#160; GDateTime *d = g_date_time_new_now_utc();</div><div class="line"><a name="l00956"></a><span class="lineno"> 956</span>&#160;</div><div class="line"><a name="l00957"></a><span class="lineno"> 957</span>&#160; date = g_strdup_printf(<span class="stringliteral">&quot;%d%02d%02d&quot;</span>,</div><div class="line"><a name="l00958"></a><span class="lineno"> 958</span>&#160; g_date_time_get_year(d),</div><div class="line"><a name="l00959"></a><span class="lineno"> 959</span>&#160; g_date_time_get_month(d),</div><div class="line"><a name="l00960"></a><span class="lineno"> 960</span>&#160; g_date_time_get_day_of_month(d));</div><div class="line"><a name="l00961"></a><span class="lineno"> 961</span>&#160;</div><div class="line"><a name="l00962"></a><span class="lineno"> 962</span>&#160; g_key_file_set_string(key_statefile, KEYFILE_GROUP_STATE, <span class="stringliteral">&quot;last_success&quot;</span>, date);</div><div class="line"><a name="l00963"></a><span class="lineno"> 963</span>&#160;</div><div class="line"><a name="l00964"></a><span class="lineno"> 964</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;State file %s.&quot;</span>, remminafile-&gt;statefile);</div><div class="line"><a name="l00965"></a><span class="lineno"> 965</span>&#160; <span class="keywordflow">if</span> (!g_key_file_save_to_file(key_statefile, remminafile-&gt;statefile, &amp;error)) {</div><div class="line"><a name="l00966"></a><span class="lineno"> 966</span>&#160; REMMINA_CRITICAL(<span class="stringliteral">&quot;Could not save the key file. %s&quot;</span>, error-&gt;message);</div><div class="line"><a name="l00967"></a><span class="lineno"> 967</span>&#160; g_error_free(error);</div><div class="line"><a name="l00968"></a><span class="lineno"> 968</span>&#160; error = NULL;</div><div class="line"><a name="l00969"></a><span class="lineno"> 969</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00970"></a><span class="lineno"> 970</span>&#160; }</div><div class="line"><a name="l00971"></a><span class="lineno"> 971</span>&#160; <span class="comment">/* Delete old pre-1.5 keys */</span></div><div class="line"><a name="l00972"></a><span class="lineno"> 972</span>&#160; g_key_file_remove_key(key_remminafile, KEYFILE_GROUP_REMMINA, <span class="stringliteral">&quot;last_success&quot;</span>, NULL);</div><div class="line"><a name="l00973"></a><span class="lineno"> 973</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Last connection made on %s.&quot;</span>, date);</div><div class="line"><a name="l00974"></a><span class="lineno"> 974</span>&#160;}</div><div class="line"><a name="l00975"></a><span class="lineno"> 975</span>&#160;</div><div class="line"><a name="l00976"></a><span class="lineno"><a class="line" href="remmina__file_8h.html#a503e53fe49430a5ed310c342c946c014"> 976</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__file_8c.html#a503e53fe49430a5ed310c342c946c014">remmina_file_unsave_passwords</a>(<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile)</div><div class="line"><a name="l00977"></a><span class="lineno"> 977</span>&#160;{</div><div class="line"><a name="l00978"></a><span class="lineno"> 978</span>&#160; <span class="comment">/* Delete all saved secrets for this profile */</span></div><div class="line"><a name="l00979"></a><span class="lineno"> 979</span>&#160;</div><div class="line"><a name="l00980"></a><span class="lineno"> 980</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00981"></a><span class="lineno"> 981</span>&#160; <span class="keyword">const</span> <a class="code" href="struct___remmina_protocol_setting.html">RemminaProtocolSetting</a> *setting_iter;</div><div class="line"><a name="l00982"></a><span class="lineno"> 982</span>&#160; <a class="code" href="struct___remmina_protocol_plugin.html">RemminaProtocolPlugin</a> *protocol_plugin;</div><div class="line"><a name="l00983"></a><span class="lineno"> 983</span>&#160; gchar *proto;</div><div class="line"><a name="l00984"></a><span class="lineno"> 984</span>&#160;</div><div class="line"><a name="l00985"></a><span class="lineno"> 985</span>&#160; protocol_plugin = NULL;</div><div class="line"><a name="l00986"></a><span class="lineno"> 986</span>&#160;</div><div class="line"><a name="l00987"></a><span class="lineno"> 987</span>&#160; <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, <span class="stringliteral">&quot;password&quot;</span>, NULL);</div><div class="line"><a name="l00988"></a><span class="lineno"> 988</span>&#160;</div><div class="line"><a name="l00989"></a><span class="lineno"> 989</span>&#160; proto = (gchar *)g_hash_table_lookup(remminafile-&gt;settings, <span class="stringliteral">&quot;protocol&quot;</span>);</div><div class="line"><a name="l00990"></a><span class="lineno"> 990</span>&#160; <span class="keywordflow">if</span> (proto) {</div><div class="line"><a name="l00991"></a><span class="lineno"> 991</span>&#160; protocol_plugin = (<a class="code" href="struct___remmina_protocol_plugin.html">RemminaProtocolPlugin</a> *)<a class="code" href="remmina__plugin__manager_8c.html#a3872c8656a8a3d5147bcc603471c1932">remmina_plugin_manager_get_plugin</a>(<a class="code" href="plugin_8h.html#aaf53c620d115a4642130227cff4a624aa45e094c248384c12cdafd9d088e4aa24">REMMINA_PLUGIN_TYPE_PROTOCOL</a>, proto);</div><div class="line"><a name="l00992"></a><span class="lineno"> 992</span>&#160; <span class="keywordflow">if</span> (protocol_plugin) {</div><div class="line"><a name="l00993"></a><span class="lineno"> 993</span>&#160; setting_iter = protocol_plugin-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#aae09a7e2c978cc36e85d0f295518978d">basic_settings</a>;</div><div class="line"><a name="l00994"></a><span class="lineno"> 994</span>&#160; <span class="keywordflow">if</span> (setting_iter) {</div><div class="line"><a name="l00995"></a><span class="lineno"> 995</span>&#160; <span class="keywordflow">while</span> (setting_iter-&gt;<a class="code" href="struct___remmina_protocol_setting.html#a6274d44b592a54162ff583135e55ffc9">type</a> != <a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350ad898beb6ae625dee1ae27de75f1ab4e3">REMMINA_PROTOCOL_SETTING_TYPE_END</a>) {</div><div class="line"><a name="l00996"></a><span class="lineno"> 996</span>&#160; <span class="comment">// TOO VERBOSE: g_debug(&quot;setting name: %s&quot;, setting_iter-&gt;name);</span></div><div class="line"><a name="l00997"></a><span class="lineno"> 997</span>&#160; <span class="keywordflow">if</span> (setting_iter-&gt;<a class="code" href="struct___remmina_protocol_setting.html#ac4cd339607204c5f478727e2a0c04857">name</a> == NULL)</div><div class="line"><a name="l00998"></a><span class="lineno"> 998</span>&#160; g_error(<span class="stringliteral">&quot;Internal error: a setting name in protocol plugin %s is null. Please fix RemminaProtocolSetting struct content.&quot;</span>, proto);</div><div class="line"><a name="l00999"></a><span class="lineno"> 999</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="remmina__plugin__manager_8c.html#aef243c58b9e8c778232d5acb32c7729b">remmina_plugin_manager_is_encrypted_setting</a>(protocol_plugin, setting_iter-&gt;<a class="code" href="struct___remmina_protocol_setting.html#ac4cd339607204c5f478727e2a0c04857">name</a>))</div><div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>&#160; <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, <a class="code" href="remmina__plugin__manager_8c.html#af60b8edfa50563ae4c7593efc3deed55">remmina_plugin_manager_get_canonical_setting_name</a>(setting_iter), NULL);</div><div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>&#160; setting_iter++;</div><div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>&#160; }</div><div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>&#160; }</div><div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>&#160; setting_iter = protocol_plugin-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#aceb00d9dff794500ccb04a1373eb32db">advanced_settings</a>;</div><div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>&#160; <span class="keywordflow">if</span> (setting_iter) {</div><div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>&#160; <span class="keywordflow">while</span> (setting_iter-&gt;<a class="code" href="struct___remmina_protocol_setting.html#a6274d44b592a54162ff583135e55ffc9">type</a> != <a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350ad898beb6ae625dee1ae27de75f1ab4e3">REMMINA_PROTOCOL_SETTING_TYPE_END</a>) {</div><div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="remmina__plugin__manager_8c.html#aef243c58b9e8c778232d5acb32c7729b">remmina_plugin_manager_is_encrypted_setting</a>(protocol_plugin, setting_iter-&gt;<a class="code" href="struct___remmina_protocol_setting.html#ac4cd339607204c5f478727e2a0c04857">name</a>))</div><div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>&#160; <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, <a class="code" href="remmina__plugin__manager_8c.html#af60b8edfa50563ae4c7593efc3deed55">remmina_plugin_manager_get_canonical_setting_name</a>(setting_iter), NULL);</div><div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>&#160; setting_iter++;</div><div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>&#160; }</div><div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>&#160; }</div><div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>&#160; <a class="code" href="remmina__file_8c.html#a8c893a5deec9bc446bd89cc9973416c7">remmina_file_save</a>(remminafile);</div><div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>&#160; }</div><div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>&#160; }</div><div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>&#160;}</div><div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>&#160;</div><div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>&#160;gchar *</div><div class="line"><a name="l01029"></a><span class="lineno"><a class="line" href="remmina__file_8h.html#a96abbfdc183d1e82fdffd6445d611ffe"> 1029</a></span>&#160;<a class="code" href="remmina__file_8c.html#a96abbfdc183d1e82fdffd6445d611ffe">remmina_file_get_datetime</a>(<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile)</div><div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>&#160;{</div><div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>&#160;</div><div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>&#160; GFile *file;</div><div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>&#160; GFileInfo *info;</div><div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>&#160;</div><div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>&#160; <span class="keyword">struct </span>timeval tv;</div><div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>&#160; <span class="keyword">struct </span>tm *ptm;</div><div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>&#160; <span class="keywordtype">char</span> time_string[256];</div><div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>&#160; gchar *tmps;</div><div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>&#160;</div><div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>&#160; guint64 mtime;</div><div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>&#160;</div><div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>&#160; <span class="keywordflow">if</span> (remminafile-&gt;statefile)</div><div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>&#160; <span class="comment">//REMMINA_DEBUG (&quot;remminafile-&gt;statefile: %s&quot;, remminafile-&gt;statefile);</span></div><div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>&#160; file = g_file_new_for_path(remminafile-&gt;statefile);</div><div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>&#160; file = g_file_new_for_path(remminafile-&gt;filename);</div><div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>&#160;</div><div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>&#160; info = g_file_query_info(file,</div><div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>&#160; G_FILE_ATTRIBUTE_TIME_MODIFIED,</div><div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>&#160; G_FILE_QUERY_INFO_NONE,</div><div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>&#160; NULL,</div><div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>&#160; NULL);</div><div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>&#160;</div><div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>&#160; g_object_unref(file);</div><div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>&#160;</div><div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>&#160; <span class="keywordflow">if</span> (info == NULL) {</div><div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>&#160; <span class="comment">//REMMINA_DEBUG(&quot;could not get time info&quot;);</span></div><div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>&#160;</div><div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>&#160; <span class="comment">// The BDAY &quot;Fri, 16 Oct 2009 07:04:46 GMT&quot;</span></div><div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>&#160; mtime = 1255676686;</div><div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>&#160; <span class="keyword">const</span> gchar *last_success = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">&quot;last_success&quot;</span>);</div><div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>&#160; <span class="keywordflow">if</span> (last_success) {</div><div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>&#160; <span class="comment">//REMMINA_DEBUG (&quot;Last success is %s&quot;, last_success);</span></div><div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>&#160; GDateTime *dt;</div><div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>&#160; tmps = g_strconcat(last_success, <span class="stringliteral">&quot;T00:00:00Z&quot;</span>, NULL);</div><div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>&#160; dt = g_date_time_new_from_iso8601(tmps, NULL);</div><div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>&#160; g_free(tmps);</div><div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>&#160; <span class="keywordflow">if</span> (dt) {</div><div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>&#160; <span class="comment">//REMMINA_DEBUG(&quot;Converting last_success&quot;);</span></div><div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>&#160; tmps = g_date_time_format(dt, <span class="stringliteral">&quot;%s&quot;</span>);</div><div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>&#160; mtime = g_ascii_strtoull(tmps, NULL, 10);</div><div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>&#160; g_free(tmps);</div><div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>&#160; g_date_time_unref(dt);</div><div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>&#160; <span class="comment">//REMMINA_DEBUG(&quot;dt was null&quot;);</span></div><div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>&#160; mtime = 191543400;</div><div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>&#160; }</div><div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>&#160; }</div><div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>&#160; mtime = g_file_info_get_attribute_uint64(info, G_FILE_ATTRIBUTE_TIME_MODIFIED);</div><div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>&#160; g_object_unref(info);</div><div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>&#160; }</div><div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>&#160;</div><div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>&#160; tv.tv_sec = mtime;</div><div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>&#160;</div><div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>&#160; ptm = localtime(&amp;tv.tv_sec);</div><div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>&#160; strftime(time_string, <span class="keyword">sizeof</span>(time_string), <span class="stringliteral">&quot;%F - %T&quot;</span>, ptm);</div><div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>&#160;</div><div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>&#160; gchar *modtime_string = g_locale_to_utf8(time_string, -1, NULL, NULL, NULL);</div><div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>&#160;</div><div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>&#160; <span class="keywordflow">return</span> modtime_string;</div><div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>&#160;}</div><div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>&#160;</div><div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>&#160;<span class="keywordtype">void</span></div><div class="line"><a name="l01103"></a><span class="lineno"><a class="line" href="remmina__file_8h.html#a3d19095f74e9b7c92d74f11bd5a39a8c"> 1103</a></span>&#160;<a class="code" href="remmina__file_8c.html#a3d19095f74e9b7c92d74f11bd5a39a8c">remmina_file_touch</a>(<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile)</div><div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>&#160;{</div><div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>&#160; <span class="keywordtype">int</span> fd;</div><div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>&#160; <span class="keyword">struct </span>stat st;</div><div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>&#160; <span class="keywordtype">int</span> r;</div><div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>&#160;</div><div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>&#160; <span class="keywordflow">if</span> ((r = stat(remminafile-&gt;statefile, &amp;st)) &lt; 0) {</div><div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>&#160; <span class="keywordflow">if</span> (errno != ENOENT)</div><div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;stat %s:&quot;</span>, remminafile-&gt;statefile);</div><div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!r) {</div><div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>&#160; <a class="code" href="remmina__file_8c.html#a3793ec19ecbc8c8afc4d1dd8969f880d">times</a>[0] = st.st_atim;</div><div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>&#160; <a class="code" href="remmina__file_8c.html#a3793ec19ecbc8c8afc4d1dd8969f880d">times</a>[1] = st.st_mtim;</div><div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>&#160; <span class="keywordflow">if</span> (utimensat(AT_FDCWD, remminafile-&gt;statefile, <a class="code" href="remmina__file_8c.html#a3793ec19ecbc8c8afc4d1dd8969f880d">times</a>, 0) &lt; 0)</div><div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;utimensat %s:&quot;</span>, remminafile-&gt;statefile);</div><div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>&#160; }</div><div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>&#160;</div><div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>&#160; <span class="keywordflow">if</span> ((fd = open(remminafile-&gt;statefile, O_CREAT | O_EXCL, 0644)) &lt; 0)</div><div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;open %s:&quot;</span>, remminafile-&gt;statefile);</div><div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>&#160; close(fd);</div><div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>&#160;</div><div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>&#160; <a class="code" href="remmina__file_8c.html#a3d19095f74e9b7c92d74f11bd5a39a8c">remmina_file_touch</a>(remminafile);</div><div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>&#160;}</div><div class="ttc" id="remmina__file_8c_html_ac1cc2d7f827f7d64c7fd3edf10e9383e"><div class="ttname"><a href="remmina__file_8c.html#ac1cc2d7f827f7d64c7fd3edf10e9383e">remmina_file_load</a></div><div class="ttdeci">RemminaFile * remmina_file_load(const gchar *filename)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00350">remmina_file.c:350</a></div></div>
<div class="ttc" id="remmina__plugin__manager_8c_html_af60b8edfa50563ae4c7593efc3deed55"><div class="ttname"><a href="remmina__plugin__manager_8c.html#af60b8edfa50563ae4c7593efc3deed55">remmina_plugin_manager_get_canonical_setting_name</a></div><div class="ttdeci">const gchar * remmina_plugin_manager_get_canonical_setting_name(const RemminaProtocolSetting *setting)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__plugin__manager_8c_source.html#l00451">remmina_plugin_manager.c:451</a></div></div>
-<div class="ttc" id="remmina__file_8c_html_abd2f06bf0a5ddcf7156e5ef7d0c8d4d7"><div class="ttname"><a href="remmina__file_8c.html#abd2f06bf0a5ddcf7156e5ef7d0c8d4d7">remmina_file_free</a></div><div class="ttdeci">void remmina_file_free(RemminaFile *remminafile)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00700">remmina_file.c:700</a></div></div>
+<div class="ttc" id="remmina__file_8c_html_abd2f06bf0a5ddcf7156e5ef7d0c8d4d7"><div class="ttname"><a href="remmina__file_8c.html#abd2f06bf0a5ddcf7156e5ef7d0c8d4d7">remmina_file_free</a></div><div class="ttdeci">void remmina_file_free(RemminaFile *remminafile)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00709">remmina_file.c:709</a></div></div>
<div class="ttc" id="remmina__plugin__manager_8c_html_aef243c58b9e8c778232d5acb32c7729b"><div class="ttname"><a href="remmina__plugin__manager_8c.html#aef243c58b9e8c778232d5acb32c7729b">remmina_plugin_manager_is_encrypted_setting</a></div><div class="ttdeci">gboolean remmina_plugin_manager_is_encrypted_setting(RemminaProtocolPlugin *pp, const char *setting)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__plugin__manager_8c_source.html#l00629">remmina_plugin_manager.c:629</a></div></div>
<div class="ttc" id="remmina__sodium_8h_html"><div class="ttname"><a href="remmina__sodium_8h.html">remmina_sodium.h</a></div></div>
<div class="ttc" id="remmina__plugin__manager_8h_html"><div class="ttname"><a href="remmina__plugin__manager_8h.html">remmina_plugin_manager.h</a></div></div>
-<div class="ttc" id="remmina__file_8c_html_a8eb1b213d9d08c6ad13683ce05f4355e"><div class="ttname"><a href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a></div><div class="ttdeci">const gchar * remmina_file_get_string(RemminaFile *remminafile, const gchar *setting)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00507">remmina_file.c:507</a></div></div>
-<div class="ttc" id="remmina__file_8c_html_a3fb992fced83e0f1c4e4e3c8d2206be5"><div class="ttname"><a href="remmina__file_8c.html#a3fb992fced83e0f1c4e4e3c8d2206be5">remmina_file_dup</a></div><div class="ttdeci">RemminaFile * remmina_file_dup(RemminaFile *remminafile)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00854">remmina_file.c:854</a></div></div>
+<div class="ttc" id="remmina__file_8c_html_a8eb1b213d9d08c6ad13683ce05f4355e"><div class="ttname"><a href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a></div><div class="ttdeci">const gchar * remmina_file_get_string(RemminaFile *remminafile, const gchar *setting)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00516">remmina_file.c:516</a></div></div>
+<div class="ttc" id="remmina__file_8c_html_a3fb992fced83e0f1c4e4e3c8d2206be5"><div class="ttname"><a href="remmina__file_8c.html#a3fb992fced83e0f1c4e4e3c8d2206be5">remmina_file_dup</a></div><div class="ttdeci">RemminaFile * remmina_file_dup(RemminaFile *remminafile)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00863">remmina_file.c:863</a></div></div>
<div class="ttc" id="rcw_8c_html_af657fd4825d16d8d003a8b42fbd0c715"><div class="ttname"><a href="rcw_8c.html#af657fd4825d16d8d003a8b42fbd0c715">remmina_pref_file</a></div><div class="ttdeci">gchar * remmina_pref_file</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l00074">rcw.c:74</a></div></div>
<div class="ttc" id="remmina__file__manager_8h_html"><div class="ttname"><a href="remmina__file__manager_8h.html">remmina_file_manager.h</a></div></div>
-<div class="ttc" id="remmina__file_8c_html_ad1e4f3a0f64cd98e301044b6c38a1f1d"><div class="ttname"><a href="remmina__file_8c.html#ad1e4f3a0f64cd98e301044b6c38a1f1d">remmina_file_get_filename</a></div><div class="ttdeci">const gchar * remmina_file_get_filename(RemminaFile *remminafile)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00206">remmina_file.c:206</a></div></div>
+<div class="ttc" id="remmina__file_8c_html_ad1e4f3a0f64cd98e301044b6c38a1f1d"><div class="ttname"><a href="remmina__file_8c.html#ad1e4f3a0f64cd98e301044b6c38a1f1d">remmina_file_get_filename</a></div><div class="ttdeci">const gchar * remmina_file_get_filename(RemminaFile *remminafile)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00210">remmina_file.c:210</a></div></div>
<div class="ttc" id="remmina__crypt_8c_html_a3fe2fa245d401146adf02a3a8f996ab9"><div class="ttname"><a href="remmina__crypt_8c.html#a3fe2fa245d401146adf02a3a8f996ab9">remmina_crypt_decrypt</a></div><div class="ttdeci">gchar * remmina_crypt_decrypt(const gchar *str)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__crypt_8c_source.html#l00134">remmina_crypt.c:134</a></div></div>
<div class="ttc" id="types_8h_html_a112d7cc6c755209cabb68cf2a62ad515"><div class="ttname"><a href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a></div><div class="ttdeci">typedefG_BEGIN_DECLS struct _RemminaFile RemminaFile</div><div class="ttdef"><b>Definition:</b> <a href="types_8h_source.html#l00044">types.h:44</a></div></div>
<div class="ttc" id="remmina__file_8c_html_a3793ec19ecbc8c8afc4d1dd8969f880d"><div class="ttname"><a href="remmina__file_8c.html#a3793ec19ecbc8c8afc4d1dd8969f880d">times</a></div><div class="ttdeci">static struct timespec times[2]</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00073">remmina_file.c:73</a></div></div>
-<div class="ttc" id="remmina__file_8c_html_a52a0986eaf54c9e606ce9cdf8bb57e60"><div class="ttname"><a href="remmina__file_8c.html#a52a0986eaf54c9e606ce9cdf8bb57e60">remmina_file_dup_temp_protocol</a></div><div class="ttdeci">RemminaFile * remmina_file_dup_temp_protocol(RemminaFile *remminafile, const gchar *new_protocol)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00888">remmina_file.c:888</a></div></div>
-<div class="ttc" id="remmina__file_8c_html_a227276a531775a77d497852ce66ebdd2"><div class="ttname"><a href="remmina__file_8c.html#a227276a531775a77d497852ce66ebdd2">remmina_file_get_keystate</a></div><div class="ttdeci">static GKeyFile * remmina_file_get_keystate(RemminaFile *remminafile)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00686">remmina_file.c:686</a></div></div>
-<div class="ttc" id="remmina__file_8c_html_ad514c2523ff0c919ddf535e3dbad9f3a"><div class="ttname"><a href="remmina__file_8c.html#ad514c2523ff0c919ddf535e3dbad9f3a">remmina_file_get_secret</a></div><div class="ttdeci">gchar * remmina_file_get_secret(RemminaFile *remminafile, const gchar *setting)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00542">remmina_file.c:542</a></div></div>
+<div class="ttc" id="remmina__file_8c_html_a52a0986eaf54c9e606ce9cdf8bb57e60"><div class="ttname"><a href="remmina__file_8c.html#a52a0986eaf54c9e606ce9cdf8bb57e60">remmina_file_dup_temp_protocol</a></div><div class="ttdeci">RemminaFile * remmina_file_dup_temp_protocol(RemminaFile *remminafile, const gchar *new_protocol)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00897">remmina_file.c:897</a></div></div>
+<div class="ttc" id="remmina__file_8c_html_a227276a531775a77d497852ce66ebdd2"><div class="ttname"><a href="remmina__file_8c.html#a227276a531775a77d497852ce66ebdd2">remmina_file_get_keystate</a></div><div class="ttdeci">static GKeyFile * remmina_file_get_keystate(RemminaFile *remminafile)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00695">remmina_file.c:695</a></div></div>
+<div class="ttc" id="remmina__file_8c_html_ad514c2523ff0c919ddf535e3dbad9f3a"><div class="ttname"><a href="remmina__file_8c.html#ad514c2523ff0c919ddf535e3dbad9f3a">remmina_file_get_secret</a></div><div class="ttdeci">gchar * remmina_file_get_secret(RemminaFile *remminafile, const gchar *setting)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00551">remmina_file.c:551</a></div></div>
<div class="ttc" id="structremmina__masterthread__exec__data_html"><div class="ttname"><a href="structremmina__masterthread__exec__data.html">remmina_masterthread_exec_data</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__masterthread__exec_8h_source.html#l00043">remmina_masterthread_exec.h:43</a></div></div>
<div class="ttc" id="plugin_8h_html_aaf53c620d115a4642130227cff4a624aa45e094c248384c12cdafd9d088e4aa24"><div class="ttname"><a href="plugin_8h.html#aaf53c620d115a4642130227cff4a624aa45e094c248384c12cdafd9d088e4aa24">REMMINA_PLUGIN_TYPE_PROTOCOL</a></div><div class="ttdef"><b>Definition:</b> <a href="plugin_8h_source.html#l00047">plugin.h:47</a></div></div>
<div class="ttc" id="remmina__trace__calls_8h_html"><div class="ttname"><a href="remmina__trace__calls_8h.html">remmina_trace_calls.h</a></div></div>
@@ -110,22 +110,22 @@ $(document).ready(function(){initNavTree('remmina__file_8c_source.html','');});
<div class="ttc" id="remmina__plugin__manager_8c_html_ad380a98f6624aa8c830015c8b428b7b4"><div class="ttname"><a href="remmina__plugin__manager_8c.html#ad380a98f6624aa8c830015c8b428b7b4">remmina_plugin_manager_get_secret_plugin</a></div><div class="ttdeci">RemminaSecretPlugin * remmina_plugin_manager_get_secret_plugin(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__plugin__manager_8c_source.html#l00604">remmina_plugin_manager.c:604</a></div></div>
<div class="ttc" id="struct___remmina_secret_plugin_html_a2123e14795b104f5fe8d77a4b7847261"><div class="ttname"><a href="struct___remmina_secret_plugin.html#a2123e14795b104f5fe8d77a4b7847261">_RemminaSecretPlugin::is_service_available</a></div><div class="ttdeci">gboolean(* is_service_available)(struct _RemminaSecretPlugin *instance)</div><div class="ttdef"><b>Definition:</b> <a href="plugin_8h_source.html#l00144">plugin.h:144</a></div></div>
<div class="ttc" id="struct___remmina_secret_plugin_html_abbe56963e94b1a131f3e6d9bcafce772"><div class="ttname"><a href="struct___remmina_secret_plugin.html#abbe56963e94b1a131f3e6d9bcafce772">_RemminaSecretPlugin::delete_password</a></div><div class="ttdeci">void(* delete_password)(struct _RemminaSecretPlugin *instance, RemminaFile *remminafile, const gchar *key)</div><div class="ttdef"><b>Definition:</b> <a href="plugin_8h_source.html#l00147">plugin.h:147</a></div></div>
-<div class="ttc" id="remmina__file_8c_html_a96abbfdc183d1e82fdffd6445d611ffe"><div class="ttname"><a href="remmina__file_8c.html#a96abbfdc183d1e82fdffd6445d611ffe">remmina_file_get_datetime</a></div><div class="ttdeci">gchar * remmina_file_get_datetime(RemminaFile *remminafile)</div><div class="ttdoc">Return the string date of the last time a Remmina state file has been modified. </div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l01020">remmina_file.c:1020</a></div></div>
-<div class="ttc" id="remmina__file_8c_html_a3feeafd4956b364975aef178ef99b7a6"><div class="ttname"><a href="remmina__file_8c.html#a3feeafd4956b364975aef178ef99b7a6">upgrade_sshkeys_202001</a></div><div class="ttdeci">static void upgrade_sshkeys_202001(RemminaFile *remminafile)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00287">remmina_file.c:287</a></div></div>
-<div class="ttc" id="remmina__file_8c_html_a4e31f91e2398f16844f58c1cf13582da"><div class="ttname"><a href="remmina__file_8c.html#a4e31f91e2398f16844f58c1cf13582da">remmina_file_get_double</a></div><div class="ttdeci">gdouble remmina_file_get_double(RemminaFile *remminafile, const gchar *setting, gdouble default_value)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00620">remmina_file.c:620</a></div></div>
+<div class="ttc" id="remmina__file_8c_html_a96abbfdc183d1e82fdffd6445d611ffe"><div class="ttname"><a href="remmina__file_8c.html#a96abbfdc183d1e82fdffd6445d611ffe">remmina_file_get_datetime</a></div><div class="ttdeci">gchar * remmina_file_get_datetime(RemminaFile *remminafile)</div><div class="ttdoc">Return the string date of the last time a Remmina state file has been modified. </div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l01029">remmina_file.c:1029</a></div></div>
+<div class="ttc" id="remmina__file_8c_html_a3feeafd4956b364975aef178ef99b7a6"><div class="ttname"><a href="remmina__file_8c.html#a3feeafd4956b364975aef178ef99b7a6">upgrade_sshkeys_202001</a></div><div class="ttdeci">static void upgrade_sshkeys_202001(RemminaFile *remminafile)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00291">remmina_file.c:291</a></div></div>
+<div class="ttc" id="remmina__file_8c_html_a4e31f91e2398f16844f58c1cf13582da"><div class="ttname"><a href="remmina__file_8c.html#a4e31f91e2398f16844f58c1cf13582da">remmina_file_get_double</a></div><div class="ttdeci">gdouble remmina_file_get_double(RemminaFile *remminafile, const gchar *setting, gdouble default_value)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00629">remmina_file.c:629</a></div></div>
<div class="ttc" id="remmina__file_8c_html_ac952f8ddb715314f11cef1ccc513fb7e"><div class="ttname"><a href="remmina__file_8c.html#ac952f8ddb715314f11cef1ccc513fb7e">remmina_file_generate_filename</a></div><div class="ttdeci">void remmina_file_generate_filename(RemminaFile *remminafile)</div><div class="ttdoc">Generate a new Remmina connection profile file name. </div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00114">remmina_file.c:114</a></div></div>
<div class="ttc" id="struct___remmina_protocol_plugin_html"><div class="ttname"><a href="struct___remmina_protocol_plugin.html">_RemminaProtocolPlugin</a></div><div class="ttdef"><b>Definition:</b> <a href="plugin_8h_source.html#l00065">plugin.h:65</a></div></div>
-<div class="ttc" id="remmina__file_8c_html_af8c58daf7ee71345ae548e7a5332a8f6"><div class="ttname"><a href="remmina__file_8c.html#af8c58daf7ee71345ae548e7a5332a8f6">remmina_file_get_state</a></div><div class="ttdeci">const gchar * remmina_file_get_state(RemminaFile *remminafile, const gchar *setting)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00914">remmina_file.c:914</a></div></div>
+<div class="ttc" id="remmina__file_8c_html_af8c58daf7ee71345ae548e7a5332a8f6"><div class="ttname"><a href="remmina__file_8c.html#af8c58daf7ee71345ae548e7a5332a8f6">remmina_file_get_state</a></div><div class="ttdeci">const gchar * remmina_file_get_state(RemminaFile *remminafile, const gchar *setting)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00923">remmina_file.c:923</a></div></div>
<div class="ttc" id="remmina__main_8h_html"><div class="ttname"><a href="remmina__main_8h.html">remmina_main.h</a></div></div>
<div class="ttc" id="remmina__public_8c_html_aaf3fdb980c24cd06965b85ebcdd79173"><div class="ttname"><a href="remmina__public_8c.html#aaf3fdb980c24cd06965b85ebcdd79173">remmina_public_split_resolution_string</a></div><div class="ttdeci">int remmina_public_split_resolution_string(const char *resolution_string, int *w, int *h)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__public_8c_source.html#l00695">remmina_public.c:695</a></div></div>
<div class="ttc" id="remmina__pref_8h_html_ab48899087cc647f0f791ed0c459adc53a90f2025ec8d2c4987db5591e8e3b4076"><div class="ttname"><a href="remmina__pref_8h.html#ab48899087cc647f0f791ed0c459adc53a90f2025ec8d2c4987db5591e8e3b4076">RM_ENC_MODE_SODIUM_INTERACTIVE</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00092">remmina_pref.h:92</a></div></div>
<div class="ttc" id="struct___remmina_secret_plugin_html"><div class="ttname"><a href="struct___remmina_secret_plugin.html">_RemminaSecretPlugin</a></div><div class="ttdef"><b>Definition:</b> <a href="plugin_8h_source.html#l00135">plugin.h:135</a></div></div>
-<div class="ttc" id="remmina__file_8c_html_afd8b12f3d84b4e201b9f465d5b8e0d03"><div class="ttname"><a href="remmina__file_8c.html#afd8b12f3d84b4e201b9f465d5b8e0d03">remmina_file_format_properties</a></div><div class="ttdeci">gchar * remmina_file_format_properties(RemminaFile *remminafile, const gchar *setting)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00552">remmina_file.c:552</a></div></div>
-<div class="ttc" id="remmina__file_8c_html_a1399e5b83aa040b6613cf98be45b4c99"><div class="ttname"><a href="remmina__file_8c.html#a1399e5b83aa040b6613cf98be45b4c99">find_protocol_setting</a></div><div class="ttdeci">const RemminaProtocolSetting * find_protocol_setting(const gchar *name, RemminaProtocolPlugin *protocol_plugin)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00231">remmina_file.c:231</a></div></div>
+<div class="ttc" id="remmina__file_8c_html_afd8b12f3d84b4e201b9f465d5b8e0d03"><div class="ttname"><a href="remmina__file_8c.html#afd8b12f3d84b4e201b9f465d5b8e0d03">remmina_file_format_properties</a></div><div class="ttdeci">gchar * remmina_file_format_properties(RemminaFile *remminafile, const gchar *setting)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00561">remmina_file.c:561</a></div></div>
+<div class="ttc" id="remmina__file_8c_html_a1399e5b83aa040b6613cf98be45b4c99"><div class="ttname"><a href="remmina__file_8c.html#a1399e5b83aa040b6613cf98be45b4c99">find_protocol_setting</a></div><div class="ttdeci">const RemminaProtocolSetting * find_protocol_setting(const gchar *name, RemminaProtocolPlugin *protocol_plugin)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00235">remmina_file.c:235</a></div></div>
<div class="ttc" id="remmina__main_8c_html_a5ae0372dafe41f96a09097c07d1b270a"><div class="ttname"><a href="remmina__main_8c.html#a5ae0372dafe41f96a09097c07d1b270a">remmina_main_update_file_datetime</a></div><div class="ttdeci">void remmina_main_update_file_datetime(RemminaFile *file)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01657">remmina_main.c:1657</a></div></div>
<div class="ttc" id="struct___remmina_protocol_plugin_html_a8a4c7d195e85a1428abf82e952ff4df3"><div class="ttname"><a href="struct___remmina_protocol_plugin.html#a8a4c7d195e85a1428abf82e952ff4df3">_RemminaProtocolPlugin::icon_name_ssh</a></div><div class="ttdeci">const gchar * icon_name_ssh</div><div class="ttdef"><b>Definition:</b> <a href="plugin_8h_source.html#l00073">plugin.h:73</a></div></div>
-<div class="ttc" id="remmina__file_8c_html_aba0aa663aaad89e4df41b42259d29841"><div class="ttname"><a href="remmina__file_8c.html#aba0aa663aaad89e4df41b42259d29841">remmina_file_get_state_int</a></div><div class="ttdeci">gint remmina_file_get_state_int(RemminaFile *remminafile, const gchar *setting, gint default_value)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00606">remmina_file.c:606</a></div></div>
-<div class="ttc" id="remmina__file_8c_html_a493ffa77b862ff3bad9ea951592715a8"><div class="ttname"><a href="remmina__file_8c.html#a493ffa77b862ff3bad9ea951592715a8">remmina_file_state_last_success</a></div><div class="ttdeci">void remmina_file_state_last_success(RemminaFile *remminafile)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00937">remmina_file.c:937</a></div></div>
+<div class="ttc" id="remmina__file_8c_html_aba0aa663aaad89e4df41b42259d29841"><div class="ttname"><a href="remmina__file_8c.html#aba0aa663aaad89e4df41b42259d29841">remmina_file_get_state_int</a></div><div class="ttdeci">gint remmina_file_get_state_int(RemminaFile *remminafile, const gchar *setting, gint default_value)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00615">remmina_file.c:615</a></div></div>
+<div class="ttc" id="remmina__file_8c_html_a493ffa77b862ff3bad9ea951592715a8"><div class="ttname"><a href="remmina__file_8c.html#a493ffa77b862ff3bad9ea951592715a8">remmina_file_state_last_success</a></div><div class="ttdeci">void remmina_file_state_last_success(RemminaFile *remminafile)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00946">remmina_file.c:946</a></div></div>
<div class="ttc" id="remmina__utils_8h_html"><div class="ttname"><a href="remmina__utils_8h.html">remmina_utils.h</a></div><div class="ttdoc">General utility functions, non-GTK related. </div></div>
<div class="ttc" id="remmina__file_8c_html_aeefa562baee867fba8c06165ae656de1"><div class="ttname"><a href="remmina__file_8c.html#aeefa562baee867fba8c06165ae656de1">remmina_file_set_statefile</a></div><div class="ttdeci">void remmina_file_set_statefile(RemminaFile *remminafile)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00189">remmina_file.c:189</a></div></div>
<div class="ttc" id="remmina__file_8c_html_ab03b042504c09c1ad880ac126a703114"><div class="ttname"><a href="remmina__file_8c.html#ab03b042504c09c1ad880ac126a703114">remmina_file_set_filename</a></div><div class="ttdeci">void remmina_file_set_filename(RemminaFile *remminafile, const gchar *filename)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00182">remmina_file.c:182</a></div></div>
@@ -134,17 +134,17 @@ $(document).ready(function(){initNavTree('remmina__file_8c_source.html','');});
<div class="ttc" id="remmina__masterthread__exec_8c_html_a3a52e863a3a3da6da6bb5d36c13b7ff4"><div class="ttname"><a href="remmina__masterthread__exec_8c.html#a3a52e863a3a3da6da6bb5d36c13b7ff4">remmina_masterthread_exec_is_main_thread</a></div><div class="ttdeci">gboolean remmina_masterthread_exec_is_main_thread()</div><div class="ttdef"><b>Definition:</b> <a href="remmina__masterthread__exec_8c_source.html#l00147">remmina_masterthread_exec.c:147</a></div></div>
<div class="ttc" id="remmina__log_8h_html"><div class="ttname"><a href="remmina__log_8h.html">remmina_log.h</a></div></div>
<div class="ttc" id="remmina__crypt_8c_html_aa02cf0fed3eb68d6a89815c3ba3bf7b1"><div class="ttname"><a href="remmina__crypt_8c.html#aa02cf0fed3eb68d6a89815c3ba3bf7b1">remmina_crypt_encrypt</a></div><div class="ttdeci">gchar * remmina_crypt_encrypt(const gchar *str)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__crypt_8c_source.html#l00093">remmina_crypt.c:93</a></div></div>
-<div class="ttc" id="remmina__file_8c_html_ad2cf2ab34ab748bb984005fdd579d113"><div class="ttname"><a href="remmina__file_8c.html#ad2cf2ab34ab748bb984005fdd579d113">remmina_file_get_state_double</a></div><div class="ttdeci">gdouble remmina_file_get_state_double(RemminaFile *remminafile, const gchar *setting, gdouble default_value)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00646">remmina_file.c:646</a></div></div>
+<div class="ttc" id="remmina__file_8c_html_ad2cf2ab34ab748bb984005fdd579d113"><div class="ttname"><a href="remmina__file_8c.html#ad2cf2ab34ab748bb984005fdd579d113">remmina_file_get_state_double</a></div><div class="ttdeci">gdouble remmina_file_get_state_double(RemminaFile *remminafile, const gchar *setting, gdouble default_value)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00655">remmina_file.c:655</a></div></div>
<div class="ttc" id="remmina__main_8c_html_ad99b9c0bf2fa8c166a8b4a09e06ffdf7"><div class="ttname"><a href="remmina__main_8c.html#ad99b9c0bf2fa8c166a8b4a09e06ffdf7">remmina_main_show_warning_dialog</a></div><div class="ttdeci">void remmina_main_show_warning_dialog(const gchar *message)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01674">remmina_main.c:1674</a></div></div>
<div class="ttc" id="remmina__pref_8h_html_ab48899087cc647f0f791ed0c459adc53a0378e0f09c7bc6fd7f8d95b3827ad561"><div class="ttname"><a href="remmina__pref_8h.html#ab48899087cc647f0f791ed0c459adc53a0378e0f09c7bc6fd7f8d95b3827ad561">RM_ENC_MODE_SODIUM_SENSITIVE</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00094">remmina_pref.h:94</a></div></div>
-<div class="ttc" id="remmina__file_8c_html_af153b0d289ac93f6ecdaa15d5f3b9b8c"><div class="ttname"><a href="remmina__file_8c.html#af153b0d289ac93f6ecdaa15d5f3b9b8c">remmina_file_set_int</a></div><div class="ttdeci">void remmina_file_set_int(RemminaFile *remminafile, const gchar *setting, gint value)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00576">remmina_file.c:576</a></div></div>
-<div class="ttc" id="remmina__file_8c_html_a89ec355adbf6e03ad16d7faf810af46f"><div class="ttname"><a href="remmina__file_8c.html#a89ec355adbf6e03ad16d7faf810af46f">remmina_file_get_keyfile</a></div><div class="ttdeci">static GKeyFile * remmina_file_get_keyfile(RemminaFile *remminafile)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00671">remmina_file.c:671</a></div></div>
-<div class="ttc" id="remmina__file_8c_html_a55f66f2bb81bf427d6837e1adb7fe1d4"><div class="ttname"><a href="remmina__file_8c.html#a55f66f2bb81bf427d6837e1adb7fe1d4">remmina_file_delete</a></div><div class="ttdeci">void remmina_file_delete(const gchar *filename)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00900">remmina_file.c:900</a></div></div>
+<div class="ttc" id="remmina__file_8c_html_af153b0d289ac93f6ecdaa15d5f3b9b8c"><div class="ttname"><a href="remmina__file_8c.html#af153b0d289ac93f6ecdaa15d5f3b9b8c">remmina_file_set_int</a></div><div class="ttdeci">void remmina_file_set_int(RemminaFile *remminafile, const gchar *setting, gint value)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00585">remmina_file.c:585</a></div></div>
+<div class="ttc" id="remmina__file_8c_html_a89ec355adbf6e03ad16d7faf810af46f"><div class="ttname"><a href="remmina__file_8c.html#a89ec355adbf6e03ad16d7faf810af46f">remmina_file_get_keyfile</a></div><div class="ttdeci">static GKeyFile * remmina_file_get_keyfile(RemminaFile *remminafile)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00680">remmina_file.c:680</a></div></div>
+<div class="ttc" id="remmina__file_8c_html_a55f66f2bb81bf427d6837e1adb7fe1d4"><div class="ttname"><a href="remmina__file_8c.html#a55f66f2bb81bf427d6837e1adb7fe1d4">remmina_file_delete</a></div><div class="ttdeci">void remmina_file_delete(const gchar *filename)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00909">remmina_file.c:909</a></div></div>
<div class="ttc" id="struct___remmina_protocol_plugin_html_aae09a7e2c978cc36e85d0f295518978d"><div class="ttname"><a href="struct___remmina_protocol_plugin.html#aae09a7e2c978cc36e85d0f295518978d">_RemminaProtocolPlugin::basic_settings</a></div><div class="ttdeci">const RemminaProtocolSetting * basic_settings</div><div class="ttdef"><b>Definition:</b> <a href="plugin_8h_source.html#l00074">plugin.h:74</a></div></div>
<div class="ttc" id="structremmina__masterthread__exec__data_html_af4aac360c396741c659474158d7c0e87"><div class="ttname"><a href="structremmina__masterthread__exec__data.html#af4aac360c396741c659474158d7c0e87">remmina_masterthread_exec_data::file_set_string</a></div><div class="ttdeci">struct remmina_masterthread_exec_data::@12::@17 file_set_string</div></div>
<div class="ttc" id="structremmina__masterthread__exec__data_html_ac76a0900842e936efdd2add9ec352886"><div class="ttname"><a href="structremmina__masterthread__exec__data.html#ac76a0900842e936efdd2add9ec352886">remmina_masterthread_exec_data::file_get_string</a></div><div class="ttdeci">struct remmina_masterthread_exec_data::@12::@16 file_get_string</div></div>
<div class="ttc" id="remmina__file__manager_8c_html_aa65bc30beb59d607ba430d966e7e27f5"><div class="ttname"><a href="remmina__file__manager_8c.html#aa65bc30beb59d607ba430d966e7e27f5">remmina_file_get_datadir</a></div><div class="ttdeci">gchar * remmina_file_get_datadir(void)</div><div class="ttdoc">Return datadir_path from pref or first found data dir as per XDG specs. </div><div class="ttdef"><b>Definition:</b> <a href="remmina__file__manager_8c_source.html#l00059">remmina_file_manager.c:59</a></div></div>
-<div class="ttc" id="remmina__file_8c_html_a3d19095f74e9b7c92d74f11bd5a39a8c"><div class="ttname"><a href="remmina__file_8c.html#a3d19095f74e9b7c92d74f11bd5a39a8c">remmina_file_touch</a></div><div class="ttdeci">void remmina_file_touch(RemminaFile *remminafile)</div><div class="ttdoc">Update the atime and mtime of a given filename. </div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l01089">remmina_file.c:1089</a></div></div>
+<div class="ttc" id="remmina__file_8c_html_a3d19095f74e9b7c92d74f11bd5a39a8c"><div class="ttname"><a href="remmina__file_8c.html#a3d19095f74e9b7c92d74f11bd5a39a8c">remmina_file_touch</a></div><div class="ttdeci">void remmina_file_touch(RemminaFile *remminafile)</div><div class="ttdoc">Update the atime and mtime of a given filename. </div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l01103">remmina_file.c:1103</a></div></div>
<div class="ttc" id="remmina__file__manager_8c_html_ace1098aad45256ac0b0155cb042472e9"><div class="ttname"><a href="remmina__file__manager_8c.html#ace1098aad45256ac0b0155cb042472e9">cachedir</a></div><div class="ttdeci">static gchar * cachedir</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file__manager_8c_source.html#l00052">remmina_file_manager.c:52</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_a994425a04b78282ff40a05580cc9355c"><div class="ttname"><a href="struct___remmina_pref.html#a994425a04b78282ff40a05580cc9355c">_RemminaPref::list_refresh_workaround</a></div><div class="ttdeci">gboolean list_refresh_workaround</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00149">remmina_pref.h:149</a></div></div>
<div class="ttc" id="struct___remmina_protocol_setting_html_a6274d44b592a54162ff583135e55ffc9"><div class="ttname"><a href="struct___remmina_protocol_setting.html#a6274d44b592a54162ff583135e55ffc9">_RemminaProtocolSetting::type</a></div><div class="ttdeci">RemminaProtocolSettingType type</div><div class="ttdef"><b>Definition:</b> <a href="types_8h_source.html#l00117">types.h:117</a></div></div>
@@ -154,11 +154,11 @@ $(document).ready(function(){initNavTree('remmina__file_8c_source.html','');});
<div class="ttc" id="rcw_8c_html_a29701ae152ba15f6d8921f395174d2df"><div class="ttname"><a href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a></div><div class="ttdeci">RemminaPref remmina_pref</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l00075">rcw.c:75</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_a788378c190a4ec0ebcf60c570f3b50d5"><div class="ttname"><a href="struct___remmina_pref.html#a788378c190a4ec0ebcf60c570f3b50d5">_RemminaPref::enc_mode</a></div><div class="ttdeci">gint enc_mode</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00194">remmina_pref.h:194</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_aa1544a98f03088dc260ed98f2deac94f"><div class="ttname"><a href="struct___remmina_pref.html#aa1544a98f03088dc260ed98f2deac94f">_RemminaPref::remmina_file_name</a></div><div class="ttdeci">const gchar * remmina_file_name</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00135">remmina_pref.h:135</a></div></div>
-<div class="ttc" id="remmina__file_8c_html_a2c41790e4881335bf934b6c10f94f29d"><div class="ttname"><a href="remmina__file_8c.html#a2c41790e4881335bf934b6c10f94f29d">remmina_file_set_state</a></div><div class="ttdeci">void remmina_file_set_state(RemminaFile *remminafile, const gchar *setting, const gchar *value)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00496">remmina_file.c:496</a></div></div>
-<div class="ttc" id="remmina__file_8c_html_a4884356c195dcfb4ceacf641a1e74e66"><div class="ttname"><a href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a></div><div class="ttdeci">gint remmina_file_get_int(RemminaFile *remminafile, const gchar *setting, gint default_value)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00594">remmina_file.c:594</a></div></div>
+<div class="ttc" id="remmina__file_8c_html_a2c41790e4881335bf934b6c10f94f29d"><div class="ttname"><a href="remmina__file_8c.html#a2c41790e4881335bf934b6c10f94f29d">remmina_file_set_state</a></div><div class="ttdeci">void remmina_file_set_state(RemminaFile *remminafile, const gchar *setting, const gchar *value)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00505">remmina_file.c:505</a></div></div>
+<div class="ttc" id="remmina__file_8c_html_a4884356c195dcfb4ceacf641a1e74e66"><div class="ttname"><a href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a></div><div class="ttdeci">gint remmina_file_get_int(RemminaFile *remminafile, const gchar *setting, gint default_value)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00603">remmina_file.c:603</a></div></div>
<div class="ttc" id="remmina__utils_8c_html_ac804e6111e538ee2fa425b8b6fd1fb66"><div class="ttname"><a href="remmina__utils_8c.html#ac804e6111e538ee2fa425b8b6fd1fb66">remmina_utils_string_replace_all</a></div><div class="ttdeci">guint remmina_utils_string_replace_all(GString *haystack, const gchar *needle, const gchar *replace)</div><div class="ttdoc">Replaces all occurrences of needle in haystack with replace. </div><div class="ttdef"><b>Definition:</b> <a href="remmina__utils_8c_source.html#l00193">remmina_utils.c:193</a></div></div>
<div class="ttc" id="remmina__crypt_8h_html"><div class="ttname"><a href="remmina__crypt_8h.html">remmina_crypt.h</a></div></div>
-<div class="ttc" id="remmina__file_8c_html_a3be28ff7f5a9b44dc47f92b883a85ac5"><div class="ttname"><a href="remmina__file_8c.html#a3be28ff7f5a9b44dc47f92b883a85ac5">remmina_file_store_secret_plugin_password</a></div><div class="ttdeci">void remmina_file_store_secret_plugin_password(RemminaFile *remminafile, const gchar *key, const gchar *value)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00835">remmina_file.c:835</a></div></div>
+<div class="ttc" id="remmina__file_8c_html_a3be28ff7f5a9b44dc47f92b883a85ac5"><div class="ttname"><a href="remmina__file_8c.html#a3be28ff7f5a9b44dc47f92b883a85ac5">remmina_file_store_secret_plugin_password</a></div><div class="ttdeci">void remmina_file_store_secret_plugin_password(RemminaFile *remminafile, const gchar *key, const gchar *value)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00844">remmina_file.c:844</a></div></div>
<div class="ttc" id="remmina__plugin__manager_8c_html_a3872c8656a8a3d5147bcc603471c1932"><div class="ttname"><a href="remmina__plugin__manager_8c.html#a3872c8656a8a3d5147bcc603471c1932">remmina_plugin_manager_get_plugin</a></div><div class="ttdeci">RemminaPlugin * remmina_plugin_manager_get_plugin(RemminaPluginType type, const gchar *name)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__plugin__manager_8c_source.html#l00436">remmina_plugin_manager.c:436</a></div></div>
<div class="ttc" id="remmina__masterthread__exec_8h_html"><div class="ttname"><a href="remmina__masterthread__exec_8h.html">remmina_masterthread_exec.h</a></div></div>
<div class="ttc" id="remmina__pref_8h_html"><div class="ttname"><a href="remmina__pref_8h.html">remmina_pref.h</a></div></div>
@@ -166,15 +166,15 @@ $(document).ready(function(){initNavTree('remmina__file_8c_source.html','');});
<div class="ttc" id="structremmina__masterthread__exec__data_html_abea1e7f8f2ed7639f59907b622fba688"><div class="ttname"><a href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">remmina_masterthread_exec_data::p</a></div><div class="ttdeci">union remmina_masterthread_exec_data::@12 p</div></div>
<div class="ttc" id="struct___remmina_secret_plugin_html_a34defea2606bbc99a2c334f57e056b06"><div class="ttname"><a href="struct___remmina_secret_plugin.html#a34defea2606bbc99a2c334f57e056b06">_RemminaSecretPlugin::get_password</a></div><div class="ttdeci">gchar *(* get_password)(struct _RemminaSecretPlugin *instance, RemminaFile *remminafile, const gchar *key)</div><div class="ttdef"><b>Definition:</b> <a href="plugin_8h_source.html#l00146">plugin.h:146</a></div></div>
<div class="ttc" id="struct___remmina_secret_plugin_html_a03fab6fcb013fa87be06d551f936c317"><div class="ttname"><a href="struct___remmina_secret_plugin.html#a03fab6fcb013fa87be06d551f936c317">_RemminaSecretPlugin::store_password</a></div><div class="ttdeci">void(* store_password)(struct _RemminaSecretPlugin *instance, RemminaFile *remminafile, const gchar *key, const gchar *password)</div><div class="ttdef"><b>Definition:</b> <a href="plugin_8h_source.html#l00145">plugin.h:145</a></div></div>
-<div class="ttc" id="remmina__file_8c_html_a85ca1ca2d0bf9ef29e490c6f4527a954"><div class="ttname"><a href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a></div><div class="ttdeci">void remmina_file_set_string(RemminaFile *remminafile, const gchar *setting, const gchar *value)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00463">remmina_file.c:463</a></div></div>
-<div class="ttc" id="remmina__file_8c_html_a8c893a5deec9bc446bd89cc9973416c7"><div class="ttname"><a href="remmina__file_8c.html#a8c893a5deec9bc446bd89cc9973416c7">remmina_file_save</a></div><div class="ttdeci">void remmina_file_save(RemminaFile *remminafile)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00719">remmina_file.c:719</a></div></div>
-<div class="ttc" id="remmina__file_8c_html_ac1685edf35a793a396ce039d7eec5343"><div class="ttname"><a href="remmina__file_8c.html#ac1685edf35a793a396ce039d7eec5343">remmina_file_copy</a></div><div class="ttdeci">RemminaFile * remmina_file_copy(const gchar *filename)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00213">remmina_file.c:213</a></div></div>
-<div class="ttc" id="remmina__file_8c_html_a42231fba69c82eb51a4e210c2de76960"><div class="ttname"><a href="remmina__file_8c.html#a42231fba69c82eb51a4e210c2de76960">upgrade_sshkeys_202001_mig_common_setting</a></div><div class="ttdeci">static void upgrade_sshkeys_202001_mig_common_setting(RemminaFile *remminafile, gboolean protocol_is_ssh, gboolean ssh_enabled, gchar *suffix)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00261">remmina_file.c:261</a></div></div>
+<div class="ttc" id="remmina__file_8c_html_a85ca1ca2d0bf9ef29e490c6f4527a954"><div class="ttname"><a href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a></div><div class="ttdeci">void remmina_file_set_string(RemminaFile *remminafile, const gchar *setting, const gchar *value)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00469">remmina_file.c:469</a></div></div>
+<div class="ttc" id="remmina__file_8c_html_a8c893a5deec9bc446bd89cc9973416c7"><div class="ttname"><a href="remmina__file_8c.html#a8c893a5deec9bc446bd89cc9973416c7">remmina_file_save</a></div><div class="ttdeci">void remmina_file_save(RemminaFile *remminafile)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00728">remmina_file.c:728</a></div></div>
+<div class="ttc" id="remmina__file_8c_html_ac1685edf35a793a396ce039d7eec5343"><div class="ttname"><a href="remmina__file_8c.html#ac1685edf35a793a396ce039d7eec5343">remmina_file_copy</a></div><div class="ttdeci">RemminaFile * remmina_file_copy(const gchar *filename)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00217">remmina_file.c:217</a></div></div>
+<div class="ttc" id="remmina__file_8c_html_a42231fba69c82eb51a4e210c2de76960"><div class="ttname"><a href="remmina__file_8c.html#a42231fba69c82eb51a4e210c2de76960">upgrade_sshkeys_202001_mig_common_setting</a></div><div class="ttdeci">static void upgrade_sshkeys_202001_mig_common_setting(RemminaFile *remminafile, gboolean protocol_is_ssh, gboolean ssh_enabled, gchar *suffix)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00265">remmina_file.c:265</a></div></div>
<div class="ttc" id="struct___remmina_protocol_plugin_html_a9552c70a10eea2b8263dbc7d05e2fb10"><div class="ttname"><a href="struct___remmina_protocol_plugin.html#a9552c70a10eea2b8263dbc7d05e2fb10">_RemminaProtocolPlugin::icon_name</a></div><div class="ttdeci">const gchar * icon_name</div><div class="ttdef"><b>Definition:</b> <a href="plugin_8h_source.html#l00072">plugin.h:72</a></div></div>
<div class="ttc" id="types_8h_html_aee1a3e130e6991978acd907b52204350ad898beb6ae625dee1ae27de75f1ab4e3"><div class="ttname"><a href="types_8h.html#aee1a3e130e6991978acd907b52204350ad898beb6ae625dee1ae27de75f1ab4e3">REMMINA_PROTOCOL_SETTING_TYPE_END</a></div><div class="ttdef"><b>Definition:</b> <a href="types_8h_source.html#l00098">types.h:98</a></div></div>
-<div class="ttc" id="remmina__file_8c_html_a503e53fe49430a5ed310c342c946c014"><div class="ttname"><a href="remmina__file_8c.html#a503e53fe49430a5ed310c342c946c014">remmina_file_unsave_passwords</a></div><div class="ttdeci">void remmina_file_unsave_passwords(RemminaFile *remminafile)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00967">remmina_file.c:967</a></div></div>
-<div class="ttc" id="remmina__file_8c_html_ac1089fb270a526fa8a4d1bf65ad4d14e"><div class="ttname"><a href="remmina__file_8c.html#ac1089fb270a526fa8a4d1bf65ad4d14e">remmina_file_set_state_int</a></div><div class="ttdeci">void remmina_file_set_state_int(RemminaFile *remminafile, const gchar *setting, gint value)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00585">remmina_file.c:585</a></div></div>
-<div class="ttc" id="remmina__file_8c_html_a2feb8e9e32f3ff4e2fac836e67a77331"><div class="ttname"><a href="remmina__file_8c.html#a2feb8e9e32f3ff4e2fac836e67a77331">remmina_file_get_icon_name</a></div><div class="ttdeci">const gchar * remmina_file_get_icon_name(RemminaFile *remminafile)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00874">remmina_file.c:874</a></div></div>
+<div class="ttc" id="remmina__file_8c_html_a503e53fe49430a5ed310c342c946c014"><div class="ttname"><a href="remmina__file_8c.html#a503e53fe49430a5ed310c342c946c014">remmina_file_unsave_passwords</a></div><div class="ttdeci">void remmina_file_unsave_passwords(RemminaFile *remminafile)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00976">remmina_file.c:976</a></div></div>
+<div class="ttc" id="remmina__file_8c_html_ac1089fb270a526fa8a4d1bf65ad4d14e"><div class="ttname"><a href="remmina__file_8c.html#ac1089fb270a526fa8a4d1bf65ad4d14e">remmina_file_set_state_int</a></div><div class="ttdeci">void remmina_file_set_state_int(RemminaFile *remminafile, const gchar *setting, gint value)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00594">remmina_file.c:594</a></div></div>
+<div class="ttc" id="remmina__file_8c_html_a2feb8e9e32f3ff4e2fac836e67a77331"><div class="ttname"><a href="remmina__file_8c.html#a2feb8e9e32f3ff4e2fac836e67a77331">remmina_file_get_icon_name</a></div><div class="ttdeci">const gchar * remmina_file_get_icon_name(RemminaFile *remminafile)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00883">remmina_file.c:883</a></div></div>
<div class="ttc" id="remmina__file_8c_html_adab087b7139756f029020a87a5438cfa"><div class="ttname"><a href="remmina__file_8c.html#adab087b7139756f029020a87a5438cfa">remmina_file_new_empty</a></div><div class="ttdeci">static RemminaFile * remmina_file_new_empty(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00076">remmina_file.c:76</a></div></div>
<div class="ttc" id="structremmina__masterthread__exec__data_html_ab3d58f7a9847ce04c9dcd3917910fdb1"><div class="ttname"><a href="structremmina__masterthread__exec__data.html#ab3d58f7a9847ce04c9dcd3917910fdb1">remmina_masterthread_exec_data::func</a></div><div class="ttdeci">enum remmina_masterthread_exec_data::@11 func</div></div>
<div class="ttc" id="remmina__pref_8h_html_ab48899087cc647f0f791ed0c459adc53ad5263951640011bc43bd8a31f67a9f8b"><div class="ttname"><a href="remmina__pref_8h.html#ab48899087cc647f0f791ed0c459adc53ad5263951640011bc43bd8a31f67a9f8b">RM_ENC_MODE_SODIUM_MODERATE</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00093">remmina_pref.h:93</a></div></div>
diff --git a/public/remmina__file_8h.html b/public/remmina__file_8h.html
index a7b1386fa..c15e4e023 100644
--- a/public/remmina__file_8h.html
+++ b/public/remmina__file_8h.html
@@ -226,7 +226,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l00213">213</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l00217">217</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
</div>
</div>
@@ -246,7 +246,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l00900">900</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l00909">909</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
</div>
</div>
@@ -266,7 +266,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l00854">854</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l00863">863</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
</div>
</div>
@@ -296,7 +296,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l00888">888</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l00897">897</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
</div>
</div>
@@ -326,7 +326,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l00552">552</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l00561">561</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
</div>
</div>
@@ -346,7 +346,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l00700">700</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l00709">709</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
</div>
</div>
@@ -401,7 +401,7 @@ Functions</h2></td></tr>
<p>This is used to return the modification date of a file and it’s used to return the modification date and time of a given Remmina file. If it fails it will return "Fri, 16 Oct 2009 07:04:46 GMT", that is just a date to don't return an empty string (challenge: what was happened that day at that time?). </p><dl class="section return"><dt>Returns</dt><dd>A date string in the form "%d/%m/%Y %H:%M:%S". </dd></dl>
<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000004">Todo:</a></b></dt><dd>This should be moved to <a class="el" href="remmina__utils_8c.html">remmina_utils.c</a> </dd></dl>
-<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l01020">1020</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l01029">1029</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
</div>
</div>
@@ -421,7 +421,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l00206">206</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l00210">210</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
</div>
</div>
@@ -441,7 +441,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l00874">874</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l00883">883</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
</div>
</div>
@@ -477,7 +477,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l00594">594</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l00603">603</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
</div>
</div>
@@ -507,7 +507,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l00542">542</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l00551">551</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
</div>
</div>
@@ -537,7 +537,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l00914">914</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l00923">923</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
</div>
</div>
@@ -573,7 +573,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l00646">646</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l00655">655</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
</div>
</div>
@@ -609,7 +609,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l00606">606</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l00615">615</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
</div>
</div>
@@ -657,7 +657,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l00507">507</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l00516">516</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
</div>
</div>
@@ -677,7 +677,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l00346">346</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l00350">350</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
</div>
</div>
@@ -745,7 +745,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l00719">719</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l00728">728</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
</div>
</div>
@@ -811,7 +811,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l00576">576</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l00585">585</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
</div>
</div>
@@ -847,7 +847,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l00496">496</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l00505">505</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
</div>
</div>
@@ -883,7 +883,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l00585">585</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l00594">594</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
</div>
</div>
@@ -939,7 +939,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l00463">463</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l00469">469</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
</div>
</div>
@@ -959,7 +959,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l00937">937</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l00946">946</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
</div>
</div>
@@ -995,7 +995,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l00835">835</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l00844">844</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
</div>
</div>
@@ -1019,7 +1019,7 @@ Functions</h2></td></tr>
<p>Function used to update the atime and mtime of a given remmina file, partially taken from suckless sbase </p><dl class="section see"><dt>See also</dt><dd><a href="https://git.suckless.org/sbase/tree/touch.c">https://git.suckless.org/sbase/tree/touch.c</a> </dd></dl>
<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000005">Todo:</a></b></dt><dd>This should be moved to <a class="el" href="remmina__utils_8c.html">remmina_utils.c</a> </dd></dl>
-<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l01089">1089</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l01103">1103</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
</div>
</div>
@@ -1039,7 +1039,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l00967">967</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__file_8c_source.html#l00976">976</a> of file <a class="el" href="remmina__file_8c_source.html">remmina_file.c</a>.</p>
</div>
</div>
diff --git a/public/remmina__file_8h_source.html b/public/remmina__file_8h_source.html
index e7896a170..88ea79624 100644
--- a/public/remmina__file_8h_source.html
+++ b/public/remmina__file_8h_source.html
@@ -91,47 +91,47 @@ $(document).ready(function(){initNavTree('remmina__file_8h_source.html','');});
<div class="ttc" id="types_8h_html"><div class="ttname"><a href="types_8h.html">types.h</a></div></div>
<div class="ttc" id="remmina__file_8h_html_abc6126af1d45847bc59afa0aa3216b04a9f6024449a620d679eab2c09ea77877e"><div class="ttname"><a href="remmina__file_8h.html#abc6126af1d45847bc59afa0aa3216b04a9f6024449a620d679eab2c09ea77877e">SSH_AUTH_AUTO_PUBLICKEY</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8h_source.html#l00071">remmina_file.h:71</a></div></div>
<div class="ttc" id="types_8h_html_a112d7cc6c755209cabb68cf2a62ad515"><div class="ttname"><a href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a></div><div class="ttdeci">typedefG_BEGIN_DECLS struct _RemminaFile RemminaFile</div><div class="ttdef"><b>Definition:</b> <a href="types_8h_source.html#l00044">types.h:44</a></div></div>
-<div class="ttc" id="remmina__file_8h_html_a55f66f2bb81bf427d6837e1adb7fe1d4"><div class="ttname"><a href="remmina__file_8h.html#a55f66f2bb81bf427d6837e1adb7fe1d4">remmina_file_delete</a></div><div class="ttdeci">void remmina_file_delete(const gchar *filename)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00900">remmina_file.c:900</a></div></div>
+<div class="ttc" id="remmina__file_8h_html_a55f66f2bb81bf427d6837e1adb7fe1d4"><div class="ttname"><a href="remmina__file_8h.html#a55f66f2bb81bf427d6837e1adb7fe1d4">remmina_file_delete</a></div><div class="ttdeci">void remmina_file_delete(const gchar *filename)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00909">remmina_file.c:909</a></div></div>
<div class="ttc" id="remmina__file_8h_html_abc6126af1d45847bc59afa0aa3216b04ace3e7d92bcc601166da74981deacb0f8"><div class="ttname"><a href="remmina__file_8h.html#abc6126af1d45847bc59afa0aa3216b04ace3e7d92bcc601166da74981deacb0f8">SSH_AUTH_KBDINTERACTIVE</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8h_source.html#l00073">remmina_file.h:73</a></div></div>
-<div class="ttc" id="remmina__file_8h_html_a3d19095f74e9b7c92d74f11bd5a39a8c"><div class="ttname"><a href="remmina__file_8h.html#a3d19095f74e9b7c92d74f11bd5a39a8c">remmina_file_touch</a></div><div class="ttdeci">void remmina_file_touch(RemminaFile *remminafile)</div><div class="ttdoc">Update the atime and mtime of a given filename. </div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l01089">remmina_file.c:1089</a></div></div>
+<div class="ttc" id="remmina__file_8h_html_a3d19095f74e9b7c92d74f11bd5a39a8c"><div class="ttname"><a href="remmina__file_8h.html#a3d19095f74e9b7c92d74f11bd5a39a8c">remmina_file_touch</a></div><div class="ttdeci">void remmina_file_touch(RemminaFile *remminafile)</div><div class="ttdoc">Update the atime and mtime of a given filename. </div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l01103">remmina_file.c:1103</a></div></div>
<div class="ttc" id="struct___remmina_file_html_ab09e90eeed7d342e4654daad6acdf0fb"><div class="ttname"><a href="struct___remmina_file.html#ab09e90eeed7d342e4654daad6acdf0fb">_RemminaFile::statefile</a></div><div class="ttdeci">gchar * statefile</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8h_source.html#l00049">remmina_file.h:49</a></div></div>
<div class="ttc" id="struct___remmina_file_html_a756cb639b6ccf103705814e85ec1968f"><div class="ttname"><a href="struct___remmina_file.html#a756cb639b6ccf103705814e85ec1968f">_RemminaFile::states</a></div><div class="ttdeci">GHashTable * states</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8h_source.html#l00051">remmina_file.h:51</a></div></div>
<div class="ttc" id="remmina__file_8h_html_a5e421ba636d34e21bba5ece463e98892"><div class="ttname"><a href="remmina__file_8h.html#a5e421ba636d34e21bba5ece463e98892">remmina_file_new</a></div><div class="ttdeci">RemminaFile * remmina_file_new(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00093">remmina_file.c:93</a></div></div>
<div class="ttc" id="remmina__file_8h_html_a1943b63633f87fd2db0a710341c4827b"><div class="ttname"><a href="remmina__file_8h.html#a1943b63633f87fd2db0a710341c4827b">remmina_file_remove_key</a></div><div class="ttdeci">gboolean remmina_file_remove_key(RemminaFile *remminafile, const gchar *setting)</div></div>
-<div class="ttc" id="remmina__file_8h_html_ac1685edf35a793a396ce039d7eec5343"><div class="ttname"><a href="remmina__file_8h.html#ac1685edf35a793a396ce039d7eec5343">remmina_file_copy</a></div><div class="ttdeci">RemminaFile * remmina_file_copy(const gchar *filename)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00213">remmina_file.c:213</a></div></div>
-<div class="ttc" id="remmina__file_8h_html_ad2cf2ab34ab748bb984005fdd579d113"><div class="ttname"><a href="remmina__file_8h.html#ad2cf2ab34ab748bb984005fdd579d113">remmina_file_get_state_double</a></div><div class="ttdeci">gdouble remmina_file_get_state_double(RemminaFile *remminafile, const gchar *setting, gdouble default_value)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00646">remmina_file.c:646</a></div></div>
-<div class="ttc" id="remmina__file_8h_html_a52a0986eaf54c9e606ce9cdf8bb57e60"><div class="ttname"><a href="remmina__file_8h.html#a52a0986eaf54c9e606ce9cdf8bb57e60">remmina_file_dup_temp_protocol</a></div><div class="ttdeci">RemminaFile * remmina_file_dup_temp_protocol(RemminaFile *remminafile, const gchar *new_protocol)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00888">remmina_file.c:888</a></div></div>
+<div class="ttc" id="remmina__file_8h_html_ac1685edf35a793a396ce039d7eec5343"><div class="ttname"><a href="remmina__file_8h.html#ac1685edf35a793a396ce039d7eec5343">remmina_file_copy</a></div><div class="ttdeci">RemminaFile * remmina_file_copy(const gchar *filename)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00217">remmina_file.c:217</a></div></div>
+<div class="ttc" id="remmina__file_8h_html_ad2cf2ab34ab748bb984005fdd579d113"><div class="ttname"><a href="remmina__file_8h.html#ad2cf2ab34ab748bb984005fdd579d113">remmina_file_get_state_double</a></div><div class="ttdeci">gdouble remmina_file_get_state_double(RemminaFile *remminafile, const gchar *setting, gdouble default_value)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00655">remmina_file.c:655</a></div></div>
+<div class="ttc" id="remmina__file_8h_html_a52a0986eaf54c9e606ce9cdf8bb57e60"><div class="ttname"><a href="remmina__file_8h.html#a52a0986eaf54c9e606ce9cdf8bb57e60">remmina_file_dup_temp_protocol</a></div><div class="ttdeci">RemminaFile * remmina_file_dup_temp_protocol(RemminaFile *remminafile, const gchar *new_protocol)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00897">remmina_file.c:897</a></div></div>
<div class="ttc" id="remmina__file_8h_html_aeefa562baee867fba8c06165ae656de1"><div class="ttname"><a href="remmina__file_8h.html#aeefa562baee867fba8c06165ae656de1">remmina_file_set_statefile</a></div><div class="ttdeci">void remmina_file_set_statefile(RemminaFile *remminafile)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00189">remmina_file.c:189</a></div></div>
-<div class="ttc" id="remmina__file_8h_html_af8c58daf7ee71345ae548e7a5332a8f6"><div class="ttname"><a href="remmina__file_8h.html#af8c58daf7ee71345ae548e7a5332a8f6">remmina_file_get_state</a></div><div class="ttdeci">const gchar * remmina_file_get_state(RemminaFile *remminafile, const gchar *setting)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00914">remmina_file.c:914</a></div></div>
-<div class="ttc" id="remmina__file_8h_html_a493ffa77b862ff3bad9ea951592715a8"><div class="ttname"><a href="remmina__file_8h.html#a493ffa77b862ff3bad9ea951592715a8">remmina_file_state_last_success</a></div><div class="ttdeci">void remmina_file_state_last_success(RemminaFile *remminafile)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00937">remmina_file.c:937</a></div></div>
-<div class="ttc" id="remmina__file_8h_html_ac1089fb270a526fa8a4d1bf65ad4d14e"><div class="ttname"><a href="remmina__file_8h.html#ac1089fb270a526fa8a4d1bf65ad4d14e">remmina_file_set_state_int</a></div><div class="ttdeci">void remmina_file_set_state_int(RemminaFile *remminafile, const gchar *setting, gint value)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00585">remmina_file.c:585</a></div></div>
-<div class="ttc" id="remmina__file_8h_html_a96abbfdc183d1e82fdffd6445d611ffe"><div class="ttname"><a href="remmina__file_8h.html#a96abbfdc183d1e82fdffd6445d611ffe">remmina_file_get_datetime</a></div><div class="ttdeci">gchar * remmina_file_get_datetime(RemminaFile *remminafile)</div><div class="ttdoc">Return the string date of the last time a Remmina state file has been modified. </div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l01020">remmina_file.c:1020</a></div></div>
-<div class="ttc" id="remmina__file_8h_html_a3be28ff7f5a9b44dc47f92b883a85ac5"><div class="ttname"><a href="remmina__file_8h.html#a3be28ff7f5a9b44dc47f92b883a85ac5">remmina_file_store_secret_plugin_password</a></div><div class="ttdeci">void remmina_file_store_secret_plugin_password(RemminaFile *remminafile, const gchar *key, const gchar *value)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00835">remmina_file.c:835</a></div></div>
+<div class="ttc" id="remmina__file_8h_html_af8c58daf7ee71345ae548e7a5332a8f6"><div class="ttname"><a href="remmina__file_8h.html#af8c58daf7ee71345ae548e7a5332a8f6">remmina_file_get_state</a></div><div class="ttdeci">const gchar * remmina_file_get_state(RemminaFile *remminafile, const gchar *setting)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00923">remmina_file.c:923</a></div></div>
+<div class="ttc" id="remmina__file_8h_html_a493ffa77b862ff3bad9ea951592715a8"><div class="ttname"><a href="remmina__file_8h.html#a493ffa77b862ff3bad9ea951592715a8">remmina_file_state_last_success</a></div><div class="ttdeci">void remmina_file_state_last_success(RemminaFile *remminafile)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00946">remmina_file.c:946</a></div></div>
+<div class="ttc" id="remmina__file_8h_html_ac1089fb270a526fa8a4d1bf65ad4d14e"><div class="ttname"><a href="remmina__file_8h.html#ac1089fb270a526fa8a4d1bf65ad4d14e">remmina_file_set_state_int</a></div><div class="ttdeci">void remmina_file_set_state_int(RemminaFile *remminafile, const gchar *setting, gint value)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00594">remmina_file.c:594</a></div></div>
+<div class="ttc" id="remmina__file_8h_html_a96abbfdc183d1e82fdffd6445d611ffe"><div class="ttname"><a href="remmina__file_8h.html#a96abbfdc183d1e82fdffd6445d611ffe">remmina_file_get_datetime</a></div><div class="ttdeci">gchar * remmina_file_get_datetime(RemminaFile *remminafile)</div><div class="ttdoc">Return the string date of the last time a Remmina state file has been modified. </div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l01029">remmina_file.c:1029</a></div></div>
+<div class="ttc" id="remmina__file_8h_html_a3be28ff7f5a9b44dc47f92b883a85ac5"><div class="ttname"><a href="remmina__file_8h.html#a3be28ff7f5a9b44dc47f92b883a85ac5">remmina_file_store_secret_plugin_password</a></div><div class="ttdeci">void remmina_file_store_secret_plugin_password(RemminaFile *remminafile, const gchar *key, const gchar *value)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00844">remmina_file.c:844</a></div></div>
<div class="ttc" id="struct___remmina_file_html_af70ba06ac6baad2b128d4818a4aa6488"><div class="ttname"><a href="struct___remmina_file.html#af70ba06ac6baad2b128d4818a4aa6488">_RemminaFile::prevent_saving</a></div><div class="ttdeci">gboolean prevent_saving</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8h_source.html#l00053">remmina_file.h:53</a></div></div>
-<div class="ttc" id="remmina__file_8h_html_aba0aa663aaad89e4df41b42259d29841"><div class="ttname"><a href="remmina__file_8h.html#aba0aa663aaad89e4df41b42259d29841">remmina_file_get_state_int</a></div><div class="ttdeci">gint remmina_file_get_state_int(RemminaFile *remminafile, const gchar *setting, gint default_value)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00606">remmina_file.c:606</a></div></div>
+<div class="ttc" id="remmina__file_8h_html_aba0aa663aaad89e4df41b42259d29841"><div class="ttname"><a href="remmina__file_8h.html#aba0aa663aaad89e4df41b42259d29841">remmina_file_get_state_int</a></div><div class="ttdeci">gint remmina_file_get_state_int(RemminaFile *remminafile, const gchar *setting, gint default_value)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00615">remmina_file.c:615</a></div></div>
<div class="ttc" id="remmina__file_8h_html_ab03b042504c09c1ad880ac126a703114"><div class="ttname"><a href="remmina__file_8h.html#ab03b042504c09c1ad880ac126a703114">remmina_file_set_filename</a></div><div class="ttdeci">void remmina_file_set_filename(RemminaFile *remminafile, const gchar *filename)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00182">remmina_file.c:182</a></div></div>
<div class="ttc" id="remmina__file_8h_html_abc6126af1d45847bc59afa0aa3216b04aeba5f4ff7657d7b15519556793ee8930"><div class="ttname"><a href="remmina__file_8h.html#abc6126af1d45847bc59afa0aa3216b04aeba5f4ff7657d7b15519556793ee8930">SSH_AUTH_PUBLICKEY</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8h_source.html#l00069">remmina_file.h:69</a></div></div>
-<div class="ttc" id="remmina__file_8h_html_a2c41790e4881335bf934b6c10f94f29d"><div class="ttname"><a href="remmina__file_8h.html#a2c41790e4881335bf934b6c10f94f29d">remmina_file_set_state</a></div><div class="ttdeci">void remmina_file_set_state(RemminaFile *remminafile, const gchar *setting, const gchar *value)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00496">remmina_file.c:496</a></div></div>
+<div class="ttc" id="remmina__file_8h_html_a2c41790e4881335bf934b6c10f94f29d"><div class="ttname"><a href="remmina__file_8h.html#a2c41790e4881335bf934b6c10f94f29d">remmina_file_set_state</a></div><div class="ttdeci">void remmina_file_set_state(RemminaFile *remminafile, const gchar *setting, const gchar *value)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00505">remmina_file.c:505</a></div></div>
<div class="ttc" id="remmina__file_8h_html_abc6126af1d45847bc59afa0aa3216b04a6264a71469928ad51fa802f65f1a934a"><div class="ttname"><a href="remmina__file_8h.html#abc6126af1d45847bc59afa0aa3216b04a6264a71469928ad51fa802f65f1a934a">SSH_AUTH_GSSAPI</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8h_source.html#l00072">remmina_file.h:72</a></div></div>
-<div class="ttc" id="remmina__file_8h_html_a3fb992fced83e0f1c4e4e3c8d2206be5"><div class="ttname"><a href="remmina__file_8h.html#a3fb992fced83e0f1c4e4e3c8d2206be5">remmina_file_dup</a></div><div class="ttdeci">RemminaFile * remmina_file_dup(RemminaFile *remminafile)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00854">remmina_file.c:854</a></div></div>
-<div class="ttc" id="remmina__file_8h_html_a4884356c195dcfb4ceacf641a1e74e66"><div class="ttname"><a href="remmina__file_8h.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a></div><div class="ttdeci">gint remmina_file_get_int(RemminaFile *remminafile, const gchar *setting, gint default_value)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00594">remmina_file.c:594</a></div></div>
+<div class="ttc" id="remmina__file_8h_html_a3fb992fced83e0f1c4e4e3c8d2206be5"><div class="ttname"><a href="remmina__file_8h.html#a3fb992fced83e0f1c4e4e3c8d2206be5">remmina_file_dup</a></div><div class="ttdeci">RemminaFile * remmina_file_dup(RemminaFile *remminafile)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00863">remmina_file.c:863</a></div></div>
+<div class="ttc" id="remmina__file_8h_html_a4884356c195dcfb4ceacf641a1e74e66"><div class="ttname"><a href="remmina__file_8h.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a></div><div class="ttdeci">gint remmina_file_get_int(RemminaFile *remminafile, const gchar *setting, gint default_value)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00603">remmina_file.c:603</a></div></div>
<div class="ttc" id="remmina__file_8h_html_ac952f8ddb715314f11cef1ccc513fb7e"><div class="ttname"><a href="remmina__file_8h.html#ac952f8ddb715314f11cef1ccc513fb7e">remmina_file_generate_filename</a></div><div class="ttdeci">void remmina_file_generate_filename(RemminaFile *remminafile)</div><div class="ttdoc">Generate a new Remmina connection profile file name. </div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00114">remmina_file.c:114</a></div></div>
-<div class="ttc" id="remmina__file_8h_html_af153b0d289ac93f6ecdaa15d5f3b9b8c"><div class="ttname"><a href="remmina__file_8h.html#af153b0d289ac93f6ecdaa15d5f3b9b8c">remmina_file_set_int</a></div><div class="ttdeci">void remmina_file_set_int(RemminaFile *remminafile, const gchar *setting, gint value)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00576">remmina_file.c:576</a></div></div>
+<div class="ttc" id="remmina__file_8h_html_af153b0d289ac93f6ecdaa15d5f3b9b8c"><div class="ttname"><a href="remmina__file_8h.html#af153b0d289ac93f6ecdaa15d5f3b9b8c">remmina_file_set_int</a></div><div class="ttdeci">void remmina_file_set_int(RemminaFile *remminafile, const gchar *setting, gint value)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00585">remmina_file.c:585</a></div></div>
<div class="ttc" id="remmina__file_8h_html_abc6126af1d45847bc59afa0aa3216b04a7d995a7868d2d2f81e9dd2f898b206fe"><div class="ttname"><a href="remmina__file_8h.html#abc6126af1d45847bc59afa0aa3216b04a7d995a7868d2d2f81e9dd2f898b206fe">SSH_AUTH_PASSWORD</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8h_source.html#l00068">remmina_file.h:68</a></div></div>
-<div class="ttc" id="remmina__file_8h_html_abd2f06bf0a5ddcf7156e5ef7d0c8d4d7"><div class="ttname"><a href="remmina__file_8h.html#abd2f06bf0a5ddcf7156e5ef7d0c8d4d7">remmina_file_free</a></div><div class="ttdeci">void remmina_file_free(RemminaFile *remminafile)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00700">remmina_file.c:700</a></div></div>
-<div class="ttc" id="remmina__file_8h_html_afd8b12f3d84b4e201b9f465d5b8e0d03"><div class="ttname"><a href="remmina__file_8h.html#afd8b12f3d84b4e201b9f465d5b8e0d03">remmina_file_format_properties</a></div><div class="ttdeci">gchar * remmina_file_format_properties(RemminaFile *remminafile, const gchar *setting)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00552">remmina_file.c:552</a></div></div>
-<div class="ttc" id="remmina__file_8h_html_a8c893a5deec9bc446bd89cc9973416c7"><div class="ttname"><a href="remmina__file_8h.html#a8c893a5deec9bc446bd89cc9973416c7">remmina_file_save</a></div><div class="ttdeci">void remmina_file_save(RemminaFile *remminafile)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00719">remmina_file.c:719</a></div></div>
-<div class="ttc" id="remmina__file_8h_html_a8eb1b213d9d08c6ad13683ce05f4355e"><div class="ttname"><a href="remmina__file_8h.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a></div><div class="ttdeci">const gchar * remmina_file_get_string(RemminaFile *remminafile, const gchar *setting)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00507">remmina_file.c:507</a></div></div>
-<div class="ttc" id="remmina__file_8h_html_a503e53fe49430a5ed310c342c946c014"><div class="ttname"><a href="remmina__file_8h.html#a503e53fe49430a5ed310c342c946c014">remmina_file_unsave_passwords</a></div><div class="ttdeci">void remmina_file_unsave_passwords(RemminaFile *remminafile)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00967">remmina_file.c:967</a></div></div>
-<div class="ttc" id="remmina__file_8h_html_a2feb8e9e32f3ff4e2fac836e67a77331"><div class="ttname"><a href="remmina__file_8h.html#a2feb8e9e32f3ff4e2fac836e67a77331">remmina_file_get_icon_name</a></div><div class="ttdeci">const gchar * remmina_file_get_icon_name(RemminaFile *remminafile)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00874">remmina_file.c:874</a></div></div>
-<div class="ttc" id="remmina__file_8h_html_ac1cc2d7f827f7d64c7fd3edf10e9383e"><div class="ttname"><a href="remmina__file_8h.html#ac1cc2d7f827f7d64c7fd3edf10e9383e">remmina_file_load</a></div><div class="ttdeci">RemminaFile * remmina_file_load(const gchar *filename)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00346">remmina_file.c:346</a></div></div>
+<div class="ttc" id="remmina__file_8h_html_abd2f06bf0a5ddcf7156e5ef7d0c8d4d7"><div class="ttname"><a href="remmina__file_8h.html#abd2f06bf0a5ddcf7156e5ef7d0c8d4d7">remmina_file_free</a></div><div class="ttdeci">void remmina_file_free(RemminaFile *remminafile)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00709">remmina_file.c:709</a></div></div>
+<div class="ttc" id="remmina__file_8h_html_afd8b12f3d84b4e201b9f465d5b8e0d03"><div class="ttname"><a href="remmina__file_8h.html#afd8b12f3d84b4e201b9f465d5b8e0d03">remmina_file_format_properties</a></div><div class="ttdeci">gchar * remmina_file_format_properties(RemminaFile *remminafile, const gchar *setting)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00561">remmina_file.c:561</a></div></div>
+<div class="ttc" id="remmina__file_8h_html_a8c893a5deec9bc446bd89cc9973416c7"><div class="ttname"><a href="remmina__file_8h.html#a8c893a5deec9bc446bd89cc9973416c7">remmina_file_save</a></div><div class="ttdeci">void remmina_file_save(RemminaFile *remminafile)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00728">remmina_file.c:728</a></div></div>
+<div class="ttc" id="remmina__file_8h_html_a8eb1b213d9d08c6ad13683ce05f4355e"><div class="ttname"><a href="remmina__file_8h.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a></div><div class="ttdeci">const gchar * remmina_file_get_string(RemminaFile *remminafile, const gchar *setting)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00516">remmina_file.c:516</a></div></div>
+<div class="ttc" id="remmina__file_8h_html_a503e53fe49430a5ed310c342c946c014"><div class="ttname"><a href="remmina__file_8h.html#a503e53fe49430a5ed310c342c946c014">remmina_file_unsave_passwords</a></div><div class="ttdeci">void remmina_file_unsave_passwords(RemminaFile *remminafile)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00976">remmina_file.c:976</a></div></div>
+<div class="ttc" id="remmina__file_8h_html_a2feb8e9e32f3ff4e2fac836e67a77331"><div class="ttname"><a href="remmina__file_8h.html#a2feb8e9e32f3ff4e2fac836e67a77331">remmina_file_get_icon_name</a></div><div class="ttdeci">const gchar * remmina_file_get_icon_name(RemminaFile *remminafile)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00883">remmina_file.c:883</a></div></div>
+<div class="ttc" id="remmina__file_8h_html_ac1cc2d7f827f7d64c7fd3edf10e9383e"><div class="ttname"><a href="remmina__file_8h.html#ac1cc2d7f827f7d64c7fd3edf10e9383e">remmina_file_load</a></div><div class="ttdeci">RemminaFile * remmina_file_load(const gchar *filename)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00350">remmina_file.c:350</a></div></div>
<div class="ttc" id="struct___remmina_file_html_a5edb4595f0c83cae611b557bfba02a07"><div class="ttname"><a href="struct___remmina_file.html#a5edb4595f0c83cae611b557bfba02a07">_RemminaFile::filename</a></div><div class="ttdeci">gchar * filename</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8h_source.html#l00047">remmina_file.h:47</a></div></div>
<div class="ttc" id="struct___remmina_file_html"><div class="ttname"><a href="struct___remmina_file.html">_RemminaFile</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8h_source.html#l00046">remmina_file.h:46</a></div></div>
-<div class="ttc" id="remmina__file_8h_html_ad514c2523ff0c919ddf535e3dbad9f3a"><div class="ttname"><a href="remmina__file_8h.html#ad514c2523ff0c919ddf535e3dbad9f3a">remmina_file_get_secret</a></div><div class="ttdeci">gchar * remmina_file_get_secret(RemminaFile *remminafile, const gchar *setting)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00542">remmina_file.c:542</a></div></div>
+<div class="ttc" id="remmina__file_8h_html_ad514c2523ff0c919ddf535e3dbad9f3a"><div class="ttname"><a href="remmina__file_8h.html#ad514c2523ff0c919ddf535e3dbad9f3a">remmina_file_get_secret</a></div><div class="ttdeci">gchar * remmina_file_get_secret(RemminaFile *remminafile, const gchar *setting)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00551">remmina_file.c:551</a></div></div>
<div class="ttc" id="remmina__file_8h_html_abc6126af1d45847bc59afa0aa3216b04a39a8dcea793c406f0fe90f3175c4318e"><div class="ttname"><a href="remmina__file_8h.html#abc6126af1d45847bc59afa0aa3216b04a39a8dcea793c406f0fe90f3175c4318e">SSH_AUTH_AGENT</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8h_source.html#l00070">remmina_file.h:70</a></div></div>
-<div class="ttc" id="remmina__file_8h_html_a85ca1ca2d0bf9ef29e490c6f4527a954"><div class="ttname"><a href="remmina__file_8h.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a></div><div class="ttdeci">void remmina_file_set_string(RemminaFile *remminafile, const gchar *setting, const gchar *value)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00463">remmina_file.c:463</a></div></div>
+<div class="ttc" id="remmina__file_8h_html_a85ca1ca2d0bf9ef29e490c6f4527a954"><div class="ttname"><a href="remmina__file_8h.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a></div><div class="ttdeci">void remmina_file_set_string(RemminaFile *remminafile, const gchar *setting, const gchar *value)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00469">remmina_file.c:469</a></div></div>
<div class="ttc" id="struct___remmina_file_html_aa090f1969b90157a3df6067e8e13ffcd"><div class="ttname"><a href="struct___remmina_file.html#aa090f1969b90157a3df6067e8e13ffcd">_RemminaFile::settings</a></div><div class="ttdeci">GHashTable * settings</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8h_source.html#l00050">remmina_file.h:50</a></div></div>
-<div class="ttc" id="remmina__file_8h_html_ad1e4f3a0f64cd98e301044b6c38a1f1d"><div class="ttname"><a href="remmina__file_8h.html#ad1e4f3a0f64cd98e301044b6c38a1f1d">remmina_file_get_filename</a></div><div class="ttdeci">const gchar * remmina_file_get_filename(RemminaFile *remminafile)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00206">remmina_file.c:206</a></div></div>
+<div class="ttc" id="remmina__file_8h_html_ad1e4f3a0f64cd98e301044b6c38a1f1d"><div class="ttname"><a href="remmina__file_8h.html#ad1e4f3a0f64cd98e301044b6c38a1f1d">remmina_file_get_filename</a></div><div class="ttdeci">const gchar * remmina_file_get_filename(RemminaFile *remminafile)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00210">remmina_file.c:210</a></div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
diff --git a/public/remmina__file__editor_8c_source.html b/public/remmina__file__editor_8c_source.html
index 48e0308d2..d05c07128 100644
--- a/public/remmina__file__editor_8c_source.html
+++ b/public/remmina__file__editor_8c_source.html
@@ -90,10 +90,10 @@ $(document).ready(function(){initNavTree('remmina__file__editor_8c_source.html',
<div class="ttc" id="remmina__public_8c_html_af9c70a727bfeb32730b98ce5cf7a3739"><div class="ttname"><a href="remmina__public_8c.html#af9c70a727bfeb32730b98ce5cf7a3739">remmina_public_create_group</a></div><div class="ttdeci">void remmina_public_create_group(GtkGrid *grid, const gchar *group, gint row, gint rows, gint cols)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__public_8c_source.html#l00249">remmina_public.c:249</a></div></div>
<div class="ttc" id="remmina__plugin__manager_8c_html_af60b8edfa50563ae4c7593efc3deed55"><div class="ttname"><a href="remmina__plugin__manager_8c.html#af60b8edfa50563ae4c7593efc3deed55">remmina_plugin_manager_get_canonical_setting_name</a></div><div class="ttdeci">const gchar * remmina_plugin_manager_get_canonical_setting_name(const RemminaProtocolSetting *setting)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__plugin__manager_8c_source.html#l00451">remmina_plugin_manager.c:451</a></div></div>
<div class="ttc" id="remmina__string__list_8c_html_a11147c41297537effe55f18a63ce9f7e"><div class="ttname"><a href="remmina__string__list_8c.html#a11147c41297537effe55f18a63ce9f7e">remmina_string_list_new</a></div><div class="ttdeci">GtkDialog * remmina_string_list_new(gboolean two_columns, const gchar *fields_separator)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__string__list_8c_source.html#l00280">remmina_string_list.c:280</a></div></div>
-<div class="ttc" id="remmina__file_8c_html_abd2f06bf0a5ddcf7156e5ef7d0c8d4d7"><div class="ttname"><a href="remmina__file_8c.html#abd2f06bf0a5ddcf7156e5ef7d0c8d4d7">remmina_file_free</a></div><div class="ttdeci">void remmina_file_free(RemminaFile *remminafile)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00700">remmina_file.c:700</a></div></div>
+<div class="ttc" id="remmina__file_8c_html_abd2f06bf0a5ddcf7156e5ef7d0c8d4d7"><div class="ttname"><a href="remmina__file_8c.html#abd2f06bf0a5ddcf7156e5ef7d0c8d4d7">remmina_file_free</a></div><div class="ttdeci">void remmina_file_free(RemminaFile *remminafile)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00709">remmina_file.c:709</a></div></div>
<div class="ttc" id="struct___remmina_plugin_html"><div class="ttname"><a href="struct___remmina_plugin.html">_RemminaPlugin</a></div><div class="ttdef"><b>Definition:</b> <a href="plugin_8h_source.html#l00056">plugin.h:56</a></div></div>
<div class="ttc" id="remmina__plugin__manager_8h_html"><div class="ttname"><a href="remmina__plugin__manager_8h.html">remmina_plugin_manager.h</a></div></div>
-<div class="ttc" id="remmina__file_8c_html_a8eb1b213d9d08c6ad13683ce05f4355e"><div class="ttname"><a href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a></div><div class="ttdeci">const gchar * remmina_file_get_string(RemminaFile *remminafile, const gchar *setting)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00507">remmina_file.c:507</a></div></div>
+<div class="ttc" id="remmina__file_8c_html_a8eb1b213d9d08c6ad13683ce05f4355e"><div class="ttname"><a href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a></div><div class="ttdeci">const gchar * remmina_file_get_string(RemminaFile *remminafile, const gchar *setting)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00516">remmina_file.c:516</a></div></div>
<div class="ttc" id="remmina__pref_8c_html_a745bbef1d48a7462f8db997821742395"><div class="ttname"><a href="remmina__pref_8c.html#a745bbef1d48a7462f8db997821742395">remmina_pref_keymap_groups</a></div><div class="ttdeci">gchar ** remmina_pref_keymap_groups(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l01067">remmina_pref.c:1067</a></div></div>
<div class="ttc" id="remmina__file__editor_8c_html_afad358c6e3a5918416c6eb036157d8e5"><div class="ttname"><a href="remmina__file__editor_8c.html#afad358c6e3a5918416c6eb036157d8e5">remmina_file_editor_create_resolution</a></div><div class="ttdeci">static void remmina_file_editor_create_resolution(RemminaFileEditor *gfe, const RemminaProtocolSetting *setting, GtkWidget *grid, gint row)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file__editor_8c_source.html#l00538">remmina_file_editor.c:538</a></div></div>
<div class="ttc" id="remmina__ssh_8h_html"><div class="ttname"><a href="remmina__ssh_8h.html">remmina_ssh.h</a></div></div>
@@ -101,7 +101,7 @@ $(document).ready(function(){initNavTree('remmina__file__editor_8c_source.html',
<div class="ttc" id="remmina__file__editor_8c_html_af253834273229ac38c6fdfe613626965"><div class="ttname"><a href="remmina__file__editor_8c.html#af253834273229ac38c6fdfe613626965">remmina_file_editor_create_combo</a></div><div class="ttdeci">static GtkWidget * remmina_file_editor_create_combo(RemminaFileEditor *gfe, GtkWidget *grid, gint row, gint col, const gchar *label, const gchar *list, const gchar *value, gchar *setting_name)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file__editor_8c_source.html#l00715">remmina_file_editor.c:715</a></div></div>
<div class="ttc" id="remmina__file_8h_html_abc6126af1d45847bc59afa0aa3216b04a9f6024449a620d679eab2c09ea77877e"><div class="ttname"><a href="remmina__file_8h.html#abc6126af1d45847bc59afa0aa3216b04a9f6024449a620d679eab2c09ea77877e">SSH_AUTH_AUTO_PUBLICKEY</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8h_source.html#l00071">remmina_file.h:71</a></div></div>
<div class="ttc" id="types_8h_html_aee1a3e130e6991978acd907b52204350ab4c68b7df42ebd08e953cc72c5b97583"><div class="ttname"><a href="types_8h.html#aee1a3e130e6991978acd907b52204350ab4c68b7df42ebd08e953cc72c5b97583">REMMINA_PROTOCOL_SETTING_TYPE_INT</a></div><div class="ttdef"><b>Definition:</b> <a href="types_8h_source.html#l00112">types.h:112</a></div></div>
-<div class="ttc" id="remmina__file_8c_html_a3fb992fced83e0f1c4e4e3c8d2206be5"><div class="ttname"><a href="remmina__file_8c.html#a3fb992fced83e0f1c4e4e3c8d2206be5">remmina_file_dup</a></div><div class="ttdeci">RemminaFile * remmina_file_dup(RemminaFile *remminafile)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00854">remmina_file.c:854</a></div></div>
+<div class="ttc" id="remmina__file_8c_html_a3fb992fced83e0f1c4e4e3c8d2206be5"><div class="ttname"><a href="remmina__file_8c.html#a3fb992fced83e0f1c4e4e3c8d2206be5">remmina_file_dup</a></div><div class="ttdeci">RemminaFile * remmina_file_dup(RemminaFile *remminafile)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00863">remmina_file.c:863</a></div></div>
<div class="ttc" id="remmina__public_8c_html_a9ec86f1e9caea5ebc867a90230d6b51a"><div class="ttname"><a href="remmina__public_8c.html#a9ec86f1e9caea5ebc867a90230d6b51a">remmina_public_create_combo_entry</a></div><div class="ttdeci">GtkWidget * remmina_public_create_combo_entry(const gchar *text, const gchar *def, gboolean descending)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__public_8c_source.html#l00063">remmina_public.c:63</a></div></div>
<div class="ttc" id="remmina__file__editor_8c_html_a73b8581fd1fd77532b748d91a2951f25"><div class="ttname"><a href="remmina__file__editor_8c.html#a73b8581fd1fd77532b748d91a2951f25">remmina_file_editor_on_connect</a></div><div class="ttdeci">static void remmina_file_editor_on_connect(GtkWidget *button, RemminaFileEditor *gfe)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file__editor_8c_source.html#l01741">remmina_file_editor.c:1741</a></div></div>
<div class="ttc" id="types_8h_html_aee1a3e130e6991978acd907b52204350a52a80f3f9b84e9e0d0bf3335cfd7527f"><div class="ttname"><a href="types_8h.html#aee1a3e130e6991978acd907b52204350a52a80f3f9b84e9e0d0bf3335cfd7527f">REMMINA_PROTOCOL_SETTING_TYPE_CHECK</a></div><div class="ttdef"><b>Definition:</b> <a href="types_8h_source.html#l00109">types.h:109</a></div></div>
@@ -114,7 +114,7 @@ $(document).ready(function(){initNavTree('remmina__file__editor_8c_source.html',
<div class="ttc" id="remmina__file__manager_8h_html"><div class="ttname"><a href="remmina__file__manager_8h.html">remmina_file_manager.h</a></div></div>
<div class="ttc" id="remmina__file__editor_8c_html_ac47032c150cbdb7bf691059b4e3eb9d0"><div class="ttname"><a href="remmina__file__editor_8c.html#ac47032c150cbdb7bf691059b4e3eb9d0">remmina_file_editor_create_int</a></div><div class="ttdeci">static GtkWidget * remmina_file_editor_create_int(RemminaFileEditor *gfe, GtkWidget *grid, gint row, gint col, const gchar *label, const gint value, gint left, gint right, gchar *setting_name)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file__editor_8c_source.html#l00829">remmina_file_editor.c:829</a></div></div>
<div class="ttc" id="remmina__file__editor_8c_html_a8a7f3ce69255bf413ef8fa841af3d019"><div class="ttname"><a href="remmina__file__editor_8c.html#a8a7f3ce69255bf413ef8fa841af3d019">remmina_file_editor_ssh_tunnel_enabled_check_on_toggled</a></div><div class="ttdeci">static void remmina_file_editor_ssh_tunnel_enabled_check_on_toggled(GtkToggleButton *togglebutton, RemminaFileEditor *gfe, RemminaProtocolSSHSetting ssh_setting)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file__editor_8c_source.html#l00367">remmina_file_editor.c:367</a></div></div>
-<div class="ttc" id="remmina__file_8c_html_ad1e4f3a0f64cd98e301044b6c38a1f1d"><div class="ttname"><a href="remmina__file_8c.html#ad1e4f3a0f64cd98e301044b6c38a1f1d">remmina_file_get_filename</a></div><div class="ttdeci">const gchar * remmina_file_get_filename(RemminaFile *remminafile)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00206">remmina_file.c:206</a></div></div>
+<div class="ttc" id="remmina__file_8c_html_ad1e4f3a0f64cd98e301044b6c38a1f1d"><div class="ttname"><a href="remmina__file_8c.html#ad1e4f3a0f64cd98e301044b6c38a1f1d">remmina_file_get_filename</a></div><div class="ttdeci">const gchar * remmina_file_get_filename(RemminaFile *remminafile)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00210">remmina_file.c:210</a></div></div>
<div class="ttc" id="remmina__file__editor_8c_html_a9266544ca3a532b9a02d985c18113e80"><div class="ttname"><a href="remmina__file__editor_8c.html#a9266544ca3a532b9a02d985c18113e80">remmina_file_editor_create_double</a></div><div class="ttdeci">static GtkWidget * remmina_file_editor_create_double(RemminaFileEditor *gfe, GtkWidget *grid, gint row, gint col, const gchar *label, gdouble value, gint left, gint right, gchar *setting_name)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file__editor_8c_source.html#l00871">remmina_file_editor.c:871</a></div></div>
<div class="ttc" id="remmina__file__editor_8c_html_ac9b7c0ba5ece064548bcaf72d1b0425a"><div class="ttname"><a href="remmina__file__editor_8c.html#ac9b7c0ba5ece064548bcaf72d1b0425a">remmina_file_editor_create_select</a></div><div class="ttdeci">static GtkWidget * remmina_file_editor_create_select(RemminaFileEditor *gfe, GtkWidget *grid, gint row, gint col, const gchar *label, const gpointer *list, const gchar *value, gchar *setting_name)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file__editor_8c_source.html#l00693">remmina_file_editor.c:693</a></div></div>
<div class="ttc" id="types_8h_html_a112d7cc6c755209cabb68cf2a62ad515"><div class="ttname"><a href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a></div><div class="ttdeci">typedefG_BEGIN_DECLS struct _RemminaFile RemminaFile</div><div class="ttdef"><b>Definition:</b> <a href="types_8h_source.html#l00044">types.h:44</a></div></div>
@@ -166,9 +166,9 @@ $(document).ready(function(){initNavTree('remmina__file__editor_8c_source.html',
<div class="ttc" id="types_8h_html_a373ddef8221457d86c64830c26d3f78aa60de6896fa451ca072d23fab21dbfeef"><div class="ttname"><a href="types_8h.html#a373ddef8221457d86c64830c26d3f78aa60de6896fa451ca072d23fab21dbfeef">RES_USE_INITIAL_WINDOW_SIZE</a></div><div class="ttdef"><b>Definition:</b> <a href="types_8h_source.html#l00151">types.h:151</a></div></div>
<div class="ttc" id="types_8h_html_a64c62354cc2b7baa50e1d73dcd3df9c7ab0449f571d03e46b99b301792a5d8e1a"><div class="ttname"><a href="types_8h.html#a64c62354cc2b7baa50e1d73dcd3df9c7ab0449f571d03e46b99b301792a5d8e1a">REMMINA_PROTOCOL_SSH_SETTING_TUNNEL</a></div><div class="ttdef"><b>Definition:</b> <a href="types_8h_source.html#l00129">types.h:129</a></div></div>
<div class="ttc" id="types_8h_html_a64c62354cc2b7baa50e1d73dcd3df9c7"><div class="ttname"><a href="types_8h.html#a64c62354cc2b7baa50e1d73dcd3df9c7">RemminaProtocolSSHSetting</a></div><div class="ttdeci">RemminaProtocolSSHSetting</div><div class="ttdef"><b>Definition:</b> <a href="types_8h_source.html#l00127">types.h:127</a></div></div>
-<div class="ttc" id="remmina__file_8c_html_af153b0d289ac93f6ecdaa15d5f3b9b8c"><div class="ttname"><a href="remmina__file_8c.html#af153b0d289ac93f6ecdaa15d5f3b9b8c">remmina_file_set_int</a></div><div class="ttdeci">void remmina_file_set_int(RemminaFile *remminafile, const gchar *setting, gint value)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00576">remmina_file.c:576</a></div></div>
+<div class="ttc" id="remmina__file_8c_html_af153b0d289ac93f6ecdaa15d5f3b9b8c"><div class="ttname"><a href="remmina__file_8c.html#af153b0d289ac93f6ecdaa15d5f3b9b8c">remmina_file_set_int</a></div><div class="ttdeci">void remmina_file_set_int(RemminaFile *remminafile, const gchar *setting, gint value)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00585">remmina_file.c:585</a></div></div>
<div class="ttc" id="types_8h_html_aee1a3e130e6991978acd907b52204350a04da01eead7904a55d1c813950609b2d"><div class="ttname"><a href="types_8h.html#aee1a3e130e6991978acd907b52204350a04da01eead7904a55d1c813950609b2d">REMMINA_PROTOCOL_SETTING_TYPE_SELECT</a></div><div class="ttdef"><b>Definition:</b> <a href="types_8h_source.html#l00107">types.h:107</a></div></div>
-<div class="ttc" id="remmina__file_8c_html_a55f66f2bb81bf427d6837e1adb7fe1d4"><div class="ttname"><a href="remmina__file_8c.html#a55f66f2bb81bf427d6837e1adb7fe1d4">remmina_file_delete</a></div><div class="ttdeci">void remmina_file_delete(const gchar *filename)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00900">remmina_file.c:900</a></div></div>
+<div class="ttc" id="remmina__file_8c_html_a55f66f2bb81bf427d6837e1adb7fe1d4"><div class="ttname"><a href="remmina__file_8c.html#a55f66f2bb81bf427d6837e1adb7fe1d4">remmina_file_delete</a></div><div class="ttdeci">void remmina_file_delete(const gchar *filename)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00909">remmina_file.c:909</a></div></div>
<div class="ttc" id="remmina__file__editor_8c_html_a287b79ac0e199393f391655ab5cbb55b"><div class="ttname"><a href="remmina__file__editor_8c.html#a287b79ac0e199393f391655ab5cbb55b">remmina_file_editor_entry_on_changed</a></div><div class="ttdeci">static void remmina_file_editor_entry_on_changed(GtkEditable *editable, RemminaFileEditor *gfe)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file__editor_8c_source.html#l01871">remmina_file_editor.c:1871</a></div></div>
<div class="ttc" id="remmina__file__editor_8c_html_a8cec1e80676c945f10bf39aca671d0a0"><div class="ttname"><a href="remmina__file__editor_8c.html#a8cec1e80676c945f10bf39aca671d0a0">remmina_file_editor_create_text2</a></div><div class="ttdeci">static GtkWidget * remmina_file_editor_create_text2(RemminaFileEditor *gfe, GtkWidget *grid, gint row, gint col, const gchar *label, const gchar *value, gint left, gint right, gchar *setting_name)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file__editor_8c_source.html#l00617">remmina_file_editor.c:617</a></div></div>
<div class="ttc" id="remmina__file_8h_html_abc6126af1d45847bc59afa0aa3216b04aeba5f4ff7657d7b15519556793ee8930"><div class="ttname"><a href="remmina__file_8h.html#abc6126af1d45847bc59afa0aa3216b04aeba5f4ff7657d7b15519556793ee8930">SSH_AUTH_PUBLICKEY</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8h_source.html#l00069">remmina_file.h:69</a></div></div>
@@ -202,7 +202,7 @@ $(document).ready(function(){initNavTree('remmina__file__editor_8c_source.html',
<div class="ttc" id="rcw_8c_html_a29701ae152ba15f6d8921f395174d2df"><div class="ttname"><a href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a></div><div class="ttdeci">RemminaPref remmina_pref</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l00075">rcw.c:75</a></div></div>
<div class="ttc" id="remmina__file__editor_8c_html_a3866832d550ceac91d608900df4c8056"><div class="ttname"><a href="remmina__file__editor_8c.html#a3866832d550ceac91d608900df4c8056">remmina_file_editor_file_save</a></div><div class="ttdeci">void remmina_file_editor_file_save(RemminaFileEditor *gfe)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file__editor_8c_source.html#l01888">remmina_file_editor.c:1888</a></div></div>
<div class="ttc" id="struct___remmina_file_editor_html"><div class="ttname"><a href="struct___remmina_file_editor.html">_RemminaFileEditor</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__file__editor_8h_source.html#l00056">remmina_file_editor.h:56</a></div></div>
-<div class="ttc" id="remmina__file_8c_html_a4884356c195dcfb4ceacf641a1e74e66"><div class="ttname"><a href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a></div><div class="ttdeci">gint remmina_file_get_int(RemminaFile *remminafile, const gchar *setting, gint default_value)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00594">remmina_file.c:594</a></div></div>
+<div class="ttc" id="remmina__file_8c_html_a4884356c195dcfb4ceacf641a1e74e66"><div class="ttname"><a href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a></div><div class="ttdeci">gint remmina_file_get_int(RemminaFile *remminafile, const gchar *setting, gint default_value)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00603">remmina_file.c:603</a></div></div>
<div class="ttc" id="remmina__file__editor_8c_html_aa4e8657ca722e4cce3f3c42c0cfec51e"><div class="ttname"><a href="remmina__file__editor_8c.html#aa4e8657ca722e4cce3f3c42c0cfec51e">remmina_file_editor_new</a></div><div class="ttdeci">GtkWidget * remmina_file_editor_new(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file__editor_8c_source.html#l02032">remmina_file_editor.c:2032</a></div></div>
<div class="ttc" id="remmina__file__editor_8c_html_a880e8e6aee571b91eeb7f5d2f60e210b"><div class="ttname"><a href="remmina__file__editor_8c.html#a880e8e6aee571b91eeb7f5d2f60e210b">remmina_file_editor_on_realize</a></div><div class="ttdeci">static void remmina_file_editor_on_realize(GtkWidget *widget, gpointer user_data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file__editor_8c_source.html#l00268">remmina_file_editor.c:268</a></div></div>
<div class="ttc" id="remmina__file__editor_8c_html_a112a0fd5bf7d5693b9cb717c850637cb"><div class="ttname"><a href="remmina__file__editor_8c.html#a112a0fd5bf7d5693b9cb717c850637cb">remmina_file_editor_button_on_toggled</a></div><div class="ttdeci">static void remmina_file_editor_button_on_toggled(GtkToggleButton *togglebutton, GtkWidget *widget)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file__editor_8c_source.html#l00293">remmina_file_editor.c:293</a></div></div>
@@ -218,14 +218,14 @@ $(document).ready(function(){initNavTree('remmina__file__editor_8c_source.html',
<div class="ttc" id="remmina__file__manager_8c_html_a536edeef371d907ab3936f4d65c3003d"><div class="ttname"><a href="remmina__file__manager_8c.html#a536edeef371d907ab3936f4d65c3003d">remmina_file_manager_get_groups</a></div><div class="ttdeci">gchar * remmina_file_manager_get_groups(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file__manager_8c_source.html#l00209">remmina_file_manager.c:209</a></div></div>
<div class="ttc" id="types_8h_html_aee1a3e130e6991978acd907b52204350a31ee66fffaa245ae411aba0c296ad9da"><div class="ttname"><a href="types_8h.html#aee1a3e130e6991978acd907b52204350a31ee66fffaa245ae411aba0c296ad9da">REMMINA_PROTOCOL_SETTING_TYPE_FILE</a></div><div class="ttdef"><b>Definition:</b> <a href="types_8h_source.html#l00110">types.h:110</a></div></div>
<div class="ttc" id="remmina__file__editor_8c_html_a072de27e64368581e8507d3b795bfbf4"><div class="ttname"><a href="remmina__file__editor_8c.html#a072de27e64368581e8507d3b795bfbf4">remmina_file_editor_create_text</a></div><div class="ttdeci">static GtkWidget * remmina_file_editor_create_text(RemminaFileEditor *gfe, GtkWidget *grid, gint row, gint col, const gchar *label, const gchar *value, gchar *setting_name)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file__editor_8c_source.html#l00651">remmina_file_editor.c:651</a></div></div>
-<div class="ttc" id="remmina__file_8c_html_a85ca1ca2d0bf9ef29e490c6f4527a954"><div class="ttname"><a href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a></div><div class="ttdeci">void remmina_file_set_string(RemminaFile *remminafile, const gchar *setting, const gchar *value)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00463">remmina_file.c:463</a></div></div>
+<div class="ttc" id="remmina__file_8c_html_a85ca1ca2d0bf9ef29e490c6f4527a954"><div class="ttname"><a href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a></div><div class="ttdeci">void remmina_file_set_string(RemminaFile *remminafile, const gchar *setting, const gchar *value)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00469">remmina_file.c:469</a></div></div>
<div class="ttc" id="remmina__file__editor_8c_html_a4c16a6793828893598bc0a158bb13cbb"><div class="ttname"><a href="remmina__file__editor_8c.html#a4c16a6793828893598bc0a158bb13cbb">remmina_file_editor_save_behavior_tab</a></div><div class="ttdeci">static void remmina_file_editor_save_behavior_tab(RemminaFileEditor *gfe)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file__editor_8c_source.html#l01377">remmina_file_editor.c:1377</a></div></div>
<div class="ttc" id="remmina__file__editor_8c_html_a9bcaeec3ba26d31c6333f35fe1381a8c"><div class="ttname"><a href="remmina__file__editor_8c.html#a9bcaeec3ba26d31c6333f35fe1381a8c">remmina_file_editor_create_behavior_tab</a></div><div class="ttdeci">static void remmina_file_editor_create_behavior_tab(RemminaFileEditor *gfe)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file__editor_8c_source.html#l01073">remmina_file_editor.c:1073</a></div></div>
-<div class="ttc" id="remmina__file_8c_html_a8c893a5deec9bc446bd89cc9973416c7"><div class="ttname"><a href="remmina__file_8c.html#a8c893a5deec9bc446bd89cc9973416c7">remmina_file_save</a></div><div class="ttdeci">void remmina_file_save(RemminaFile *remminafile)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00719">remmina_file.c:719</a></div></div>
+<div class="ttc" id="remmina__file_8c_html_a8c893a5deec9bc446bd89cc9973416c7"><div class="ttname"><a href="remmina__file_8c.html#a8c893a5deec9bc446bd89cc9973416c7">remmina_file_save</a></div><div class="ttdeci">void remmina_file_save(RemminaFile *remminafile)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00728">remmina_file.c:728</a></div></div>
<div class="ttc" id="remmina__file__editor_8c_html_a51b9fe336d9068ffc488ef55adc9eac4"><div class="ttname"><a href="remmina__file__editor_8c.html#a51b9fe336d9068ffc488ef55adc9eac4">remmina_file_editor_browse_resolution</a></div><div class="ttdeci">static void remmina_file_editor_browse_resolution(GtkWidget *button, RemminaFileEditor *gfe)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file__editor_8c_source.html#l00522">remmina_file_editor.c:522</a></div></div>
<div class="ttc" id="remmina__file__editor_8c_html_a8c1924fd32be943136d147e8dedb3eca"><div class="ttname"><a href="remmina__file__editor_8c.html#a8c1924fd32be943136d147e8dedb3eca">remmina_file_editor_validate_settings</a></div><div class="ttdeci">static gboolean remmina_file_editor_validate_settings(RemminaFileEditor *gfe, gchar *setting_name_to_validate, gconstpointer value, GError **err)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file__editor_8c_source.html#l01452">remmina_file_editor.c:1452</a></div></div>
<div class="ttc" id="remmina__file__editor_8c_html_a5ea3f796c3a46aeb01b2f13f4a3d40a9"><div class="ttname"><a href="remmina__file__editor_8c.html#a5ea3f796c3a46aeb01b2f13f4a3d40a9">remmina_file_editor_ssh_tunnel_server_custom_radio_on_toggled</a></div><div class="ttdeci">static void remmina_file_editor_ssh_tunnel_server_custom_radio_on_toggled(GtkToggleButton *togglebutton, RemminaFileEditor *gfe)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file__editor_8c_source.html#l00357">remmina_file_editor.c:357</a></div></div>
-<div class="ttc" id="remmina__file_8c_html_ac1685edf35a793a396ce039d7eec5343"><div class="ttname"><a href="remmina__file_8c.html#ac1685edf35a793a396ce039d7eec5343">remmina_file_copy</a></div><div class="ttdeci">RemminaFile * remmina_file_copy(const gchar *filename)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00213">remmina_file.c:213</a></div></div>
+<div class="ttc" id="remmina__file_8c_html_ac1685edf35a793a396ce039d7eec5343"><div class="ttname"><a href="remmina__file_8c.html#ac1685edf35a793a396ce039d7eec5343">remmina_file_copy</a></div><div class="ttdeci">RemminaFile * remmina_file_copy(const gchar *filename)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00217">remmina_file.c:217</a></div></div>
<div class="ttc" id="types_8h_html_a64c62354cc2b7baa50e1d73dcd3df9c7a2f71ac2987eeec94430308f6f36840cd"><div class="ttname"><a href="types_8h.html#a64c62354cc2b7baa50e1d73dcd3df9c7a2f71ac2987eeec94430308f6f36840cd">REMMINA_PROTOCOL_SSH_SETTING_REVERSE_TUNNEL</a></div><div class="ttdef"><b>Definition:</b> <a href="types_8h_source.html#l00131">types.h:131</a></div></div>
<div class="ttc" id="remmina__file__manager_8c_html_af7b58659604660eb0cb40b0e0f8348ab"><div class="ttname"><a href="remmina__file__manager_8c.html#af7b58659604660eb0cb40b0e0f8348ab">remmina_file_manager_load_file</a></div><div class="ttdeci">RemminaFile * remmina_file_manager_load_file(const gchar *filename)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file__manager_8c_source.html#l00355">remmina_file_manager.c:355</a></div></div>
<div class="ttc" id="remmina__file__editor_8c_html_afc37e2e9dbe8f0c8bcf1a76d0c54ea1b"><div class="ttname"><a href="remmina__file__editor_8c.html#afc37e2e9dbe8f0c8bcf1a76d0c54ea1b">remmina_file_editor_iterate_protocol</a></div><div class="ttdeci">static gboolean remmina_file_editor_iterate_protocol(gchar *protocol, RemminaPlugin *plugin, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file__editor_8c_source.html#l01839">remmina_file_editor.c:1839</a></div></div>
diff --git a/public/remmina__file__manager_8c_source.html b/public/remmina__file__manager_8c_source.html
index 2b6cb8d98..808fbc5fb 100644
--- a/public/remmina__file__manager_8c_source.html
+++ b/public/remmina__file__manager_8c_source.html
@@ -87,10 +87,10 @@ $(document).ready(function(){initNavTree('remmina__file__manager_8c_source.html'
</div><!--header-->
<div class="contents">
<a href="remmina__file__manager_8c.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * Remmina - The GTK+ Remote Desktop Client</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> * Copyright (C) 2009-2010 Vic Lee</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> * Copyright (C) 2014-2015 Antenore Gatta, Fabio Castelli, Giovanni Panozzo</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * Copyright (C) 2016-2022 Antenore Gatta, Giovanni Panozzo</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * (at your option) any later version.</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> * along with this program; if not, write to the Free Software</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> * Foundation, Inc., 51 Franklin Street, Fifth Floor,</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> * Boston, MA 02110-1301, USA.</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="comment"> * In addition, as a special exception, the copyright holders give</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment"> * permission to link the code of portions of this program with the</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"> * OpenSSL library under certain conditions as described in each</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> * individual source file, and distribute linked combinations</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> * including the two.</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * You must obey the GNU General Public License in all respects</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> * for all of the code used other than OpenSSL. * If you modify</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment"> * file(s) with this exception, you may extend this exception to your</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="comment"> * version of the file(s), but you are not obligated to do so. * If you</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="comment"> * do not wish to do so, delete this exception statement from your</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="comment"> * version. * If you delete this exception statement from all source</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="comment"> * files in the program, then also delete it here.</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="preprocessor">#include &quot;config.h&quot;</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="preprocessor">#include &lt;errno.h&gt;</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="preprocessor">#include &lt;gtk/gtk.h&gt;</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="preprocessor">#include &lt;string.h&gt;</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__log_8h.html">remmina_log.h</a>&quot;</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__public_8h.html">remmina_public.h</a>&quot;</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__pref_8h.html">remmina_pref.h</a>&quot;</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__string__array_8h.html">remmina_string_array.h</a>&quot;</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__plugin__manager_8h.html">remmina_plugin_manager.h</a>&quot;</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__file__manager_8h.html">remmina_file_manager.h</a>&quot;</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__trace__calls_8h.html">remmina/remmina_trace_calls.h</a>&quot;</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="remmina__file__manager_8c.html#af83917dac9f2646670733215ba7a3482"> 51</a></span>&#160;<span class="keyword">static</span> gchar *<a class="code" href="remmina__file__manager_8c.html#af83917dac9f2646670733215ba7a3482">remminadir</a>;</div><div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="remmina__file__manager_8c.html#ace1098aad45256ac0b0155cb042472e9"> 52</a></span>&#160;<span class="keyword">static</span> gchar *<a class="code" href="remmina__file__manager_8c.html#ace1098aad45256ac0b0155cb042472e9">cachedir</a>;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;</div><div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="remmina__file__manager_8h.html#aa65bc30beb59d607ba430d966e7e27f5"> 59</a></span>&#160;gchar *<a class="code" href="remmina__file__manager_8c.html#aa65bc30beb59d607ba430d966e7e27f5">remmina_file_get_datadir</a>(<span class="keywordtype">void</span>)</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;{</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keyword">const</span> gchar *dir = <span class="stringliteral">&quot;.remmina&quot;</span>;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordtype">int</span> i;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="comment">/* From preferences, datadir_path */</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <a class="code" href="remmina__file__manager_8c.html#af83917dac9f2646670733215ba7a3482">remminadir</a> = <a class="code" href="remmina__pref_8c.html#a6bcbf4cc3a58ed4ee9f087b4270d8fd6">remmina_pref_get_value</a>(<span class="stringliteral">&quot;datadir_path&quot;</span>);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="remmina__file__manager_8c.html#af83917dac9f2646670733215ba7a3482">remminadir</a> != NULL &amp;&amp; strlen(<a class="code" href="remmina__file__manager_8c.html#af83917dac9f2646670733215ba7a3482">remminadir</a>) &gt; 0)</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keywordflow">if</span> (g_file_test(<a class="code" href="remmina__file__manager_8c.html#af83917dac9f2646670733215ba7a3482">remminadir</a>, G_FILE_TEST_IS_DIR))</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__file__manager_8c.html#af83917dac9f2646670733215ba7a3482">remminadir</a>;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; g_free(<a class="code" href="remmina__file__manager_8c.html#af83917dac9f2646670733215ba7a3482">remminadir</a>), <a class="code" href="remmina__file__manager_8c.html#af83917dac9f2646670733215ba7a3482">remminadir</a> = NULL;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="comment">/* Legacy ~/.remmina */</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <a class="code" href="remmina__file__manager_8c.html#af83917dac9f2646670733215ba7a3482">remminadir</a> = g_build_path(<span class="stringliteral">&quot;/&quot;</span>, g_get_home_dir(), dir, NULL);</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keywordflow">if</span> (g_file_test(<a class="code" href="remmina__file__manager_8c.html#af83917dac9f2646670733215ba7a3482">remminadir</a>, G_FILE_TEST_IS_DIR))</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__file__manager_8c.html#af83917dac9f2646670733215ba7a3482">remminadir</a>;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; g_free(<a class="code" href="remmina__file__manager_8c.html#af83917dac9f2646670733215ba7a3482">remminadir</a>), <a class="code" href="remmina__file__manager_8c.html#af83917dac9f2646670733215ba7a3482">remminadir</a> = NULL;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="comment">/* ~/.local/share/remmina */</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <a class="code" href="remmina__file__manager_8c.html#af83917dac9f2646670733215ba7a3482">remminadir</a> = g_build_path(<span class="stringliteral">&quot;/&quot;</span>, g_get_user_data_dir(), <span class="stringliteral">&quot;remmina&quot;</span>, NULL);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordflow">if</span> (g_file_test(<a class="code" href="remmina__file__manager_8c.html#af83917dac9f2646670733215ba7a3482">remminadir</a>, G_FILE_TEST_IS_DIR))</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__file__manager_8c.html#af83917dac9f2646670733215ba7a3482">remminadir</a>;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; g_free(<a class="code" href="remmina__file__manager_8c.html#af83917dac9f2646670733215ba7a3482">remminadir</a>), <a class="code" href="remmina__file__manager_8c.html#af83917dac9f2646670733215ba7a3482">remminadir</a> = NULL;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="comment">/* /usr/local/share/remmina */</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keyword">const</span> gchar *<span class="keyword">const</span> *dirs = g_get_system_data_dirs();</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; g_free(<a class="code" href="remmina__file__manager_8c.html#af83917dac9f2646670733215ba7a3482">remminadir</a>), <a class="code" href="remmina__file__manager_8c.html#af83917dac9f2646670733215ba7a3482">remminadir</a> = NULL;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keywordflow">for</span> (i = 0; dirs[i] != NULL; ++i) {</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <a class="code" href="remmina__file__manager_8c.html#af83917dac9f2646670733215ba7a3482">remminadir</a> = g_build_path(<span class="stringliteral">&quot;/&quot;</span>, dirs[i], <span class="stringliteral">&quot;remmina&quot;</span>, NULL);</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keywordflow">if</span> (g_file_test(<a class="code" href="remmina__file__manager_8c.html#af83917dac9f2646670733215ba7a3482">remminadir</a>, G_FILE_TEST_IS_DIR))</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__file__manager_8c.html#af83917dac9f2646670733215ba7a3482">remminadir</a>;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; g_free(<a class="code" href="remmina__file__manager_8c.html#af83917dac9f2646670733215ba7a3482">remminadir</a>), <a class="code" href="remmina__file__manager_8c.html#af83917dac9f2646670733215ba7a3482">remminadir</a> = NULL;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; }</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="comment">/* The last case we use the home ~/.local/share/remmina */</span></div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <a class="code" href="remmina__file__manager_8c.html#af83917dac9f2646670733215ba7a3482">remminadir</a> = g_build_path(<span class="stringliteral">&quot;/&quot;</span>, g_get_user_data_dir(), <span class="stringliteral">&quot;remmina&quot;</span>, NULL);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__file__manager_8c.html#af83917dac9f2646670733215ba7a3482">remminadir</a>;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;}</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;</div><div class="line"><a name="l00097"></a><span class="lineno"><a class="line" href="remmina__file__manager_8c.html#a4d6280ce5d9e70ceb43dd24639d843d3"> 97</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="remmina__file__manager_8c.html#a4d6280ce5d9e70ceb43dd24639d843d3">remmina_file_manager_do_copy</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *src_path, <span class="keyword">const</span> <span class="keywordtype">char</span> *dst_path)</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;{</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; GFile *src = g_file_new_for_path(src_path), *dst = g_file_new_for_path(dst_path);</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="comment">/* We don’t overwrite the target if it exists */</span></div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keyword">const</span> gboolean ok = g_file_copy(src, dst, G_FILE_COPY_NONE, NULL, NULL, NULL, NULL);</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; g_object_unref(dst);</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; g_object_unref(src);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keywordflow">return</span> ok;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;}</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;</div><div class="line"><a name="l00116"></a><span class="lineno"><a class="line" href="remmina__file__manager_8h.html#afa2b1889dced4289b0f7d7edffc82e72"> 116</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__file__manager_8c.html#afa2b1889dced4289b0f7d7edffc82e72">remmina_file_manager_init</a>(<span class="keywordtype">void</span>)</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;{</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; GDir *dir;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keyword">const</span> gchar *legacy = <span class="stringliteral">&quot;.remmina&quot;</span>;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="keyword">const</span> gchar *filename;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keywordtype">int</span> i;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="comment">/* Get and create the XDG_DATA_HOME directory */</span></div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <a class="code" href="remmina__file__manager_8c.html#af83917dac9f2646670733215ba7a3482">remminadir</a> = <a class="code" href="remmina__pref_8c.html#a6bcbf4cc3a58ed4ee9f087b4270d8fd6">remmina_pref_get_value</a>(<span class="stringliteral">&quot;datadir_path&quot;</span>);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keywordflow">if</span> (g_mkdir_with_parents(<a class="code" href="remmina__file__manager_8c.html#af83917dac9f2646670733215ba7a3482">remminadir</a>, 0750) == 0) {</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Initialized the \&quot;%s\&quot; data folder&quot;</span>, <a class="code" href="remmina__file__manager_8c.html#af83917dac9f2646670733215ba7a3482">remminadir</a>);</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; g_free(<a class="code" href="remmina__file__manager_8c.html#af83917dac9f2646670733215ba7a3482">remminadir</a>), <a class="code" href="remmina__file__manager_8c.html#af83917dac9f2646670733215ba7a3482">remminadir</a> = NULL;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; g_free(<a class="code" href="remmina__file__manager_8c.html#af83917dac9f2646670733215ba7a3482">remminadir</a>), <a class="code" href="remmina__file__manager_8c.html#af83917dac9f2646670733215ba7a3482">remminadir</a> = NULL;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="comment">/* Get and create the XDG_DATA_HOME directory */</span></div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <a class="code" href="remmina__file__manager_8c.html#af83917dac9f2646670733215ba7a3482">remminadir</a> = g_build_path(<span class="stringliteral">&quot;/&quot;</span>, g_get_user_data_dir(), <span class="stringliteral">&quot;remmina&quot;</span>, NULL);</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="keywordflow">if</span> (g_mkdir_with_parents(<a class="code" href="remmina__file__manager_8c.html#af83917dac9f2646670733215ba7a3482">remminadir</a>, 0750) == 0)</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Initialized the \&quot;%s\&quot; data folder&quot;</span>, <a class="code" href="remmina__file__manager_8c.html#af83917dac9f2646670733215ba7a3482">remminadir</a>);</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; REMMINA_CRITICAL(<span class="stringliteral">&quot;Cannot create the \&quot;%s\&quot; data folder&quot;</span>, <a class="code" href="remmina__file__manager_8c.html#af83917dac9f2646670733215ba7a3482">remminadir</a>);</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; g_free(<a class="code" href="remmina__file__manager_8c.html#af83917dac9f2646670733215ba7a3482">remminadir</a>), <a class="code" href="remmina__file__manager_8c.html#af83917dac9f2646670733215ba7a3482">remminadir</a> = NULL;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; }</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="comment">/* Create the XDG_CACHE_HOME directory */</span></div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <a class="code" href="remmina__file__manager_8c.html#ace1098aad45256ac0b0155cb042472e9">cachedir</a> = g_build_path(<span class="stringliteral">&quot;/&quot;</span>, g_get_user_cache_dir(), <span class="stringliteral">&quot;remmina&quot;</span>, NULL);</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; g_mkdir_with_parents(<a class="code" href="remmina__file__manager_8c.html#ace1098aad45256ac0b0155cb042472e9">cachedir</a>, 0750);</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; g_free(<a class="code" href="remmina__file__manager_8c.html#ace1098aad45256ac0b0155cb042472e9">cachedir</a>), <a class="code" href="remmina__file__manager_8c.html#ace1098aad45256ac0b0155cb042472e9">cachedir</a> = NULL;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="comment">/* Empty legacy ~/.remmina */</span></div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <a class="code" href="remmina__file__manager_8c.html#af83917dac9f2646670733215ba7a3482">remminadir</a> = g_build_path(<span class="stringliteral">&quot;/&quot;</span>, g_get_home_dir(), legacy, NULL);</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keywordflow">if</span> (g_file_test(<a class="code" href="remmina__file__manager_8c.html#af83917dac9f2646670733215ba7a3482">remminadir</a>, G_FILE_TEST_IS_DIR)) {</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; dir = g_dir_open(<a class="code" href="remmina__file__manager_8c.html#af83917dac9f2646670733215ba7a3482">remminadir</a>, 0, NULL);</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="keywordflow">while</span> ((filename = g_dir_read_name(dir)) != NULL) {</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <a class="code" href="remmina__file__manager_8c.html#a4d6280ce5d9e70ceb43dd24639d843d3">remmina_file_manager_do_copy</a>(</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; g_build_path(<span class="stringliteral">&quot;/&quot;</span>, <a class="code" href="remmina__file__manager_8c.html#af83917dac9f2646670733215ba7a3482">remminadir</a>, filename, NULL),</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; g_build_path(<span class="stringliteral">&quot;/&quot;</span>, g_get_user_data_dir(),</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="stringliteral">&quot;remmina&quot;</span>, filename, NULL));</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; }</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; }</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160;</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="comment">/* XDG_DATA_DIRS, i.e. /usr/local/share/remmina */</span></div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="keyword">const</span> gchar *<span class="keyword">const</span> *dirs = g_get_system_data_dirs();</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160;</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; g_free(<a class="code" href="remmina__file__manager_8c.html#af83917dac9f2646670733215ba7a3482">remminadir</a>), <a class="code" href="remmina__file__manager_8c.html#af83917dac9f2646670733215ba7a3482">remminadir</a> = NULL;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="keywordflow">for</span> (i = 0; dirs[i] != NULL; ++i) {</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <a class="code" href="remmina__file__manager_8c.html#af83917dac9f2646670733215ba7a3482">remminadir</a> = g_build_path(<span class="stringliteral">&quot;/&quot;</span>, dirs[i], <span class="stringliteral">&quot;remmina&quot;</span>, NULL);</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <span class="keywordflow">if</span> (g_file_test(<a class="code" href="remmina__file__manager_8c.html#af83917dac9f2646670733215ba7a3482">remminadir</a>, G_FILE_TEST_IS_DIR)) {</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; dir = g_dir_open(<a class="code" href="remmina__file__manager_8c.html#af83917dac9f2646670733215ba7a3482">remminadir</a>, 0, NULL);</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <span class="keywordflow">while</span> ((filename = g_dir_read_name(dir)) != NULL) {</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <a class="code" href="remmina__file__manager_8c.html#a4d6280ce5d9e70ceb43dd24639d843d3">remmina_file_manager_do_copy</a>(</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; g_build_path(<span class="stringliteral">&quot;/&quot;</span>, <a class="code" href="remmina__file__manager_8c.html#af83917dac9f2646670733215ba7a3482">remminadir</a>, filename, NULL),</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; g_build_path(<span class="stringliteral">&quot;/&quot;</span>, g_get_user_data_dir(),</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <span class="stringliteral">&quot;remmina&quot;</span>, filename, NULL));</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; }</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; }</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; g_free(<a class="code" href="remmina__file__manager_8c.html#af83917dac9f2646670733215ba7a3482">remminadir</a>), <a class="code" href="remmina__file__manager_8c.html#af83917dac9f2646670733215ba7a3482">remminadir</a> = NULL;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; }</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <span class="comment">/* At last we make sure we use XDG_USER_DATA */</span></div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="remmina__file__manager_8c.html#af83917dac9f2646670733215ba7a3482">remminadir</a> != NULL)</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; g_free(<a class="code" href="remmina__file__manager_8c.html#af83917dac9f2646670733215ba7a3482">remminadir</a>), <a class="code" href="remmina__file__manager_8c.html#af83917dac9f2646670733215ba7a3482">remminadir</a> = NULL;</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160;}</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160;</div><div class="line"><a name="l00177"></a><span class="lineno"><a class="line" href="remmina__file__manager_8h.html#a55a717aafc046713380bd2c55f29165a"> 177</a></span>&#160;gint <a class="code" href="remmina__file__manager_8c.html#a55a717aafc046713380bd2c55f29165a">remmina_file_manager_iterate</a>(GFunc func, gpointer user_data)</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;{</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; gchar filename[MAX_PATH_LEN];</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; GDir *dir;</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <span class="keyword">const</span> gchar *name;</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile;</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; gint items_count = 0;</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; gchar *remmina_data_dir;</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160;</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; remmina_data_dir = <a class="code" href="remmina__file__manager_8c.html#aa65bc30beb59d607ba430d966e7e27f5">remmina_file_get_datadir</a>();</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; dir = g_dir_open(remmina_data_dir, 0, NULL);</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160;</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; <span class="keywordflow">if</span> (dir) {</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <span class="keywordflow">while</span> ((name = g_dir_read_name(dir)) != NULL) {</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <span class="keywordflow">if</span> (!g_str_has_suffix(name, <span class="stringliteral">&quot;.remmina&quot;</span>))</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; g_snprintf(filename, MAX_PATH_LEN, <span class="stringliteral">&quot;%s/%s&quot;</span>,</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; remmina_data_dir, name);</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; remminafile = <a class="code" href="remmina__file_8c.html#ac1cc2d7f827f7d64c7fd3edf10e9383e">remmina_file_load</a>(filename);</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <span class="keywordflow">if</span> (remminafile) {</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; (*func)(remminafile, user_data);</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <a class="code" href="remmina__file_8c.html#abd2f06bf0a5ddcf7156e5ef7d0c8d4d7">remmina_file_free</a>(remminafile);</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; items_count++;</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; }</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; }</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; g_dir_close(dir);</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; }</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; g_free(remmina_data_dir);</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <span class="keywordflow">return</span> items_count;</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160;}</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160;</div><div class="line"><a name="l00209"></a><span class="lineno"><a class="line" href="remmina__file__manager_8h.html#a536edeef371d907ab3936f4d65c3003d"> 209</a></span>&#160;gchar *<a class="code" href="remmina__file__manager_8c.html#a536edeef371d907ab3936f4d65c3003d">remmina_file_manager_get_groups</a>(<span class="keywordtype">void</span>)</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160;{</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; gchar filename[MAX_PATH_LEN];</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; GDir *dir;</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <span class="keyword">const</span> gchar *name;</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile;</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <a class="code" href="remmina__string__array_8h.html#a62228cb0bc959307e3268cff98e1f7bb">RemminaStringArray</a> *array;</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; <span class="keyword">const</span> gchar *group;</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; gchar *groups;</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; gchar *remmina_data_dir;</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160;</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; remmina_data_dir = <a class="code" href="remmina__file__manager_8c.html#aa65bc30beb59d607ba430d966e7e27f5">remmina_file_get_datadir</a>();</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; array = <a class="code" href="remmina__string__array_8c.html#aff90e964c6541b1af02adf7ea39e6e02">remmina_string_array_new</a>();</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160;</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; dir = g_dir_open(remmina_data_dir, 0, NULL);</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160;</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <span class="keywordflow">if</span> (dir == NULL)</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="keywordflow">while</span> ((name = g_dir_read_name(dir)) != NULL) {</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <span class="keywordflow">if</span> (!g_str_has_suffix(name, <span class="stringliteral">&quot;.remmina&quot;</span>))</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; g_snprintf(filename, MAX_PATH_LEN, <span class="stringliteral">&quot;%s/%s&quot;</span>, remmina_data_dir, name);</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; remminafile = <a class="code" href="remmina__file_8c.html#ac1cc2d7f827f7d64c7fd3edf10e9383e">remmina_file_load</a>(filename);</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <span class="keywordflow">if</span> (remminafile) {</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; group = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">&quot;group&quot;</span>);</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <span class="keywordflow">if</span> (group &amp;&amp; <a class="code" href="remmina__string__array_8c.html#ab93a69850cfb4117c223a3f145ced986">remmina_string_array_find</a>(array, group) &lt; 0)</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <a class="code" href="remmina__string__array_8c.html#a2aaacca7db4b86f836486cfb559398f0">remmina_string_array_add</a>(array, group);</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <a class="code" href="remmina__file_8c.html#abd2f06bf0a5ddcf7156e5ef7d0c8d4d7">remmina_file_free</a>(remminafile);</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; }</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; }</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; g_dir_close(dir);</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; <a class="code" href="remmina__string__array_8c.html#a3eab4bae72ff130ad10ec8fc7364ce70">remmina_string_array_sort</a>(array);</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; groups = <a class="code" href="remmina__string__array_8c.html#a96f7bec7ce32de6cf5deadcd5aec51ec">remmina_string_array_to_string</a>(array);</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; <a class="code" href="remmina__string__array_8c.html#a8ab78913d299df665a408a8a5ec51bbe">remmina_string_array_free</a>(array);</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; g_free(remmina_data_dir);</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; <span class="keywordflow">return</span> groups;</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160;}</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160;</div><div class="line"><a name="l00248"></a><span class="lineno"><a class="line" href="remmina__file__manager_8c.html#a3b100405380ddccce98669a8b46ecc66"> 248</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__file__manager_8c.html#a3b100405380ddccce98669a8b46ecc66">remmina_file_manager_add_group</a>(GNode *<a class="code" href="remmina__ssh_8c.html#a85d5bd836f83ef1dbbcf4657f32e0792">node</a>, <span class="keyword">const</span> gchar *group)</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160;{</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; gint cmp;</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; gchar *p1;</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; gchar *p2;</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; GNode *child;</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; gboolean found;</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <a class="code" href="remmina__file__manager_8h.html#a0155f52ba9a28e2aa0ea5d831f5d2c90">RemminaGroupData</a> *data;</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160;</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; <span class="keywordflow">if</span> (node == NULL)</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160;</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; <span class="keywordflow">if</span> (group == NULL || group[0] == <span class="charliteral">&#39;\0&#39;</span>)</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160;</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; p1 = g_strdup(group);</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; p2 = strchr(p1, <span class="charliteral">&#39;/&#39;</span>);</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160;</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <span class="keywordflow">if</span> (p2)</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; *p2++ = <span class="charliteral">&#39;\0&#39;</span>;</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160;</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; found = FALSE;</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160;</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; <span class="keywordflow">for</span> (child = g_node_first_child(node); child; child = g_node_next_sibling(child)) {</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; cmp = g_strcmp0(((<a class="code" href="remmina__file__manager_8h.html#a0155f52ba9a28e2aa0ea5d831f5d2c90">RemminaGroupData</a> *)child-&gt;data)-&gt;name, p1);</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160;</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; <span class="keywordflow">if</span> (cmp == 0) {</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; found = TRUE;</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; }</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160;</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; <span class="keywordflow">if</span> (cmp &gt; 0)</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; }</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160;</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; <span class="keywordflow">if</span> (!found) {</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; data = g_new0(<a class="code" href="remmina__file__manager_8h.html#a0155f52ba9a28e2aa0ea5d831f5d2c90">RemminaGroupData</a>, 1);</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; data-&gt;name = p1;</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; <span class="keywordflow">if</span> (node-&gt;data)</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; data-&gt;group = g_strdup_printf(<span class="stringliteral">&quot;%s/%s&quot;</span>, ((<a class="code" href="remmina__file__manager_8h.html#a0155f52ba9a28e2aa0ea5d831f5d2c90">RemminaGroupData</a> *)node-&gt;data)-&gt;group, p1);</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; data-&gt;group = g_strdup(p1);</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <span class="keywordflow">if</span> (child)</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; child = g_node_insert_data_before(node, child, data);</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; child = g_node_append_data(node, data);</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; }</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; <a class="code" href="remmina__file__manager_8c.html#a3b100405380ddccce98669a8b46ecc66">remmina_file_manager_add_group</a>(child, p2);</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160;</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; <span class="keywordflow">if</span> (found)</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; g_free(p1);</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160;}</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160;</div><div class="line"><a name="l00302"></a><span class="lineno"><a class="line" href="remmina__file__manager_8h.html#a6593a3f297f420f012405fa582819857"> 302</a></span>&#160;GNode *<a class="code" href="remmina__file__manager_8c.html#a6593a3f297f420f012405fa582819857">remmina_file_manager_get_group_tree</a>(<span class="keywordtype">void</span>)</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160;{</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; gchar filename[MAX_PATH_LEN];</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; GDir *dir;</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; g_autofree gchar *datadir = NULL;</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; <span class="keyword">const</span> gchar *name;</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile;</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; <span class="keyword">const</span> gchar *group;</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; GNode *root;</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160;</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; root = g_node_new(NULL);</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160;</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; datadir = g_strdup(<a class="code" href="remmina__file__manager_8c.html#aa65bc30beb59d607ba430d966e7e27f5">remmina_file_get_datadir</a>());</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; dir = g_dir_open(datadir, 0, NULL);</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160;</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; <span class="keywordflow">if</span> (dir == NULL)</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; <span class="keywordflow">return</span> root;</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; <span class="keywordflow">while</span> ((name = g_dir_read_name(dir)) != NULL) {</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; <span class="keywordflow">if</span> (!g_str_has_suffix(name, <span class="stringliteral">&quot;.remmina&quot;</span>))</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; g_snprintf(filename, MAX_PATH_LEN, <span class="stringliteral">&quot;%s/%s&quot;</span>, datadir, name);</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; remminafile = <a class="code" href="remmina__file_8c.html#ac1cc2d7f827f7d64c7fd3edf10e9383e">remmina_file_load</a>(filename);</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; <span class="keywordflow">if</span> (remminafile) {</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; group = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">&quot;group&quot;</span>);</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; <a class="code" href="remmina__file__manager_8c.html#a3b100405380ddccce98669a8b46ecc66">remmina_file_manager_add_group</a>(root, group);</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; <a class="code" href="remmina__file_8c.html#abd2f06bf0a5ddcf7156e5ef7d0c8d4d7">remmina_file_free</a>(remminafile);</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; }</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; }</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; g_dir_close(dir);</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; <span class="keywordflow">return</span> root;</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160;}</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160;</div><div class="line"><a name="l00335"></a><span class="lineno"><a class="line" href="remmina__file__manager_8h.html#a06196f19abc15526514a5aa59a568798"> 335</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__file__manager_8c.html#a06196f19abc15526514a5aa59a568798">remmina_file_manager_free_group_tree</a>(GNode *<a class="code" href="remmina__ssh_8c.html#a85d5bd836f83ef1dbbcf4657f32e0792">node</a>)</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160;{</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; <a class="code" href="remmina__file__manager_8h.html#a0155f52ba9a28e2aa0ea5d831f5d2c90">RemminaGroupData</a> *data;</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; GNode *child;</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160;</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; <span class="keywordflow">if</span> (!node)</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; data = (<a class="code" href="remmina__file__manager_8h.html#a0155f52ba9a28e2aa0ea5d831f5d2c90">RemminaGroupData</a> *)node-&gt;data;</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; if (data) {</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; g_free(data-&gt;name);</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; g_free(data-&gt;group);</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; g_free(data);</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; node-&gt;data = NULL;</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; }</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; <span class="keywordflow">for</span> (child = g_node_first_child(node); child; child = g_node_next_sibling(child))</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; <a class="code" href="remmina__file__manager_8c.html#a06196f19abc15526514a5aa59a568798">remmina_file_manager_free_group_tree</a>(child);</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; g_node_unlink(node);</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160;}</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160;</div><div class="line"><a name="l00355"></a><span class="lineno"><a class="line" href="remmina__file__manager_8h.html#af7b58659604660eb0cb40b0e0f8348ab"> 355</a></span>&#160;<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *<a class="code" href="remmina__file__manager_8c.html#af7b58659604660eb0cb40b0e0f8348ab">remmina_file_manager_load_file</a>(<span class="keyword">const</span> gchar *filename)</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160;{</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile = NULL;</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; <a class="code" href="struct___remmina_file_plugin.html">RemminaFilePlugin</a> *plugin;</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; gchar *p;</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160;</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; <span class="keywordflow">if</span> ((p = strrchr(filename, <span class="charliteral">&#39;.&#39;</span>)) != NULL &amp;&amp; g_strcmp0(p + 1, <span class="stringliteral">&quot;remmina&quot;</span>) == 0) {</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; remminafile = <a class="code" href="remmina__file_8c.html#ac1cc2d7f827f7d64c7fd3edf10e9383e">remmina_file_load</a>(filename);</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; plugin = <a class="code" href="remmina__plugin__manager_8c.html#a859348bddc9069f06195915692b65076">remmina_plugin_manager_get_import_file_handler</a>(filename);</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; <span class="keywordflow">if</span> (plugin)</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; remminafile = plugin-&gt;<a class="code" href="struct___remmina_file_plugin.html#a597178a88c755ebe0614897b7aa279b1">import_func</a>(plugin, filename);</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; }</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; <span class="keywordflow">return</span> remminafile;</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160;}</div><div class="ttc" id="remmina__file__manager_8h_html_a0155f52ba9a28e2aa0ea5d831f5d2c90"><div class="ttname"><a href="remmina__file__manager_8h.html#a0155f52ba9a28e2aa0ea5d831f5d2c90">RemminaGroupData</a></div><div class="ttdeci">G_BEGIN_DECLS struct _RemminaGroupData RemminaGroupData</div></div>
-<div class="ttc" id="remmina__file_8c_html_ac1cc2d7f827f7d64c7fd3edf10e9383e"><div class="ttname"><a href="remmina__file_8c.html#ac1cc2d7f827f7d64c7fd3edf10e9383e">remmina_file_load</a></div><div class="ttdeci">RemminaFile * remmina_file_load(const gchar *filename)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00346">remmina_file.c:346</a></div></div>
-<div class="ttc" id="remmina__file_8c_html_abd2f06bf0a5ddcf7156e5ef7d0c8d4d7"><div class="ttname"><a href="remmina__file_8c.html#abd2f06bf0a5ddcf7156e5ef7d0c8d4d7">remmina_file_free</a></div><div class="ttdeci">void remmina_file_free(RemminaFile *remminafile)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00700">remmina_file.c:700</a></div></div>
+<div class="ttc" id="remmina__file_8c_html_ac1cc2d7f827f7d64c7fd3edf10e9383e"><div class="ttname"><a href="remmina__file_8c.html#ac1cc2d7f827f7d64c7fd3edf10e9383e">remmina_file_load</a></div><div class="ttdeci">RemminaFile * remmina_file_load(const gchar *filename)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00350">remmina_file.c:350</a></div></div>
+<div class="ttc" id="remmina__file_8c_html_abd2f06bf0a5ddcf7156e5ef7d0c8d4d7"><div class="ttname"><a href="remmina__file_8c.html#abd2f06bf0a5ddcf7156e5ef7d0c8d4d7">remmina_file_free</a></div><div class="ttdeci">void remmina_file_free(RemminaFile *remminafile)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00709">remmina_file.c:709</a></div></div>
<div class="ttc" id="remmina__plugin__manager_8h_html"><div class="ttname"><a href="remmina__plugin__manager_8h.html">remmina_plugin_manager.h</a></div></div>
-<div class="ttc" id="remmina__file_8c_html_a8eb1b213d9d08c6ad13683ce05f4355e"><div class="ttname"><a href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a></div><div class="ttdeci">const gchar * remmina_file_get_string(RemminaFile *remminafile, const gchar *setting)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00507">remmina_file.c:507</a></div></div>
+<div class="ttc" id="remmina__file_8c_html_a8eb1b213d9d08c6ad13683ce05f4355e"><div class="ttname"><a href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a></div><div class="ttdeci">const gchar * remmina_file_get_string(RemminaFile *remminafile, const gchar *setting)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00516">remmina_file.c:516</a></div></div>
<div class="ttc" id="remmina__string__array_8h_html_a62228cb0bc959307e3268cff98e1f7bb"><div class="ttname"><a href="remmina__string__array_8h.html#a62228cb0bc959307e3268cff98e1f7bb">RemminaStringArray</a></div><div class="ttdeci">G_BEGIN_DECLS typedef GPtrArray RemminaStringArray</div><div class="ttdef"><b>Definition:</b> <a href="remmina__string__array_8h_source.html#l00041">remmina_string_array.h:41</a></div></div>
<div class="ttc" id="remmina__file__manager_8c_html_af83917dac9f2646670733215ba7a3482"><div class="ttname"><a href="remmina__file__manager_8c.html#af83917dac9f2646670733215ba7a3482">remminadir</a></div><div class="ttdeci">static gchar * remminadir</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file__manager_8c_source.html#l00051">remmina_file_manager.c:51</a></div></div>
<div class="ttc" id="remmina__file__manager_8h_html"><div class="ttname"><a href="remmina__file__manager_8h.html">remmina_file_manager.h</a></div></div>
diff --git a/public/remmina__ftp__client_8c_source.html b/public/remmina__ftp__client_8c_source.html
index bfd67b625..551067b3d 100644
--- a/public/remmina__ftp__client_8c_source.html
+++ b/public/remmina__ftp__client_8c_source.html
@@ -155,7 +155,7 @@ $(document).ready(function(){initNavTree('remmina__ftp__client_8c_source.html','
<div class="ttc" id="remmina__ftp__client_8c_html_a3a2dc5070f06ae0fcd25fbfe1587ab5c"><div class="ttname"><a href="remmina__ftp__client_8c.html#a3a2dc5070f06ae0fcd25fbfe1587ab5c">remmina_ftp_client_dir_on_activate</a></div><div class="ttdeci">static void remmina_ftp_client_dir_on_activate(GtkWidget *widget, RemminaFTPClient *client)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__ftp__client_8c_source.html#l00362">remmina_ftp_client.c:362</a></div></div>
<div class="ttc" id="remmina__ftp__client_8c_html_a1ef77e687209d258ec576c31614ea60f"><div class="ttname"><a href="remmina__ftp__client_8c.html#a1ef77e687209d258ec576c31614ea60f">remmina_ftp_client_set_dir</a></div><div class="ttdeci">void remmina_ftp_client_set_dir(RemminaFTPClient *client, const gchar *dir)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__ftp__client_8c_source.html#l01146">remmina_ftp_client.c:1146</a></div></div>
<div class="ttc" id="remmina__ftp__client_8h_html_ab04a0655cd1e3bcac5e8f48c18df1a57ae94ee43f3b29b3b955ffbb5ac0a116ba"><div class="ttname"><a href="remmina__ftp__client_8h.html#ab04a0655cd1e3bcac5e8f48c18df1a57ae94ee43f3b29b3b955ffbb5ac0a116ba">REMMINA_FTP_TASK_COLUMN_NAME</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__ftp__client_8h_source.html#l00104">remmina_ftp_client.h:104</a></div></div>
-<div class="ttc" id="remmina__file_8c_html_af153b0d289ac93f6ecdaa15d5f3b9b8c"><div class="ttname"><a href="remmina__file_8c.html#af153b0d289ac93f6ecdaa15d5f3b9b8c">remmina_file_set_int</a></div><div class="ttdeci">void remmina_file_set_int(RemminaFile *remminafile, const gchar *setting, gint value)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00576">remmina_file.c:576</a></div></div>
+<div class="ttc" id="remmina__file_8c_html_af153b0d289ac93f6ecdaa15d5f3b9b8c"><div class="ttname"><a href="remmina__file_8c.html#af153b0d289ac93f6ecdaa15d5f3b9b8c">remmina_file_set_int</a></div><div class="ttdeci">void remmina_file_set_int(RemminaFile *remminafile, const gchar *setting, gint value)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00585">remmina_file.c:585</a></div></div>
<div class="ttc" id="remmina__ftp__client_8c_html_adc29c2ff13d900c2f185ee95427fb06ca11012a1ab54537707da11f4e4eb902c0"><div class="ttname"><a href="remmina__ftp__client_8c.html#adc29c2ff13d900c2f185ee95427fb06ca11012a1ab54537707da11f4e4eb902c0">NEW_TASK_SIGNAL</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__ftp__client_8c_source.html#l00158">remmina_ftp_client.c:158</a></div></div>
<div class="ttc" id="remmina__ftp__client_8h_html_a0411cd49bb5b71852cecd93bcbf0ca2da59857d62a8f1ff623da4d6895d81142d"><div class="ttname"><a href="remmina__ftp__client_8h.html#a0411cd49bb5b71852cecd93bcbf0ca2da59857d62a8f1ff623da4d6895d81142d">REMMINA_FTP_TASK_TYPE_DOWNLOAD</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__ftp__client_8h_source.html#l00091">remmina_ftp_client.h:91</a></div></div>
<div class="ttc" id="remmina__ftp__client_8h_html_a726ca809ffd3d67ab4b8476646f26635acf54e8ad0d63c5fec8592d849b04ab50"><div class="ttname"><a href="remmina__ftp__client_8h.html#a726ca809ffd3d67ab4b8476646f26635acf54e8ad0d63c5fec8592d849b04ab50">REMMINA_FTP_FILE_COLUMN_GROUP</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__ftp__client_8h_source.html#l00083">remmina_ftp_client.h:83</a></div></div>
@@ -180,7 +180,7 @@ $(document).ready(function(){initNavTree('remmina__ftp__client_8c_source.html','
<div class="ttc" id="remmina__ftp__client_8h_html_a726ca809ffd3d67ab4b8476646f26635ad3c5b62f4cfbb22a06e68d773791bc96"><div class="ttname"><a href="remmina__ftp__client_8h.html#a726ca809ffd3d67ab4b8476646f26635ad3c5b62f4cfbb22a06e68d773791bc96">REMMINA_FTP_FILE_COLUMN_NAME</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__ftp__client_8h_source.html#l00080">remmina_ftp_client.h:80</a></div></div>
<div class="ttc" id="remmina__ftp__client_8c_html_a79fcc8693c4264aadb53d36149fae18b"><div class="ttname"><a href="remmina__ftp__client_8c.html#a79fcc8693c4264aadb53d36149fae18b">remmina_cell_renderer_pixbuf_get_type</a></div><div class="ttdeci">GType remmina_cell_renderer_pixbuf_get_type(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__ftp__client_8c_source.html#l00072">remmina_ftp_client.c:72</a></div></div>
<div class="ttc" id="remmina__ftp__client_8h_html_ab04a0655cd1e3bcac5e8f48c18df1a57af7133a563aaa2c5615bc886086aea625"><div class="ttname"><a href="remmina__ftp__client_8h.html#ab04a0655cd1e3bcac5e8f48c18df1a57af7133a563aaa2c5615bc886086aea625">REMMINA_FTP_TASK_COLUMN_REMOTEDIR</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__ftp__client_8h_source.html#l00108">remmina_ftp_client.h:108</a></div></div>
-<div class="ttc" id="remmina__file_8c_html_a4884356c195dcfb4ceacf641a1e74e66"><div class="ttname"><a href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a></div><div class="ttdeci">gint remmina_file_get_int(RemminaFile *remminafile, const gchar *setting, gint default_value)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00594">remmina_file.c:594</a></div></div>
+<div class="ttc" id="remmina__file_8c_html_a4884356c195dcfb4ceacf641a1e74e66"><div class="ttname"><a href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a></div><div class="ttdeci">gint remmina_file_get_int(RemminaFile *remminafile, const gchar *setting, gint default_value)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00603">remmina_file.c:603</a></div></div>
<div class="ttc" id="remmina__ftp__client_8h_html_ab04a0655cd1e3bcac5e8f48c18df1a57a41f3b0defe5205fd1dd01884a33a29ed"><div class="ttname"><a href="remmina__ftp__client_8h.html#ab04a0655cd1e3bcac5e8f48c18df1a57a41f3b0defe5205fd1dd01884a33a29ed">REMMINA_FTP_TASK_COLUMN_TOOLTIP</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__ftp__client_8h_source.html#l00112">remmina_ftp_client.h:112</a></div></div>
<div class="ttc" id="remmina__ftp__client_8h_html_a726ca809ffd3d67ab4b8476646f26635a5a1276e4baa54cc04e4f88084cdc6316"><div class="ttname"><a href="remmina__ftp__client_8h.html#a726ca809ffd3d67ab4b8476646f26635a5a1276e4baa54cc04e4f88084cdc6316">REMMINA_FTP_FILE_COLUMN_MODIFIED</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__ftp__client_8h_source.html#l00085">remmina_ftp_client.h:85</a></div></div>
<div class="ttc" id="remmina__ftp__client_8h_html_ab04a0655cd1e3bcac5e8f48c18df1a57a6d6919118fabe46fb812391b820c66bf"><div class="ttname"><a href="remmina__ftp__client_8h.html#ab04a0655cd1e3bcac5e8f48c18df1a57a6d6919118fabe46fb812391b820c66bf">REMMINA_FTP_TASK_COLUMN_STATUS</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__ftp__client_8h_source.html#l00110">remmina_ftp_client.h:110</a></div></div>
diff --git a/public/remmina__main_8c_source.html b/public/remmina__main_8c_source.html
index 0ebcce2f9..58ab7d9fb 100644
--- a/public/remmina__main_8c_source.html
+++ b/public/remmina__main_8c_source.html
@@ -87,16 +87,16 @@ $(document).ready(function(){initNavTree('remmina__main_8c_source.html','');});
</div><!--header-->
<div class="contents">
<a href="remmina__main_8c.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * Remmina - The GTK+ Remote Desktop Client</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> * Copyright (C) 2009-2011 Vic Lee</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> * Copyright (C) 2014-2015 Antenore Gatta, Fabio Castelli, Giovanni Panozzo</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * Copyright (C) 2016-2022 Antenore Gatta, Giovanni Panozzo</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * (at your option) any later version.</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> * along with this program; if not, write to the Free Software</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> * Foundation, Inc., 51 Franklin Street, Fifth Floor,</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> * Boston, MA 02110-1301, USA.</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="comment"> * In addition, as a special exception, the copyright holders give</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment"> * permission to link the code of portions of this program with the</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"> * OpenSSL library under certain conditions as described in each</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> * individual source file, and distribute linked combinations</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> * including the two.</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * You must obey the GNU General Public License in all respects</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> * for all of the code used other than OpenSSL. * If you modify</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment"> * file(s) with this exception, you may extend this exception to your</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="comment"> * version of the file(s), but you are not obligated to do so. * If you</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="comment"> * do not wish to do so, delete this exception statement from your</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="comment"> * version. * If you delete this exception statement from all source</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="comment"> * files in the program, then also delete it here.</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="preprocessor">#include &quot;config.h&quot;</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="preprocessor">#include &lt;ctype.h&gt;</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="preprocessor">#include &lt;gio/gio.h&gt;</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="preprocessor">#include &lt;gio/gdesktopappinfo.h&gt;</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="preprocessor">#include &lt;gdk/gdkkeysyms.h&gt;</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="preprocessor">#include &lt;glib/gi18n.h&gt;</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="preprocessor">#include &lt;gtk/gtk.h&gt;</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina_8h.html">remmina.h</a>&quot;</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__string__array_8h.html">remmina_string_array.h</a>&quot;</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__public_8h.html">remmina_public.h</a>&quot;</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__file_8h.html">remmina_file.h</a>&quot;</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__file__manager_8h.html">remmina_file_manager.h</a>&quot;</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__file__editor_8h.html">remmina_file_editor.h</a>&quot;</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="rcw_8h.html">rcw.h</a>&quot;</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__about_8h.html">remmina_about.h</a>&quot;</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__pref_8h.html">remmina_pref.h</a>&quot;</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__pref__dialog_8h.html">remmina_pref_dialog.h</a>&quot;</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__widget__pool_8h.html">remmina_widget_pool.h</a>&quot;</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__plugin__manager_8h.html">remmina_plugin_manager.h</a>&quot;</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__log_8h.html">remmina_log.h</a>&quot;</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__icon_8h.html">remmina_icon.h</a>&quot;</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__main_8h.html">remmina_main.h</a>&quot;</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__exec_8h.html">remmina_exec.h</a>&quot;</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__mpchange_8h.html">remmina_mpchange.h</a>&quot;</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__external__tools_8h.html">remmina_external_tools.h</a>&quot;</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__unlock_8h.html">remmina_unlock.h</a>&quot;</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__trace__calls_8h.html">remmina/remmina_trace_calls.h</a>&quot;</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;</div><div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#ab7c680e1f6ffeef21cb928a083d36d89"> 66</a></span>&#160;<span class="keyword">static</span> <a class="code" href="struct___remmina_main.html">RemminaMain</a> *<a class="code" href="remmina__main_8c.html#ab7c680e1f6ffeef21cb928a083d36d89">remminamain</a>;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;<span class="preprocessor">#define RM_GET_OBJECT(object_name) gtk_builder_get_object(remminamain-&gt;builder, object_name)</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;<span class="keyword">enum</span> {</div><div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a2b637b91fededa6eb7f4be69da080445"> 71</a></span>&#160; <a class="code" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a2b637b91fededa6eb7f4be69da080445">PROTOCOL_COLUMN</a>,</div><div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a1f8f29e04fd120da5a66491ef0a4ff6c"> 72</a></span>&#160; <a class="code" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a1f8f29e04fd120da5a66491ef0a4ff6c">NAME_COLUMN</a>,</div><div class="line"><a name="l00073"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a1704de86134c42b13d2e5fd7cf7c903b"> 73</a></span>&#160; <a class="code" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a1704de86134c42b13d2e5fd7cf7c903b">GROUP_COLUMN</a>,</div><div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a8c129f382d9456db6f671e1e6e99d32f"> 74</a></span>&#160; <a class="code" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a8c129f382d9456db6f671e1e6e99d32f">SERVER_COLUMN</a>,</div><div class="line"><a name="l00075"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388ad68c7d7d2f1cfe0321e87c4a833a0756"> 75</a></span>&#160; <a class="code" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388ad68c7d7d2f1cfe0321e87c4a833a0756">PLUGIN_COLUMN</a>,</div><div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a6e22c76fbdeaa8f724eb996db2d528bb"> 76</a></span>&#160; <a class="code" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a6e22c76fbdeaa8f724eb996db2d528bb">DATE_COLUMN</a>,</div><div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a8c5d264253ed2fc8f96ffcee508db93d"> 77</a></span>&#160; <a class="code" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a8c5d264253ed2fc8f96ffcee508db93d">FILENAME_COLUMN</a>,</div><div class="line"><a name="l00078"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a4d053f07c7bfa18ee1db38382a64c454"> 78</a></span>&#160; <a class="code" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a4d053f07c7bfa18ee1db38382a64c454">LABELS_COLUMN</a>,</div><div class="line"><a name="l00079"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a348c0cf6892b36818d9825dddc25f8e3"> 79</a></span>&#160; <a class="code" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a348c0cf6892b36818d9825dddc25f8e3">NOTES_COLUMN</a>,</div><div class="line"><a name="l00080"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388ac70d28409ca79aa291cc0e58244f1fe4"> 80</a></span>&#160; <a class="code" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388ac70d28409ca79aa291cc0e58244f1fe4">N_COLUMNS</a></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;};</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;<span class="keyword">static</span></div><div class="line"><a name="l00084"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#a8ebbcba2c07af0938b3c29e316747d12"> 84</a></span>&#160;<span class="keyword">const</span> gchar *<a class="code" href="remmina__main_8c.html#a8ebbcba2c07af0938b3c29e316747d12">supported_mime_types</a>[] = {</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="stringliteral">&quot;x-scheme-handler/rdp&quot;</span>,</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="stringliteral">&quot;x-scheme-handler/spice&quot;</span>,</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="stringliteral">&quot;x-scheme-handler/vnc&quot;</span>,</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="stringliteral">&quot;x-scheme-handler/remmina&quot;</span>,</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="stringliteral">&quot;application/x-remmina&quot;</span>,</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; NULL</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;};</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;</div><div class="line"><a name="l00093"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#a923b3e2712d969eb59d9291e99f933e8"> 93</a></span>&#160;<span class="keyword">static</span> GActionEntry <a class="code" href="remmina__main_8c.html#a923b3e2712d969eb59d9291e99f933e8">app_actions</a>[] = {</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; { <span class="stringliteral">&quot;about&quot;</span>, <a class="code" href="remmina__main_8c.html#aac0bb51159be042fecab0103e73a54dc">remmina_main_on_action_application_about</a>, NULL, NULL, NULL },</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; { <span class="stringliteral">&quot;news&quot;</span>, <a class="code" href="remmina__main_8c.html#a0b4ec1e78b79adaa180a385ac50c20d6">remmina_main_on_action_application_news</a>, NULL, NULL, NULL },</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; { <span class="stringliteral">&quot;default&quot;</span>, <a class="code" href="remmina__main_8c.html#a05dbb6ce820f3a137949b919d0efa6a1">remmina_main_on_action_application_default</a>, NULL, NULL, NULL },</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; { <span class="stringliteral">&quot;mpchange&quot;</span>, <a class="code" href="remmina__main_8c.html#abf51d42fa2c5ce84164b5514b4634229">remmina_main_on_action_application_mpchange</a>, NULL, NULL, NULL },</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; { <span class="stringliteral">&quot;plugins&quot;</span>, <a class="code" href="remmina__main_8c.html#adf59ad5b0a0ef68e58bbea3701929efc">remmina_main_on_action_application_plugins</a>, NULL, NULL, NULL },</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; { <span class="stringliteral">&quot;preferences&quot;</span>, <a class="code" href="remmina__main_8c.html#a6ed9f6a588a2d9e3a6cf6884c8d07f92">remmina_main_on_action_application_preferences</a>, <span class="stringliteral">&quot;i&quot;</span>, NULL, NULL },</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; { <span class="stringliteral">&quot;dark&quot;</span>, <a class="code" href="remmina__main_8c.html#a91f22c2834ac7f38d201d8d678f8c57b">remmina_main_on_action_application_dark_theme</a>, NULL, NULL, NULL },</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; { <span class="stringliteral">&quot;debug&quot;</span>, <a class="code" href="remmina__main_8c.html#a5db4436cc72b9d5ea3e498f8519efecc">remmina_main_on_action_help_debug</a>, NULL, NULL, NULL },</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; { <span class="stringliteral">&quot;community&quot;</span>, <a class="code" href="remmina__main_8c.html#aac3aa116a8d8b527f1aa61b7395b4b32">remmina_main_on_action_help_community</a>, NULL, NULL, NULL },</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; { <span class="stringliteral">&quot;donations&quot;</span>, <a class="code" href="remmina__main_8c.html#a2704d643ee15702a84a1c76219dd5277">remmina_main_on_action_help_donations</a>, NULL, NULL, NULL },</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; { <span class="stringliteral">&quot;homepage&quot;</span>, <a class="code" href="remmina__main_8c.html#a7049d977154921f651cc1538f59c5b7a">remmina_main_on_action_help_homepage</a>, NULL, NULL, NULL },</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; { <span class="stringliteral">&quot;wiki&quot;</span>, <a class="code" href="remmina__main_8c.html#a0c32fe66988056b353220128611b9116">remmina_main_on_action_help_wiki</a>, NULL, NULL, NULL },</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; { <span class="stringliteral">&quot;quit&quot;</span>, <a class="code" href="remmina__main_8c.html#a5445e5568a6fc04d08b620829a59334a">remmina_main_on_action_application_quit</a>, NULL, NULL, NULL },</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;};</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;</div><div class="line"><a name="l00109"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#af146cc1f982c98a9c8a5ac43cc1508f3"> 109</a></span>&#160;<span class="keyword">static</span> GActionEntry <a class="code" href="remmina__main_8c.html#af146cc1f982c98a9c8a5ac43cc1508f3">main_actions</a>[] = {</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; { <span class="stringliteral">&quot;connect&quot;</span>, <a class="code" href="remmina__main_8c.html#a6b30ed832369f3a7153aa63f98873c9d">remmina_main_on_action_connection_connect</a>, NULL, NULL, NULL },</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; { <span class="stringliteral">&quot;copy&quot;</span>, <a class="code" href="remmina__main_8c.html#a44eb44c6391f53a19c6f1fdf9a39a8c1">remmina_main_on_action_connection_copy</a>, NULL, NULL, NULL },</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; { <span class="stringliteral">&quot;delete&quot;</span>, <a class="code" href="remmina__main_8c.html#a10e574723222f5df9db456977e62a093">remmina_main_on_action_connection_delete</a>, NULL, NULL, NULL },</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; { <span class="stringliteral">&quot;edit&quot;</span>, <a class="code" href="remmina__main_8c.html#adfbfc580d25b58d09770a7d33ffe03cc">remmina_main_on_action_connection_edit</a>, NULL, NULL, NULL },</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; { <span class="stringliteral">&quot;exttools&quot;</span>, <a class="code" href="remmina__main_8c.html#abcf8bd8ca57b389264ff9739a61efdc1">remmina_main_on_action_connection_external_tools</a>, NULL, NULL, NULL },</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; { <span class="stringliteral">&quot;new&quot;</span>, <a class="code" href="remmina__main_8c.html#a52cc21537ff003b9d0fbdb9040c811af">remmina_main_on_action_connection_new</a>, NULL, NULL, NULL },</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; { <span class="stringliteral">&quot;export&quot;</span>, <a class="code" href="remmina__main_8c.html#ab203476099a5ad6e889f91c8e05d577d">remmina_main_on_action_tools_export</a>, NULL, NULL, NULL },</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; { <span class="stringliteral">&quot;import&quot;</span>, <a class="code" href="remmina__main_8c.html#a4b4f0bbdb9e487d6c3809e8a57dc1d1c">remmina_main_on_action_tools_import</a>, NULL, NULL, NULL },</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; { <span class="stringliteral">&quot;expand&quot;</span>, <a class="code" href="remmina__main_8c.html#ab98d51c96a87fddaa2d5d6d4614bafa8">remmina_main_on_action_expand</a>, NULL, NULL, NULL },</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; { <span class="stringliteral">&quot;collapse&quot;</span>, <a class="code" href="remmina__main_8c.html#a0edcc1d7dc3adcbb7bb36aa0f62dec3a">remmina_main_on_action_collapse</a>, NULL, NULL, NULL },</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; { <span class="stringliteral">&quot;search&quot;</span>, <a class="code" href="remmina__main_8c.html#a9896df7a92402b5a61e58420235c515a">remmina_main_on_action_search_toggle</a>, NULL, NULL, NULL },</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;};</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;</div><div class="line"><a name="l00123"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#a8ccd8303ada6e26880504fc58812fbda"> 123</a></span>&#160;<span class="keyword">static</span> GtkTargetEntry <a class="code" href="remmina__main_8c.html#a8ccd8303ada6e26880504fc58812fbda">remmina_drop_types</a>[] =</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;{</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; { <span class="stringliteral">&quot;text/uri-list&quot;</span>, 0, 1 }</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;};</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;</div><div class="line"><a name="l00128"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#aace9ecdd0b74d392ad6ed541bd605c1c"> 128</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">char</span> *<a class="code" href="remmina__main_8c.html#aace9ecdd0b74d392ad6ed541bd605c1c">quick_connect_plugin_list</a>[] =</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;{</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <span class="stringliteral">&quot;RDP&quot;</span>, <span class="stringliteral">&quot;VNC&quot;</span>, <span class="stringliteral">&quot;SSH&quot;</span>, <span class="stringliteral">&quot;NX&quot;</span>, <span class="stringliteral">&quot;SPICE&quot;</span>, <span class="stringliteral">&quot;X2GO&quot;</span></div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;};</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;</div><div class="line"><a name="l00136"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#ac448c53d7a2066763d2b747d269f60ee"> 136</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__main_8c.html#ac448c53d7a2066763d2b747d269f60ee">remmina_main_save_size</a>(<span class="keywordtype">void</span>)</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;{</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="keywordflow">if</span> ((gdk_window_get_state(gtk_widget_get_window(GTK_WIDGET(remminamain-&gt;<a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a>))) &amp; GDK_WINDOW_STATE_MAXIMIZED) == 0) {</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; gtk_window_get_size(remminamain-&gt;<a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a>, &amp;<a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a6318ff8e2f73d36fb8b35cbed503c222">main_width</a>, &amp;<a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#aeb86dc8005c98ce2eab57bd900467875">main_height</a>);</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a8edfd2a9a9a06b1fd876fbe8742b9ff6">main_maximize</a> = FALSE;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a8edfd2a9a9a06b1fd876fbe8742b9ff6">main_maximize</a> = TRUE;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; }</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160;}</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;</div><div class="line"><a name="l00147"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#a51880fc109db6457a5d0fc543c2deaf2"> 147</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__main_8c.html#a51880fc109db6457a5d0fc543c2deaf2">remmina_main_save_expanded_group_func</a>(GtkTreeView *tree_view, GtkTreePath *path, gpointer user_data)</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;{</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; GtkTreeIter iter;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; gchar *group;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; gtk_tree_model_get_iter(remminamain-&gt;<a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-&gt;<a class="code" href="struct___remmina_main_priv.html#a87a88c763f806d76fdee5a233c3ad7cd">file_model_sort</a>, &amp;iter, path);</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; gtk_tree_model_get(remminamain-&gt;<a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-&gt;<a class="code" href="struct___remmina_main_priv.html#a87a88c763f806d76fdee5a233c3ad7cd">file_model_sort</a>, &amp;iter, <a class="code" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a1704de86134c42b13d2e5fd7cf7c903b">GROUP_COLUMN</a>, &amp;group, -1);</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keywordflow">if</span> (group) {</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <a class="code" href="remmina__string__array_8c.html#a2aaacca7db4b86f836486cfb559398f0">remmina_string_array_add</a>(remminamain-&gt;<a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-&gt;<a class="code" href="struct___remmina_main_priv.html#a467cf8ebc87ccdb68b9f88bce95c9f3a">expanded_group</a>, group);</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; g_free(group);</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; }</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;}</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;</div><div class="line"><a name="l00161"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#ad8744dc59ba8072ffdf557b6c94e9f40"> 161</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__main_8c.html#ad8744dc59ba8072ffdf557b6c94e9f40">remmina_main_save_expanded_group</a>(<span class="keywordtype">void</span>)</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;{</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keywordflow">if</span> (GTK_IS_TREE_STORE(remminamain-&gt;<a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-&gt;<a class="code" href="struct___remmina_main_priv.html#aec4c4540e9463a45b22a5c0b9108bc6f">file_model</a>)) {</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="keywordflow">if</span> (remminamain-&gt;<a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-&gt;<a class="code" href="struct___remmina_main_priv.html#a467cf8ebc87ccdb68b9f88bce95c9f3a">expanded_group</a>)</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <a class="code" href="remmina__string__array_8c.html#a8ab78913d299df665a408a8a5ec51bbe">remmina_string_array_free</a>(remminamain-&gt;<a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-&gt;<a class="code" href="struct___remmina_main_priv.html#a467cf8ebc87ccdb68b9f88bce95c9f3a">expanded_group</a>);</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; remminamain-&gt;<a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-&gt;<a class="code" href="struct___remmina_main_priv.html#a467cf8ebc87ccdb68b9f88bce95c9f3a">expanded_group</a> = <a class="code" href="remmina__string__array_8c.html#aff90e964c6541b1af02adf7ea39e6e02">remmina_string_array_new</a>();</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; gtk_tree_view_map_expanded_rows(remminamain-&gt;<a class="code" href="struct___remmina_main.html#a81f987e527d521be54aaf3f46dfe7ced">tree_files_list</a>,</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; (GtkTreeViewMappingFunc)<a class="code" href="remmina__main_8c.html#a51880fc109db6457a5d0fc543c2deaf2">remmina_main_save_expanded_group_func</a>, NULL);</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; }</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;}</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;</div><div class="line"><a name="l00177"></a><span class="lineno"><a class="line" href="remmina__main_8h.html#a95cedb0d631aacbd1b4a5ee1e10a40a5"> 177</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__main_8c.html#a009f32092bd1d8dcd8e783d25416f3df">remmina_main_save_before_destroy</a>()</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;{</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <span class="keywordflow">if</span> (!remminamain || !remminamain-&gt;<a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a>)</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160;</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <a class="code" href="remmina__main_8c.html#ac448c53d7a2066763d2b747d269f60ee">remmina_main_save_size</a>();</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <a class="code" href="remmina__main_8c.html#ad8744dc59ba8072ffdf557b6c94e9f40">remmina_main_save_expanded_group</a>();</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; g_free(<a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#aa8d4c923cb9ca1be451436d1790e8ee5">expanded_group</a>);</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#aa8d4c923cb9ca1be451436d1790e8ee5">expanded_group</a> = <a class="code" href="remmina__string__array_8c.html#a96f7bec7ce32de6cf5deadcd5aec51ec">remmina_string_array_to_string</a>(remminamain-&gt;<a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-&gt;<a class="code" href="struct___remmina_main_priv.html#a467cf8ebc87ccdb68b9f88bce95c9f3a">expanded_group</a>);</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <a class="code" href="remmina__pref_8c.html#ae17aaf37449083a4322b6748c8f3a39f">remmina_pref_save</a>();</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160;}</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160;</div><div class="line"><a name="l00190"></a><span class="lineno"><a class="line" href="remmina__main_8h.html#a77d974da2ddd1ea7c87f8b9bb1eedda8"> 190</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__main_8c.html#a95532ac6d110eeeb2e41d4b2a329797c">remmina_main_destroy</a>()</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160;{</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160;</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <span class="keywordflow">if</span> (remminamain) {</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="keywordflow">if</span> (remminamain-&gt;<a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a>)</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; gtk_widget_destroy(GTK_WIDGET(remminamain-&gt;<a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a>));</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; g_object_unref(remminamain-&gt;<a class="code" href="struct___remmina_main.html#ab7c6aebff1b06ef97c36bfa9d360b0c1">builder</a>);</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <a class="code" href="remmina__string__array_8c.html#a8ab78913d299df665a408a8a5ec51bbe">remmina_string_array_free</a>(remminamain-&gt;<a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-&gt;<a class="code" href="struct___remmina_main_priv.html#a467cf8ebc87ccdb68b9f88bce95c9f3a">expanded_group</a>);</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; remminamain-&gt;<a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-&gt;<a class="code" href="struct___remmina_main_priv.html#a467cf8ebc87ccdb68b9f88bce95c9f3a">expanded_group</a> = NULL;</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <span class="keywordflow">if</span> (remminamain-&gt;<a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-&gt;<a class="code" href="struct___remmina_main_priv.html#aec4c4540e9463a45b22a5c0b9108bc6f">file_model</a>)</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; g_object_unref(G_OBJECT(remminamain-&gt;<a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-&gt;<a class="code" href="struct___remmina_main_priv.html#aec4c4540e9463a45b22a5c0b9108bc6f">file_model</a>));</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; g_object_unref(G_OBJECT(remminamain-&gt;<a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-&gt;<a class="code" href="struct___remmina_main_priv.html#ae1e1d579bdb2517bd0f86408b9d5f97c">file_model_filter</a>));</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; g_free(remminamain-&gt;<a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-&gt;<a class="code" href="struct___remmina_main_priv.html#a092aebd62ba9fe50c899e416361c1d00">selected_filename</a>);</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; g_free(remminamain-&gt;<a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-&gt;<a class="code" href="struct___remmina_main_priv.html#a606c7e6dc78219e8e5536519db723a4d">selected_name</a>);</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; g_free(remminamain-&gt;<a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>);</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; g_free(remminamain);</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; remminamain = NULL;</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; }</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160;}</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160;</div><div class="line"><a name="l00215"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#a33ef5745d8b934ef52379c277d3a1ab2"> 215</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="remmina__main_8c.html#a33ef5745d8b934ef52379c277d3a1ab2">remmina_main_dexit</a>(gpointer data)</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160;{</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; <a class="code" href="remmina__exec_8c.html#aaa67e07e2426828d7e7b9b30d2038d31">remmina_application_condexit</a>(<a class="code" href="remmina__exec_8h.html#ae9dfd6986f18cb3d846a4933ac792fd5ae79d14a54e119795478a6e390d7d3b40">REMMINA_CONDEXIT_ONMAINWINDELETE</a>);</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160;}</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160;</div><div class="line"><a name="l00222"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#a40493bb60c169e53e2e08a0d0a808302"> 222</a></span>&#160;gboolean <a class="code" href="remmina__main_8c.html#a40493bb60c169e53e2e08a0d0a808302">remmina_main_on_delete_event</a>(GtkWidget *widget, GdkEvent *event, gpointer user_data)</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160;{</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <a class="code" href="remmina__main_8c.html#a009f32092bd1d8dcd8e783d25416f3df">remmina_main_save_before_destroy</a>();</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160;</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; g_idle_add(<a class="code" href="remmina__main_8c.html#a33ef5745d8b934ef52379c277d3a1ab2">remmina_main_dexit</a>, NULL);</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160;</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160;}</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160;</div><div class="line"><a name="l00232"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#a829d3ad1468d780380ae1ad693532e82"> 232</a></span>&#160;gboolean <a class="code" href="remmina__main_8c.html#a829d3ad1468d780380ae1ad693532e82">remmina_main_idle_destroy</a>(gpointer data)</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160;{</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160;</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <span class="keywordflow">if</span> (remminamain)</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <a class="code" href="remmina__main_8c.html#a95532ac6d110eeeb2e41d4b2a329797c">remmina_main_destroy</a>();</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160;</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160;}</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160;</div><div class="line"><a name="l00245"></a><span class="lineno"><a class="line" href="remmina__main_8h.html#a4d2d08c3fed3f72ea7f4c0600fec7ed5"> 245</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__main_8c.html#aeb74f36e5fd58ceab9f13a184bfb2029">remmina_main_on_destroy_event</a>()</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160;{</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160;</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <span class="keywordflow">if</span> (remminamain) {</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; <span class="comment">/* Invalidate remminamain-&gt;window to avoid multiple destructions */</span></div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; remminamain-&gt;<a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a> = NULL;</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <span class="comment">/* Destroy remminamain struct, later. We can&#39;t destroy</span></div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160;<span class="comment"> * important objects like the builder now */</span></div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; g_idle_add(<a class="code" href="remmina__main_8c.html#a829d3ad1468d780380ae1ad693532e82">remmina_main_idle_destroy</a>, NULL);</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; }</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160;}</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160;</div><div class="line"><a name="l00258"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#a9e60326026d7de56882bc83c0084fd12"> 258</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__main_8c.html#a9e60326026d7de56882bc83c0084fd12">remmina_main_clear_selection_data</a>(<span class="keywordtype">void</span>)</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160;{</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; g_free(remminamain-&gt;<a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-&gt;<a class="code" href="struct___remmina_main_priv.html#a092aebd62ba9fe50c899e416361c1d00">selected_filename</a>);</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; g_free(remminamain-&gt;<a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-&gt;<a class="code" href="struct___remmina_main_priv.html#a606c7e6dc78219e8e5536519db723a4d">selected_name</a>);</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; remminamain-&gt;<a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-&gt;<a class="code" href="struct___remmina_main_priv.html#a092aebd62ba9fe50c899e416361c1d00">selected_filename</a> = NULL;</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; remminamain-&gt;<a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-&gt;<a class="code" href="struct___remmina_main_priv.html#a606c7e6dc78219e8e5536519db723a4d">selected_name</a> = NULL;</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160;}</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160;</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160;<span class="preprocessor">#ifdef SNAP_BUILD</span></div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160;</div><div class="line"><a name="l00269"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#ab08aae433b625c3a84330630fe2bd2d5"> 269</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__main_8c.html#ab08aae433b625c3a84330630fe2bd2d5">remmina_main_show_snap_welcome</a>()</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160;{</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; GtkBuilder *dlgbuilder = NULL;</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; GtkWidget *dlg;</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; GtkWindow *parent;</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <span class="keywordtype">int</span> result;</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; <span class="keyword">static</span> gboolean shown_once = FALSE;</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; gboolean need_snap_interface_connections = FALSE;</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; GtkWidget *dsa;</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <a class="code" href="struct___remmina_secret_plugin.html">RemminaSecretPlugin</a> *<a class="code" href="remmina__plugin__manager_8c.html#a5e79d6abd0b12c1ed2bb33988e41857e">remmina_secret_plugin</a>;</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160;</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; <span class="keywordflow">if</span> (shown_once)</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; shown_once = TRUE;</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160;</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; g_print(<span class="stringliteral">&quot;Remmina is compiled as a SNAP package.\n&quot;</span>);</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; remmina_secret_plugin = <a class="code" href="remmina__plugin__manager_8c.html#ad380a98f6624aa8c830015c8b428b7b4">remmina_plugin_manager_get_secret_plugin</a>();</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; <span class="keywordflow">if</span> (remmina_secret_plugin == NULL) {</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; g_print(<span class="stringliteral">&quot; but we can’t find the secret plugin inside the SNAP.\n&quot;</span>);</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; need_snap_interface_connections = TRUE;</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <span class="keywordflow">if</span> (!remmina_secret_plugin-&gt;<a class="code" href="struct___remmina_secret_plugin.html#a2123e14795b104f5fe8d77a4b7847261">is_service_available</a>(remmina_secret_plugin)) {</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; g_print(<span class="stringliteral">&quot; but we can’t access a secret service. Secret service or SNAP interface connection is missing.\n&quot;</span>);</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; need_snap_interface_connections = TRUE;</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; }</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; }</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160;</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <span class="keywordflow">if</span> (need_snap_interface_connections &amp;&amp; !<a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a18872e092d22f5d3accb66d6a22845d7">prevent_snap_welcome_message</a>) {</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; dlgbuilder = <a class="code" href="remmina__public_8c.html#a4573e086e1ff8507eb9447b25bf11b92">remmina_public_gtk_builder_new_from_resource</a>(<span class="stringliteral">&quot;/org/remmina/Remmina/src/../data/ui/remmina_snap_info_dialog.glade&quot;</span>);</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; dsa = GTK_WIDGET(gtk_builder_get_object(dlgbuilder, <span class="stringliteral">&quot;dontshowagain&quot;</span>));</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; <span class="keywordflow">if</span> (dlgbuilder) {</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; parent = <a class="code" href="remmina__main_8c.html#a7740488de65c0e642895cc9dfba07b6e">remmina_main_get_window</a>();</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; dlg = GTK_WIDGET(gtk_builder_get_object(dlgbuilder, <span class="stringliteral">&quot;SnapInfoDlg&quot;</span>));</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; <span class="keywordflow">if</span> (parent)</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; gtk_window_set_transient_for(GTK_WINDOW(dlg), parent);</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; gtk_builder_connect_signals(dlgbuilder, NULL);</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; result = gtk_dialog_run(GTK_DIALOG(dlg));</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; <span class="keywordflow">if</span> (result == 1) {</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a18872e092d22f5d3accb66d6a22845d7">prevent_snap_welcome_message</a> = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(dsa));</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <a class="code" href="remmina__pref_8c.html#ae17aaf37449083a4322b6748c8f3a39f">remmina_pref_save</a>();</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; }</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; gtk_widget_destroy(dlg);</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; g_object_unref(dlgbuilder);</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; }</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; }</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160;}</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160;</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160;</div><div class="line"><a name="l00319"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#a3c5043279b5d98d4d08635d33402ea66"> 319</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="remmina__main_8c.html#a3c5043279b5d98d4d08635d33402ea66">remmina_main_selection_func</a>(GtkTreeSelection *selection, GtkTreeModel *model, GtkTreePath *path,</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; gboolean path_currently_selected, gpointer user_data)</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160;{</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; guint context_id;</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; GtkTreeIter iter;</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; gchar buf[1000];</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160;</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; <span class="keywordflow">if</span> (path_currently_selected)</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160;</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; <span class="keywordflow">if</span> (!gtk_tree_model_get_iter(model, &amp;iter, path))</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160;</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; <a class="code" href="remmina__main_8c.html#a9e60326026d7de56882bc83c0084fd12">remmina_main_clear_selection_data</a>();</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160;</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; gtk_tree_model_get(model, &amp;iter,</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; <a class="code" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a1f8f29e04fd120da5a66491ef0a4ff6c">NAME_COLUMN</a>, &amp;remminamain-&gt;<a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-&gt;<a class="code" href="struct___remmina_main_priv.html#a606c7e6dc78219e8e5536519db723a4d">selected_name</a>,</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; <a class="code" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a8c5d264253ed2fc8f96ffcee508db93d">FILENAME_COLUMN</a>, &amp;remminamain-&gt;<a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-&gt;<a class="code" href="struct___remmina_main_priv.html#a092aebd62ba9fe50c899e416361c1d00">selected_filename</a>,</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; -1);</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160;</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; context_id = gtk_statusbar_get_context_id(remminamain-&gt;<a class="code" href="struct___remmina_main.html#acacd90f3e6df6a864154edba01464ae2">statusbar_main</a>, <span class="stringliteral">&quot;status&quot;</span>);</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; gtk_statusbar_pop(remminamain-&gt;<a class="code" href="struct___remmina_main.html#acacd90f3e6df6a864154edba01464ae2">statusbar_main</a>, context_id);</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; <span class="keywordflow">if</span> (remminamain-&gt;<a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-&gt;<a class="code" href="struct___remmina_main_priv.html#a092aebd62ba9fe50c899e416361c1d00">selected_filename</a>) {</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; g_snprintf(buf, <span class="keyword">sizeof</span>(buf), <span class="stringliteral">&quot;%s (%s)&quot;</span>, remminamain-&gt;<a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-&gt;<a class="code" href="struct___remmina_main_priv.html#a606c7e6dc78219e8e5536519db723a4d">selected_name</a>, remminamain-&gt;<a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-&gt;<a class="code" href="struct___remmina_main_priv.html#a092aebd62ba9fe50c899e416361c1d00">selected_filename</a>);</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; gtk_statusbar_push(remminamain-&gt;<a class="code" href="struct___remmina_main.html#acacd90f3e6df6a864154edba01464ae2">statusbar_main</a>, context_id, buf);</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; gtk_statusbar_push(remminamain-&gt;<a class="code" href="struct___remmina_main.html#acacd90f3e6df6a864154edba01464ae2">statusbar_main</a>, context_id, remminamain-&gt;<a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-&gt;<a class="code" href="struct___remmina_main_priv.html#a606c7e6dc78219e8e5536519db723a4d">selected_name</a>);</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; }</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160;</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160;}</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160;</div><div class="line"><a name="l00352"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#a71f485dba1b11bf8cba129920767b5e6"> 352</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__main_8c.html#a71f485dba1b11bf8cba129920767b5e6">remmina_main_load_file_list_callback</a>(<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile, gpointer user_data)</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160;{</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; GtkTreeIter iter;</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; GtkListStore *store;</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160;</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; store = GTK_LIST_STORE(user_data);</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; gchar *datetime;</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160;</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; datetime = <a class="code" href="remmina__file_8c.html#a96abbfdc183d1e82fdffd6445d611ffe">remmina_file_get_datetime</a>(remminafile);</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; gtk_list_store_append(store, &amp;iter);</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; gtk_list_store_set(store, &amp;iter,</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; <a class="code" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a2b637b91fededa6eb7f4be69da080445">PROTOCOL_COLUMN</a>, <a class="code" href="remmina__file_8c.html#a2feb8e9e32f3ff4e2fac836e67a77331">remmina_file_get_icon_name</a>(remminafile),</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; <a class="code" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a1f8f29e04fd120da5a66491ef0a4ff6c">NAME_COLUMN</a>, <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">&quot;name&quot;</span>),</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; <a class="code" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a348c0cf6892b36818d9825dddc25f8e3">NOTES_COLUMN</a>, g_uri_unescape_string(<a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">&quot;notes_text&quot;</span>), NULL),</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; <a class="code" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a1704de86134c42b13d2e5fd7cf7c903b">GROUP_COLUMN</a>, <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">&quot;group&quot;</span>),</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; <a class="code" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a8c129f382d9456db6f671e1e6e99d32f">SERVER_COLUMN</a>, <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">&quot;server&quot;</span>),</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; <a class="code" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388ad68c7d7d2f1cfe0321e87c4a833a0756">PLUGIN_COLUMN</a>, <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">&quot;protocol&quot;</span>),</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; <a class="code" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a6e22c76fbdeaa8f724eb996db2d528bb">DATE_COLUMN</a>, datetime,</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; <a class="code" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a8c5d264253ed2fc8f96ffcee508db93d">FILENAME_COLUMN</a>, <a class="code" href="remmina__file_8c.html#ad1e4f3a0f64cd98e301044b6c38a1f1d">remmina_file_get_filename</a>(remminafile),</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; <a class="code" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a4d053f07c7bfa18ee1db38382a64c454">LABELS_COLUMN</a>, <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">&quot;labels&quot;</span>),</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; -1);</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; g_free(datetime);</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160;}</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160;</div><div class="line"><a name="l00377"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#a2a6ba822ef89ef8ad9f19340c2c8b7f5"> 377</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="remmina__main_8c.html#a2a6ba822ef89ef8ad9f19340c2c8b7f5">remmina_main_load_file_tree_traverse</a>(GNode *<a class="code" href="remmina__ssh_8c.html#a85d5bd836f83ef1dbbcf4657f32e0792">node</a>, GtkTreeStore *store, GtkTreeIter *parent)</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160;{</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; GtkTreeIter *iter;</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; <a class="code" href="remmina__file__manager_8h.html#a0155f52ba9a28e2aa0ea5d831f5d2c90">RemminaGroupData</a> *data;</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; GNode *child;</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160;</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; iter = NULL;</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; <span class="keywordflow">if</span> (node-&gt;data) {</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; data = (<a class="code" href="remmina__file__manager_8h.html#a0155f52ba9a28e2aa0ea5d831f5d2c90">RemminaGroupData</a> *)node-&gt;data;</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; iter = g_new0(GtkTreeIter, 1);</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; gtk_tree_store_append(store, iter, parent);</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; gtk_tree_store_set(store, iter,</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; <a class="code" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a2b637b91fededa6eb7f4be69da080445">PROTOCOL_COLUMN</a>, <span class="stringliteral">&quot;folder-symbolic&quot;</span>,</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; <a class="code" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a1f8f29e04fd120da5a66491ef0a4ff6c">NAME_COLUMN</a>, data-&gt;name,</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; <a class="code" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a1704de86134c42b13d2e5fd7cf7c903b">GROUP_COLUMN</a>, data-&gt;group,</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; <a class="code" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a6e22c76fbdeaa8f724eb996db2d528bb">DATE_COLUMN</a>, data-&gt;datetime,</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <a class="code" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a8c5d264253ed2fc8f96ffcee508db93d">FILENAME_COLUMN</a>, NULL,</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; <a class="code" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a4d053f07c7bfa18ee1db38382a64c454">LABELS_COLUMN</a>, data-&gt;labels,</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; -1);</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; }</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; <span class="keywordflow">for</span> (child = g_node_first_child(node); child; child = g_node_next_sibling(child))</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; <a class="code" href="remmina__main_8c.html#a2a6ba822ef89ef8ad9f19340c2c8b7f5">remmina_main_load_file_tree_traverse</a>(child, store, iter);</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; g_free(iter);</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160;}</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160;</div><div class="line"><a name="l00404"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#aa46e6b815c241d32a476a29053dbf296"> 404</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__main_8c.html#aa46e6b815c241d32a476a29053dbf296">remmina_main_load_file_tree_group</a>(GtkTreeStore *store)</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160;{</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; GNode *root;</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160;</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; root = <a class="code" href="remmina__file__manager_8c.html#a6593a3f297f420f012405fa582819857">remmina_file_manager_get_group_tree</a>();</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; <a class="code" href="remmina__main_8c.html#a2a6ba822ef89ef8ad9f19340c2c8b7f5">remmina_main_load_file_tree_traverse</a>(root, store, NULL);</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; <a class="code" href="remmina__file__manager_8c.html#a06196f19abc15526514a5aa59a568798">remmina_file_manager_free_group_tree</a>(root);</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160;}</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160;</div><div class="line"><a name="l00414"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#a74cb130b886c2b905f651e777644a08c"> 414</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__main_8c.html#a74cb130b886c2b905f651e777644a08c">remmina_main_expand_group_traverse</a>(GtkTreeIter *iter)</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160;{</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; GtkTreeModel *tree;</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; gboolean ret;</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; gchar *group, *filename;</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; GtkTreeIter child;</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; GtkTreePath *path;</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160;</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; tree = remminamain-&gt;<a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-&gt;<a class="code" href="struct___remmina_main_priv.html#a87a88c763f806d76fdee5a233c3ad7cd">file_model_sort</a>;</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; ret = TRUE;</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; <span class="keywordflow">while</span> (ret) {</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; gtk_tree_model_get(tree, iter, <a class="code" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a1704de86134c42b13d2e5fd7cf7c903b">GROUP_COLUMN</a>, &amp;group, <a class="code" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a8c5d264253ed2fc8f96ffcee508db93d">FILENAME_COLUMN</a>, &amp;filename, -1);</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; <span class="keywordflow">if</span> (filename == NULL) {</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="remmina__string__array_8c.html#ab93a69850cfb4117c223a3f145ced986">remmina_string_array_find</a>(remminamain-&gt;<a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-&gt;<a class="code" href="struct___remmina_main_priv.html#a467cf8ebc87ccdb68b9f88bce95c9f3a">expanded_group</a>, group) &gt;= 0) {</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; path = gtk_tree_model_get_path(tree, iter);</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; gtk_tree_view_expand_row(remminamain-&gt;<a class="code" href="struct___remmina_main.html#a81f987e527d521be54aaf3f46dfe7ced">tree_files_list</a>, path, FALSE);</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; gtk_tree_path_free(path);</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; }</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; <span class="keywordflow">if</span> (gtk_tree_model_iter_children(tree, &amp;child, iter))</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; <a class="code" href="remmina__main_8c.html#a74cb130b886c2b905f651e777644a08c">remmina_main_expand_group_traverse</a>(&amp;child);</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; }</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; g_free(group);</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; g_free(filename);</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160;</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; ret = gtk_tree_model_iter_next(tree, iter);</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; }</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160;}</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160;</div><div class="line"><a name="l00443"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#a4a4733c243f20c3ffc27105003f5e30e"> 443</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__main_8c.html#a4a4733c243f20c3ffc27105003f5e30e">remmina_main_expand_group</a>(<span class="keywordtype">void</span>)</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160;{</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; GtkTreeIter iter;</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160;</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; <span class="keywordflow">if</span> (gtk_tree_model_get_iter_first(remminamain-&gt;<a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-&gt;<a class="code" href="struct___remmina_main_priv.html#a87a88c763f806d76fdee5a233c3ad7cd">file_model_sort</a>, &amp;iter))</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; <a class="code" href="remmina__main_8c.html#a74cb130b886c2b905f651e777644a08c">remmina_main_expand_group_traverse</a>(&amp;iter);</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160;}</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160;</div><div class="line"><a name="l00452"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#a847424fdb97ffe35d060409d4d738497"> 452</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="remmina__main_8c.html#a847424fdb97ffe35d060409d4d738497">remmina_main_load_file_tree_find</a>(GtkTreeModel *tree, GtkTreeIter *iter, <span class="keyword">const</span> gchar *match_group)</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160;{</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; gboolean ret, match;</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; gchar *group, *filename;</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; GtkTreeIter child;</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160;</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; match = FALSE;</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; ret = TRUE;</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; <span class="keywordflow">while</span> (ret) {</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; gtk_tree_model_get(tree, iter, <a class="code" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a1704de86134c42b13d2e5fd7cf7c903b">GROUP_COLUMN</a>, &amp;group, <a class="code" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a8c5d264253ed2fc8f96ffcee508db93d">FILENAME_COLUMN</a>, &amp;filename, -1);</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; match = (filename == NULL &amp;&amp; g_strcmp0(group, match_group) == 0);</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; g_free(group);</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; g_free(filename);</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; <span class="keywordflow">if</span> (match)</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; <span class="keywordflow">if</span> (gtk_tree_model_iter_children(tree, &amp;child, iter)) {</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; match = <a class="code" href="remmina__main_8c.html#a847424fdb97ffe35d060409d4d738497">remmina_main_load_file_tree_find</a>(tree, &amp;child, match_group);</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; <span class="keywordflow">if</span> (match) {</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; memcpy(iter, &amp;child, <span class="keyword">sizeof</span>(GtkTreeIter));</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; }</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; }</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; ret = gtk_tree_model_iter_next(tree, iter);</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; }</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; <span class="keywordflow">return</span> match;</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160;}</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160;</div><div class="line"><a name="l00480"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#ae32574ebe06b1a24f135af9379e663b4"> 480</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__main_8c.html#ae32574ebe06b1a24f135af9379e663b4">remmina_main_load_file_tree_callback</a>(<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile, gpointer user_data)</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160;{</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; GtkTreeIter iter, child;</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; GtkTreeStore *store;</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; gboolean found;</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; gchar *datetime = NULL;</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160;</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; store = GTK_TREE_STORE(user_data);</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160;</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; found = FALSE;</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; <span class="keywordflow">if</span> (gtk_tree_model_get_iter_first(GTK_TREE_MODEL(store), &amp;iter))</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; found = <a class="code" href="remmina__main_8c.html#a847424fdb97ffe35d060409d4d738497">remmina_main_load_file_tree_find</a>(GTK_TREE_MODEL(store), &amp;iter,</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">&quot;group&quot;</span>));</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160;</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; datetime = <a class="code" href="remmina__file_8c.html#a96abbfdc183d1e82fdffd6445d611ffe">remmina_file_get_datetime</a>(remminafile);</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; <span class="comment">//REMMINA_DEBUG(&quot;The date is %s&quot;, datetime);</span></div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; gtk_tree_store_append(store, &amp;child, (found ? &amp;iter : NULL));</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; gtk_tree_store_set(store, &amp;child,</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; <a class="code" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a2b637b91fededa6eb7f4be69da080445">PROTOCOL_COLUMN</a>, <a class="code" href="remmina__file_8c.html#a2feb8e9e32f3ff4e2fac836e67a77331">remmina_file_get_icon_name</a>(remminafile),</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; <a class="code" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a1f8f29e04fd120da5a66491ef0a4ff6c">NAME_COLUMN</a>, <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">&quot;name&quot;</span>),</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; <a class="code" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a348c0cf6892b36818d9825dddc25f8e3">NOTES_COLUMN</a>, g_uri_unescape_string(<a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">&quot;notes_text&quot;</span>), NULL),</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; <a class="code" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a1704de86134c42b13d2e5fd7cf7c903b">GROUP_COLUMN</a>, <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">&quot;group&quot;</span>),</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; <a class="code" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a8c129f382d9456db6f671e1e6e99d32f">SERVER_COLUMN</a>, <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">&quot;server&quot;</span>),</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; <a class="code" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388ad68c7d7d2f1cfe0321e87c4a833a0756">PLUGIN_COLUMN</a>, <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">&quot;protocol&quot;</span>),</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; <a class="code" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a6e22c76fbdeaa8f724eb996db2d528bb">DATE_COLUMN</a>, datetime,</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; <a class="code" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a8c5d264253ed2fc8f96ffcee508db93d">FILENAME_COLUMN</a>, <a class="code" href="remmina__file_8c.html#ad1e4f3a0f64cd98e301044b6c38a1f1d">remmina_file_get_filename</a>(remminafile),</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; <a class="code" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a4d053f07c7bfa18ee1db38382a64c454">LABELS_COLUMN</a>, <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">&quot;labels&quot;</span>),</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; -1);</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; g_free(datetime);</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160;}</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160;</div><div class="line"><a name="l00512"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#a71fbe206a9c2abb8f348ee598d7751b7"> 512</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__main_8c.html#a71fbe206a9c2abb8f348ee598d7751b7">remmina_main_file_model_on_sort</a>(GtkTreeSortable *sortable, gpointer user_data)</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160;{</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; gint columnid;</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; GtkSortType order;</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160;</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; gtk_tree_sortable_get_sort_column_id(sortable, &amp;columnid, &amp;order);</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ac13f1310a2625b29defdf5b0ba8fd2d0">main_sort_column_id</a> = columnid;</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a4504684f0e67bb50157fd6862182e2c4">main_sort_order</a> = order;</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; <a class="code" href="remmina__pref_8c.html#ae17aaf37449083a4322b6748c8f3a39f">remmina_pref_save</a>();</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160;}</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160;</div><div class="line"><a name="l00524"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#ab0d22f0e3571eb80886acb0c68005800"> 524</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="remmina__main_8c.html#ab0d22f0e3571eb80886acb0c68005800">remmina_main_filter_visible_func</a>(GtkTreeModel *model, GtkTreeIter *iter, gpointer user_data)</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160;{</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; gchar *text;</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; gchar *protocol, *name, *labels, *group, *server, *plugin, *date, *s;</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; gboolean result = TRUE;</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160;</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; text = g_ascii_strdown(gtk_entry_get_text(remminamain-&gt;<a class="code" href="struct___remmina_main.html#ac2eff9c56cc7830bcf9ca4bfdf216095">entry_quick_connect_server</a>), -1);</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; <span class="keywordflow">if</span> (text &amp;&amp; text[0]) {</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; gtk_tree_model_get(model, iter,</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; <a class="code" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a2b637b91fededa6eb7f4be69da080445">PROTOCOL_COLUMN</a>, &amp;protocol,</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; <a class="code" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a1f8f29e04fd120da5a66491ef0a4ff6c">NAME_COLUMN</a>, &amp;name,</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; <a class="code" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a1704de86134c42b13d2e5fd7cf7c903b">GROUP_COLUMN</a>, &amp;group,</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; <a class="code" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a8c129f382d9456db6f671e1e6e99d32f">SERVER_COLUMN</a>, &amp;server,</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; <a class="code" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388ad68c7d7d2f1cfe0321e87c4a833a0756">PLUGIN_COLUMN</a>, &amp;plugin,</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; <a class="code" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a6e22c76fbdeaa8f724eb996db2d528bb">DATE_COLUMN</a>, &amp;date,</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; <a class="code" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a4d053f07c7bfa18ee1db38382a64c454">LABELS_COLUMN</a>, &amp;labels,</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; -1);</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; <span class="keywordflow">if</span> (g_strcmp0(protocol, <span class="stringliteral">&quot;folder-symbolic&quot;</span>) != 0) {</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; s = g_ascii_strdown(name ? name : <span class="stringliteral">&quot;&quot;</span>, -1);</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; g_free(name);</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; name = s;</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; s = g_ascii_strdown(group ? group : <span class="stringliteral">&quot;&quot;</span>, -1);</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; g_free(group);</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; group = s;</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; s = g_ascii_strdown(server ? server : <span class="stringliteral">&quot;&quot;</span>, -1);</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; g_free(server);</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; server = s;</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; s = g_ascii_strdown(plugin ? plugin : <span class="stringliteral">&quot;&quot;</span>, -1);</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; g_free(plugin);</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; plugin = s;</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; s = g_ascii_strdown(date ? date : <span class="stringliteral">&quot;&quot;</span>, -1);</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; g_free(date);</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; date = s;</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; result = (strstr(name, text) || strstr(group, text) || strstr(server, text) || strstr(plugin, text) || strstr(date, text));</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160;</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; <span class="comment">// Filter by labels</span></div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160;</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; s = g_ascii_strdown(labels ? labels : <span class="stringliteral">&quot;&quot;</span>, -1);</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; g_free(labels);</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; labels = s;</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160;</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; <span class="keywordflow">if</span> (strlen(labels) &gt; 0) {</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; gboolean labels_result = TRUE;</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; gchar **labels_array = g_strsplit(labels, <span class="stringliteral">&quot;,&quot;</span>, -1);</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; gchar **text_array = g_strsplit(text, <span class="stringliteral">&quot;,&quot;</span>, -1);</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160;</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> t = 0; (NULL != text_array[t]); t++) {</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; <span class="keywordflow">if</span> (0 == strlen(text_array[t])) {</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; }</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160;</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; gboolean text_result = FALSE;</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160;</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> l = 0; (NULL != labels_array[l]); l++) {</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; <span class="keywordflow">if</span> (0 == strlen(labels_array[l])) {</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; }</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160;</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; text_result = (text_result || strstr(labels_array[l], text_array[t]));</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160;</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; <span class="keywordflow">if</span> (text_result) {</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; }</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; }</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160;</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; labels_result = (labels_result &amp;&amp; text_result);</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160;</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; <span class="keywordflow">if</span> (!labels_result) {</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; }</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; }</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160;</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; result = (result || labels_result);</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160;</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; g_strfreev(labels_array);</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; g_strfreev(text_array);</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; }</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; }</div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; g_free(protocol);</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; g_free(name);</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160; g_free(labels);</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; g_free(group);</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; g_free(server);</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; g_free(plugin);</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; g_free(date);</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; }</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; g_free(text);</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160;}</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160;</div><div class="line"><a name="l00615"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#aa20963aed43242994c88d5a97a546355"> 615</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__main_8c.html#aa20963aed43242994c88d5a97a546355">remmina_main_select_file</a>(<span class="keyword">const</span> gchar *filename)</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160;{</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; GtkTreeIter iter;</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; GtkTreePath *path;</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; gchar *item_filename;</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; gboolean cmp;</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160;</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; <span class="keywordflow">if</span> (!gtk_tree_model_get_iter_first(remminamain-&gt;<a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-&gt;<a class="code" href="struct___remmina_main_priv.html#a87a88c763f806d76fdee5a233c3ad7cd">file_model_sort</a>, &amp;iter))</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160;</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; <span class="keywordflow">while</span> (TRUE) {</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; gtk_tree_model_get(remminamain-&gt;<a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-&gt;<a class="code" href="struct___remmina_main_priv.html#a87a88c763f806d76fdee5a233c3ad7cd">file_model_sort</a>, &amp;iter, <a class="code" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a8c5d264253ed2fc8f96ffcee508db93d">FILENAME_COLUMN</a>, &amp;item_filename, -1);</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; cmp = g_strcmp0(item_filename, filename);</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; g_free(item_filename);</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; <span class="keywordflow">if</span> (cmp == 0) {</div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; gtk_tree_selection_select_iter(gtk_tree_view_get_selection(remminamain-&gt;<a class="code" href="struct___remmina_main.html#a81f987e527d521be54aaf3f46dfe7ced">tree_files_list</a>),</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; &amp;iter);</div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; path = gtk_tree_model_get_path(remminamain-&gt;<a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-&gt;<a class="code" href="struct___remmina_main_priv.html#a87a88c763f806d76fdee5a233c3ad7cd">file_model_sort</a>, &amp;iter);</div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; gtk_tree_view_scroll_to_cell(remminamain-&gt;<a class="code" href="struct___remmina_main.html#a81f987e527d521be54aaf3f46dfe7ced">tree_files_list</a>, path, NULL, TRUE, 0.5, 0.0);</div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; gtk_tree_path_free(path);</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; }</div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160; <span class="keywordflow">if</span> (!gtk_tree_model_iter_next(remminamain-&gt;<a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-&gt;<a class="code" href="struct___remmina_main_priv.html#a87a88c763f806d76fdee5a233c3ad7cd">file_model_sort</a>, &amp;iter))</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; }</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160;}</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160;</div><div class="line"><a name="l00643"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#a3617295e74fa84edbd41dedc601402a7"> 643</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__main_8c.html#a3617295e74fa84edbd41dedc601402a7">remmina_main_load_files</a>()</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160;{</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; gint items_count;</div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; gchar buf[200];</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160; guint context_id;</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160; gint view_file_mode;</div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160; gboolean always_show_notes;</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; <span class="keywordtype">char</span> *save_selected_filename;</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; GtkTreeModel *newmodel;</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; <span class="keyword">const</span> gchar *neticon;</div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; <span class="keyword">const</span> gchar *connection_tooltip;</div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160;</div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; save_selected_filename = g_strdup(remminamain-&gt;<a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-&gt;<a class="code" href="struct___remmina_main_priv.html#a092aebd62ba9fe50c899e416361c1d00">selected_filename</a>);</div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; <a class="code" href="remmina__main_8c.html#ad8744dc59ba8072ffdf557b6c94e9f40">remmina_main_save_expanded_group</a>();</div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160;</div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160; view_file_mode = <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ab43c3da7d8551c9df726996c540726f1">view_file_mode</a>;</div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160; <span class="keywordflow">if</span> (remminamain-&gt;<a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-&gt;<a class="code" href="struct___remmina_main_priv.html#a0307278dd7770ab490f4687f2eb00e76">override_view_file_mode_to_list</a>)</div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; view_file_mode = <a class="code" href="remmina__pref_8h.html#aac34dfe6c6b73b43a4656c9dce041034ae2bd62151481c5fa5823aa2d66fb67d7">REMMINA_VIEW_FILE_LIST</a>;</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160;</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; <span class="keywordflow">switch</span> (<a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ab43c3da7d8551c9df726996c540726f1">view_file_mode</a>) {</div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160; <span class="keywordflow">case</span> <a class="code" href="remmina__pref_8h.html#aac34dfe6c6b73b43a4656c9dce041034a46530ebfd659963a54b7dae5702af1df">REMMINA_VIEW_FILE_TREE</a>:</div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160; gtk_toggle_button_set_active(remminamain-&gt;<a class="code" href="struct___remmina_main.html#ae3c2c0b9855bb44b5b9a27a3178d32e7">view_toggle_button</a>, FALSE);</div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160; <span class="keywordflow">case</span> <a class="code" href="remmina__pref_8h.html#aac34dfe6c6b73b43a4656c9dce041034ae2bd62151481c5fa5823aa2d66fb67d7">REMMINA_VIEW_FILE_LIST</a>:</div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160; gtk_toggle_button_set_active(remminamain-&gt;<a class="code" href="struct___remmina_main.html#ae3c2c0b9855bb44b5b9a27a3178d32e7">view_toggle_button</a>, TRUE);</div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160; }</div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160;</div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160; <span class="keywordflow">switch</span> (view_file_mode) {</div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160; <span class="keywordflow">case</span> <a class="code" href="remmina__pref_8h.html#aac34dfe6c6b73b43a4656c9dce041034a46530ebfd659963a54b7dae5702af1df">REMMINA_VIEW_FILE_TREE</a>:</div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160; <span class="comment">/* Create new GtkTreeStore model */</span></div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160; newmodel = GTK_TREE_MODEL(gtk_tree_store_new(9, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING));</div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160; <span class="comment">/* Hide the Group column in the tree view mode */</span></div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160; gtk_tree_view_column_set_visible(remminamain-&gt;<a class="code" href="struct___remmina_main.html#a56ac6ffe61c0d3663ebc6b26e65a8cbc">column_files_list_group</a>, FALSE);</div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160; <span class="comment">/* Load groups first */</span></div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160; <a class="code" href="remmina__main_8c.html#aa46e6b815c241d32a476a29053dbf296">remmina_main_load_file_tree_group</a>(GTK_TREE_STORE(newmodel));</div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160; <span class="comment">/* Load files list */</span></div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160; items_count = <a class="code" href="remmina__file__manager_8c.html#a55a717aafc046713380bd2c55f29165a">remmina_file_manager_iterate</a>((GFunc)<a class="code" href="remmina__main_8c.html#ae32574ebe06b1a24f135af9379e663b4">remmina_main_load_file_tree_callback</a>, (gpointer)newmodel);</div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160;</div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160; <span class="keywordflow">case</span> <a class="code" href="remmina__pref_8h.html#aac34dfe6c6b73b43a4656c9dce041034ae2bd62151481c5fa5823aa2d66fb67d7">REMMINA_VIEW_FILE_LIST</a>:</div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160; <span class="comment">/* Create new GtkListStore model */</span></div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160; newmodel = GTK_TREE_MODEL(gtk_list_store_new(9, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING));</div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160; <span class="comment">/* Show the Group column in the list view mode */</span></div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160; gtk_tree_view_column_set_visible(remminamain-&gt;<a class="code" href="struct___remmina_main.html#a56ac6ffe61c0d3663ebc6b26e65a8cbc">column_files_list_group</a>, TRUE);</div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160; <span class="comment">/* Load files list */</span></div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160; items_count = <a class="code" href="remmina__file__manager_8c.html#a55a717aafc046713380bd2c55f29165a">remmina_file_manager_iterate</a>((GFunc)<a class="code" href="remmina__main_8c.html#a71f485dba1b11bf8cba129920767b5e6">remmina_main_load_file_list_callback</a>, (gpointer)newmodel);</div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160; }</div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160;</div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160; <span class="comment">/* Set note column visibility*/</span></div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160; always_show_notes = <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a320861799b86dc076d5f87e3a216eb95">always_show_notes</a>;</div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160; <span class="keywordflow">if</span> (!always_show_notes){</div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160; gtk_tree_view_column_set_visible(remminamain-&gt;<a class="code" href="struct___remmina_main.html#ab743fa626843d8fbb669fbd01819aea9">column_files_list_notes</a>, FALSE);</div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160; }</div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160;</div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160; <span class="comment">/* Unset old model */</span></div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160; gtk_tree_view_set_model(remminamain-&gt;<a class="code" href="struct___remmina_main.html#a81f987e527d521be54aaf3f46dfe7ced">tree_files_list</a>, NULL);</div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160;</div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; <span class="comment">/* Destroy the old model and save the new one */</span></div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; remminamain-&gt;<a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-&gt;<a class="code" href="struct___remmina_main_priv.html#aec4c4540e9463a45b22a5c0b9108bc6f">file_model</a> = newmodel;</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160;</div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160; <span class="comment">/* Create a sorted filtered model based on newmodel and apply it to the TreeView */</span></div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160; remminamain-&gt;<a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-&gt;<a class="code" href="struct___remmina_main_priv.html#ae1e1d579bdb2517bd0f86408b9d5f97c">file_model_filter</a> = gtk_tree_model_filter_new(remminamain-&gt;<a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-&gt;<a class="code" href="struct___remmina_main_priv.html#aec4c4540e9463a45b22a5c0b9108bc6f">file_model</a>, NULL);</div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160; gtk_tree_model_filter_set_visible_func(GTK_TREE_MODEL_FILTER(remminamain-&gt;<a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-&gt;<a class="code" href="struct___remmina_main_priv.html#ae1e1d579bdb2517bd0f86408b9d5f97c">file_model_filter</a>),</div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160; (GtkTreeModelFilterVisibleFunc)<a class="code" href="remmina__main_8c.html#ab0d22f0e3571eb80886acb0c68005800">remmina_main_filter_visible_func</a>, NULL, NULL);</div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160; remminamain-&gt;<a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-&gt;<a class="code" href="struct___remmina_main_priv.html#a87a88c763f806d76fdee5a233c3ad7cd">file_model_sort</a> = gtk_tree_model_sort_new_with_model(remminamain-&gt;<a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-&gt;<a class="code" href="struct___remmina_main_priv.html#ae1e1d579bdb2517bd0f86408b9d5f97c">file_model_filter</a>);</div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(remminamain-&gt;<a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-&gt;<a class="code" href="struct___remmina_main_priv.html#a87a88c763f806d76fdee5a233c3ad7cd">file_model_sort</a>),</div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ac13f1310a2625b29defdf5b0ba8fd2d0">main_sort_column_id</a>,</div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a4504684f0e67bb50157fd6862182e2c4">main_sort_order</a>);</div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; gtk_tree_view_set_model(remminamain-&gt;<a class="code" href="struct___remmina_main.html#a81f987e527d521be54aaf3f46dfe7ced">tree_files_list</a>, remminamain-&gt;<a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-&gt;<a class="code" href="struct___remmina_main_priv.html#a87a88c763f806d76fdee5a233c3ad7cd">file_model_sort</a>);</div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160; g_signal_connect(G_OBJECT(remminamain-&gt;<a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-&gt;<a class="code" href="struct___remmina_main_priv.html#a87a88c763f806d76fdee5a233c3ad7cd">file_model_sort</a>), <span class="stringliteral">&quot;sort-column-changed&quot;</span>,</div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; G_CALLBACK(<a class="code" href="remmina__main_8c.html#a71fbe206a9c2abb8f348ee598d7751b7">remmina_main_file_model_on_sort</a>), NULL);</div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160; <a class="code" href="remmina__main_8c.html#a4a4733c243f20c3ffc27105003f5e30e">remmina_main_expand_group</a>();</div><div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160; <span class="comment">/* Select the file previously selected */</span></div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160; <span class="keywordflow">if</span> (save_selected_filename) {</div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160; <a class="code" href="remmina__main_8c.html#aa20963aed43242994c88d5a97a546355">remmina_main_select_file</a>(save_selected_filename);</div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160; g_free(save_selected_filename);</div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160; }</div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160; gtk_tree_view_column_set_widget(remminamain-&gt;<a class="code" href="struct___remmina_main.html#a1ffeff8198ae0dc7c2461001118fcc5a">column_files_list_date</a>, NULL);</div><div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160;</div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160; GtkWidget *label = gtk_tree_view_column_get_button(remminamain-&gt;<a class="code" href="struct___remmina_main.html#a1ffeff8198ae0dc7c2461001118fcc5a">column_files_list_date</a>);</div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160;</div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160; gtk_widget_set_tooltip_text(GTK_WIDGET(label),</div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160; _(<span class="stringliteral">&quot;The latest successful connection attempt, or a pre-computed date&quot;</span>));</div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160; <span class="comment">/* Show in the status bar the total number of connections found */</span></div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160; g_snprintf(buf, <span class="keyword">sizeof</span>(buf), ngettext(<span class="stringliteral">&quot;Total %i item.&quot;</span>, <span class="stringliteral">&quot;Total %i items.&quot;</span>, items_count), items_count);</div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160; context_id = gtk_statusbar_get_context_id(remminamain-&gt;<a class="code" href="struct___remmina_main.html#acacd90f3e6df6a864154edba01464ae2">statusbar_main</a>, <span class="stringliteral">&quot;status&quot;</span>);</div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160; gtk_statusbar_pop(remminamain-&gt;<a class="code" href="struct___remmina_main.html#acacd90f3e6df6a864154edba01464ae2">statusbar_main</a>, context_id);</div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160; gtk_statusbar_push(remminamain-&gt;<a class="code" href="struct___remmina_main.html#acacd90f3e6df6a864154edba01464ae2">statusbar_main</a>, context_id, buf);</div><div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160;</div><div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160; <a class="code" href="remmina__monitor_8c.html#acf79b91eb05694ec967d726bd0f85e50">remmina_network_monitor_status</a> (remminamain-&gt;<a class="code" href="struct___remmina_main.html#a0e6602776373cf6a198d249df6e87150">monitor</a>);</div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160; <span class="keywordflow">if</span> (remminamain-&gt;<a class="code" href="struct___remmina_main.html#a0e6602776373cf6a198d249df6e87150">monitor</a>-&gt;<a class="code" href="struct___remmina_monitor.html#adaa8ac5463302ab18a45171b5e4618f1">connected</a>){</div><div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160; neticon = g_strdup(<span class="stringliteral">&quot;network-transmit-receive-symbolic&quot;</span>);</div><div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160; connection_tooltip = g_strdup(_(<span class="stringliteral">&quot;Network status: fully online&quot;</span>));</div><div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160; neticon = g_strdup(<span class="stringliteral">&quot;network-offline-symbolic&quot;</span>);</div><div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160; connection_tooltip = g_strdup(_(<span class="stringliteral">&quot;Network status: offline&quot;</span>));</div><div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160; }</div><div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160;</div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160; <span class="keywordflow">if</span> (GTK_IS_WIDGET(remminamain-&gt;<a class="code" href="struct___remmina_main.html#a0995d06fd3cad6098f0ecfaca9ed616f">network_icon</a>))</div><div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160; gtk_widget_destroy(remminamain-&gt;<a class="code" href="struct___remmina_main.html#a0995d06fd3cad6098f0ecfaca9ed616f">network_icon</a>);</div><div class="line"><a name="l00748"></a><span class="lineno"> 748</span>&#160; GIcon *icon = g_themed_icon_new (neticon);</div><div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160; remminamain-&gt;<a class="code" href="struct___remmina_main.html#a0995d06fd3cad6098f0ecfaca9ed616f">network_icon</a> = gtk_image_new_from_gicon (icon, GTK_ICON_SIZE_BUTTON);</div><div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160; gtk_widget_set_tooltip_text (remminamain-&gt;<a class="code" href="struct___remmina_main.html#a0995d06fd3cad6098f0ecfaca9ed616f">network_icon</a>, connection_tooltip);</div><div class="line"><a name="l00751"></a><span class="lineno"> 751</span>&#160;</div><div class="line"><a name="l00752"></a><span class="lineno"> 752</span>&#160; g_object_unref (icon);</div><div class="line"><a name="l00753"></a><span class="lineno"> 753</span>&#160;</div><div class="line"><a name="l00754"></a><span class="lineno"> 754</span>&#160; gtk_box_pack_start (GTK_BOX(remminamain-&gt;<a class="code" href="struct___remmina_main.html#acacd90f3e6df6a864154edba01464ae2">statusbar_main</a>), remminamain-&gt;<a class="code" href="struct___remmina_main.html#a0995d06fd3cad6098f0ecfaca9ed616f">network_icon</a>, FALSE, FALSE, 0);</div><div class="line"><a name="l00755"></a><span class="lineno"> 755</span>&#160; gtk_widget_show (remminamain-&gt;<a class="code" href="struct___remmina_main.html#a0995d06fd3cad6098f0ecfaca9ed616f">network_icon</a>);</div><div class="line"><a name="l00756"></a><span class="lineno"> 756</span>&#160;</div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span>&#160;}</div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160;</div><div class="line"><a name="l00759"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#a627eb26ab02f0093365ed6b10dab0320"> 759</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__main_8c.html#a627eb26ab02f0093365ed6b10dab0320">remmina_main_load_files_cb</a>(GtkEntry *entry, <span class="keywordtype">char</span> *<span class="keywordtype">string</span>, gpointer user_data)</div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160;{</div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00762"></a><span class="lineno"> 762</span>&#160; <a class="code" href="remmina__main_8c.html#a3617295e74fa84edbd41dedc601402a7">remmina_main_load_files</a>();</div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160;}</div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span>&#160;</div><div class="line"><a name="l00765"></a><span class="lineno"><a class="line" href="remmina__main_8h.html#a6b30ed832369f3a7153aa63f98873c9d"> 765</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__main_8c.html#a6b30ed832369f3a7153aa63f98873c9d">remmina_main_on_action_connection_connect</a>(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160;{</div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160;</div><div class="line"><a name="l00769"></a><span class="lineno"> 769</span>&#160; <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile;</div><div class="line"><a name="l00770"></a><span class="lineno"> 770</span>&#160;</div><div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160; <span class="keywordflow">if</span> (!remminamain-&gt;<a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-&gt;<a class="code" href="struct___remmina_main_priv.html#a092aebd62ba9fe50c899e416361c1d00">selected_filename</a>)</div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160;</div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160; remminafile = <a class="code" href="remmina__file_8c.html#ac1cc2d7f827f7d64c7fd3edf10e9383e">remmina_file_load</a>(remminamain-&gt;<a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-&gt;<a class="code" href="struct___remmina_main_priv.html#a092aebd62ba9fe50c899e416361c1d00">selected_filename</a>);</div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span>&#160;</div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160; <span class="keywordflow">if</span> (remminafile == NULL)</div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160;</div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="remmina__pref_8c.html#a9a8d02227eb703bccc3f9296a5d89d6f">remmina_pref_get_boolean</a>(<span class="stringliteral">&quot;use_primary_password&quot;</span>)</div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160; &amp;&amp; <a class="code" href="remmina__pref_8c.html#a9a8d02227eb703bccc3f9296a5d89d6f">remmina_pref_get_boolean</a>(<span class="stringliteral">&quot;lock_connect&quot;</span>)</div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span>&#160; &amp;&amp; <a class="code" href="remmina__unlock_8c.html#a81e79e5c1c230b7e2bf27b2457801d4e">remmina_unlock_new</a>(remminamain-&gt;<a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a>) == 0)</div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a> (remminafile, <span class="stringliteral">&quot;profile-lock&quot;</span>, FALSE) == 1</div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span>&#160; &amp;&amp; <a class="code" href="remmina__unlock_8c.html#a81e79e5c1c230b7e2bf27b2457801d4e">remmina_unlock_new</a>(remminamain-&gt;<a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a>) == 0)</div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span>&#160;</div><div class="line"><a name="l00787"></a><span class="lineno"> 787</span>&#160; <a class="code" href="remmina__file_8c.html#a3d19095f74e9b7c92d74f11bd5a39a8c">remmina_file_touch</a>(remminafile);</div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160; <a class="code" href="rcw_8c.html#aa37f2a9c56df0ce1a0dbc32f8989e4b5">rcw_open_from_filename</a>(remminamain-&gt;<a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-&gt;<a class="code" href="struct___remmina_main_priv.html#a092aebd62ba9fe50c899e416361c1d00">selected_filename</a>);</div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160;</div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span>&#160; <a class="code" href="remmina__file_8c.html#abd2f06bf0a5ddcf7156e5ef7d0c8d4d7">remmina_file_free</a>(remminafile);</div><div class="line"><a name="l00791"></a><span class="lineno"> 791</span>&#160;}</div><div class="line"><a name="l00792"></a><span class="lineno"> 792</span>&#160;</div><div class="line"><a name="l00793"></a><span class="lineno"><a class="line" href="remmina__main_8h.html#abcf8bd8ca57b389264ff9739a61efdc1"> 793</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__main_8c.html#abcf8bd8ca57b389264ff9739a61efdc1">remmina_main_on_action_connection_external_tools</a>(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160;{</div><div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00796"></a><span class="lineno"> 796</span>&#160; <span class="keywordflow">if</span> (!remminamain-&gt;<a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-&gt;<a class="code" href="struct___remmina_main_priv.html#a092aebd62ba9fe50c899e416361c1d00">selected_filename</a>)</div><div class="line"><a name="l00797"></a><span class="lineno"> 797</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00798"></a><span class="lineno"> 798</span>&#160;</div><div class="line"><a name="l00799"></a><span class="lineno"> 799</span>&#160; <a class="code" href="remmina__external__tools_8c.html#abe70273f7d1cbab092c6f6017695c56d">remmina_external_tools_from_filename</a>(remminamain, remminamain-&gt;<a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-&gt;<a class="code" href="struct___remmina_main_priv.html#a092aebd62ba9fe50c899e416361c1d00">selected_filename</a>);</div><div class="line"><a name="l00800"></a><span class="lineno"> 800</span>&#160;}</div><div class="line"><a name="l00801"></a><span class="lineno"> 801</span>&#160;</div><div class="line"><a name="l00802"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#a6a466d0b07944e619bd9b0e473c8a5bd"> 802</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__main_8c.html#a6a466d0b07944e619bd9b0e473c8a5bd">remmina_main_file_editor_destroy</a>(GtkWidget *widget, gpointer user_data)</div><div class="line"><a name="l00803"></a><span class="lineno"> 803</span>&#160;{</div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00805"></a><span class="lineno"> 805</span>&#160;</div><div class="line"><a name="l00806"></a><span class="lineno"> 806</span>&#160; <span class="keywordflow">if</span> (!remminamain)</div><div class="line"><a name="l00807"></a><span class="lineno"> 807</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00808"></a><span class="lineno"> 808</span>&#160; <a class="code" href="remmina__main_8c.html#a3617295e74fa84edbd41dedc601402a7">remmina_main_load_files</a>();</div><div class="line"><a name="l00809"></a><span class="lineno"> 809</span>&#160;}</div><div class="line"><a name="l00810"></a><span class="lineno"> 810</span>&#160;</div><div class="line"><a name="l00811"></a><span class="lineno"><a class="line" href="remmina__main_8h.html#abf51d42fa2c5ce84164b5514b4634229"> 811</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__main_8c.html#abf51d42fa2c5ce84164b5514b4634229">remmina_main_on_action_application_mpchange</a>(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="line"><a name="l00812"></a><span class="lineno"> 812</span>&#160;{</div><div class="line"><a name="l00813"></a><span class="lineno"> 813</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00814"></a><span class="lineno"> 814</span>&#160; <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile;</div><div class="line"><a name="l00815"></a><span class="lineno"> 815</span>&#160;</div><div class="line"><a name="l00816"></a><span class="lineno"> 816</span>&#160; <span class="keyword">const</span> gchar *username;</div><div class="line"><a name="l00817"></a><span class="lineno"> 817</span>&#160; <span class="keyword">const</span> gchar *domain;</div><div class="line"><a name="l00818"></a><span class="lineno"> 818</span>&#160; <span class="keyword">const</span> gchar *group;</div><div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160; <span class="keyword">const</span> gchar *gatewayusername;</div><div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160; <span class="keyword">const</span> gchar *gatewaydomain;</div><div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160;</div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160; username = domain = group = gatewayusername = gatewaydomain = <span class="stringliteral">&quot;&quot;</span>;</div><div class="line"><a name="l00823"></a><span class="lineno"> 823</span>&#160;</div><div class="line"><a name="l00824"></a><span class="lineno"> 824</span>&#160; remminafile = NULL;</div><div class="line"><a name="l00825"></a><span class="lineno"> 825</span>&#160;</div><div class="line"><a name="l00826"></a><span class="lineno"> 826</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="remmina__pref_8c.html#a9a8d02227eb703bccc3f9296a5d89d6f">remmina_pref_get_boolean</a>(<span class="stringliteral">&quot;use_primary_password&quot;</span>)</div><div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160; &amp;&amp; <a class="code" href="remmina__pref_8c.html#a9a8d02227eb703bccc3f9296a5d89d6f">remmina_pref_get_boolean</a>(<span class="stringliteral">&quot;lock_edit&quot;</span>)</div><div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160; &amp;&amp; <a class="code" href="remmina__unlock_8c.html#a81e79e5c1c230b7e2bf27b2457801d4e">remmina_unlock_new</a>(remminamain-&gt;<a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a>) == 0)</div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00830"></a><span class="lineno"> 830</span>&#160;</div><div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160; <span class="keywordflow">if</span> (remminamain-&gt;<a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-&gt;<a class="code" href="struct___remmina_main_priv.html#a092aebd62ba9fe50c899e416361c1d00">selected_filename</a>) {</div><div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160; remminafile = <a class="code" href="remmina__file_8c.html#ac1cc2d7f827f7d64c7fd3edf10e9383e">remmina_file_load</a>(remminamain-&gt;<a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-&gt;<a class="code" href="struct___remmina_main_priv.html#a092aebd62ba9fe50c899e416361c1d00">selected_filename</a>);</div><div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160; <span class="keywordflow">if</span> (remminafile != NULL) {</div><div class="line"><a name="l00834"></a><span class="lineno"> 834</span>&#160; username = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">&quot;username&quot;</span>);</div><div class="line"><a name="l00835"></a><span class="lineno"> 835</span>&#160; domain = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">&quot;domain&quot;</span>);</div><div class="line"><a name="l00836"></a><span class="lineno"> 836</span>&#160; group = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">&quot;group&quot;</span>);</div><div class="line"><a name="l00837"></a><span class="lineno"> 837</span>&#160; gatewayusername = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">&quot;gateway_username&quot;</span>);</div><div class="line"><a name="l00838"></a><span class="lineno"> 838</span>&#160; gatewaydomain = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">&quot;gateway_domain&quot;</span>);</div><div class="line"><a name="l00839"></a><span class="lineno"> 839</span>&#160; }</div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span>&#160; }</div><div class="line"><a name="l00841"></a><span class="lineno"> 841</span>&#160;</div><div class="line"><a name="l00842"></a><span class="lineno"> 842</span>&#160; <a class="code" href="remmina__mpchange_8c.html#aa5a382490ca5e92bc4b124f66d83c4ff">remmina_mpchange_schedule</a>(TRUE, group, domain, username, <span class="stringliteral">&quot;&quot;</span>, gatewayusername, gatewaydomain, <span class="stringliteral">&quot;&quot;</span>);</div><div class="line"><a name="l00843"></a><span class="lineno"> 843</span>&#160;</div><div class="line"><a name="l00844"></a><span class="lineno"> 844</span>&#160; <span class="keywordflow">if</span> (remminafile != NULL)</div><div class="line"><a name="l00845"></a><span class="lineno"> 845</span>&#160; <a class="code" href="remmina__file_8c.html#abd2f06bf0a5ddcf7156e5ef7d0c8d4d7">remmina_file_free</a>(remminafile);</div><div class="line"><a name="l00846"></a><span class="lineno"> 846</span>&#160;}</div><div class="line"><a name="l00847"></a><span class="lineno"> 847</span>&#160;</div><div class="line"><a name="l00848"></a><span class="lineno"><a class="line" href="remmina__main_8h.html#a52cc21537ff003b9d0fbdb9040c811af"> 848</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__main_8c.html#a52cc21537ff003b9d0fbdb9040c811af">remmina_main_on_action_connection_new</a>(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="line"><a name="l00849"></a><span class="lineno"> 849</span>&#160;{</div><div class="line"><a name="l00850"></a><span class="lineno"> 850</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00851"></a><span class="lineno"> 851</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="remmina_8c.html#ab4a9a67c5372ff07b71d0558679ab7ae">kioskmode</a> &amp;&amp; <a class="code" href="remmina_8c.html#ab4a9a67c5372ff07b71d0558679ab7ae">kioskmode</a> == TRUE)</div><div class="line"><a name="l00852"></a><span class="lineno"> 852</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00853"></a><span class="lineno"> 853</span>&#160; GtkWidget *widget;</div><div class="line"><a name="l00854"></a><span class="lineno"> 854</span>&#160;</div><div class="line"><a name="l00855"></a><span class="lineno"> 855</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="remmina__pref_8c.html#a9a8d02227eb703bccc3f9296a5d89d6f">remmina_pref_get_boolean</a>(<span class="stringliteral">&quot;use_primary_password&quot;</span>)</div><div class="line"><a name="l00856"></a><span class="lineno"> 856</span>&#160; &amp;&amp; <a class="code" href="remmina__pref_8c.html#a9a8d02227eb703bccc3f9296a5d89d6f">remmina_pref_get_boolean</a>(<span class="stringliteral">&quot;lock_edit&quot;</span>)</div><div class="line"><a name="l00857"></a><span class="lineno"> 857</span>&#160; &amp;&amp; <a class="code" href="remmina__unlock_8c.html#a81e79e5c1c230b7e2bf27b2457801d4e">remmina_unlock_new</a>(remminamain-&gt;<a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a>) == 0)</div><div class="line"><a name="l00858"></a><span class="lineno"> 858</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00859"></a><span class="lineno"> 859</span>&#160;</div><div class="line"><a name="l00860"></a><span class="lineno"> 860</span>&#160; widget = <a class="code" href="remmina__file__editor_8c.html#aa4e8657ca722e4cce3f3c42c0cfec51e">remmina_file_editor_new</a>();</div><div class="line"><a name="l00861"></a><span class="lineno"> 861</span>&#160; g_signal_connect(G_OBJECT(widget), <span class="stringliteral">&quot;destroy&quot;</span>, G_CALLBACK(<a class="code" href="remmina__main_8c.html#a6a466d0b07944e619bd9b0e473c8a5bd">remmina_main_file_editor_destroy</a>), remminamain);</div><div class="line"><a name="l00862"></a><span class="lineno"> 862</span>&#160; gtk_window_set_transient_for(GTK_WINDOW(widget), remminamain-&gt;<a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a>);</div><div class="line"><a name="l00863"></a><span class="lineno"> 863</span>&#160; gtk_widget_show(widget);</div><div class="line"><a name="l00864"></a><span class="lineno"> 864</span>&#160; <a class="code" href="remmina__main_8c.html#a3617295e74fa84edbd41dedc601402a7">remmina_main_load_files</a>();</div><div class="line"><a name="l00865"></a><span class="lineno"> 865</span>&#160;}</div><div class="line"><a name="l00866"></a><span class="lineno"> 866</span>&#160;</div><div class="line"><a name="l00867"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#af129aea3f5f3ec56b061187a81d43e4c"> 867</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="remmina__main_8c.html#af129aea3f5f3ec56b061187a81d43e4c">remmina_main_search_key_event</a>(GtkWidget *search_entry, GdkEventKey *event, gpointer user_data)</div><div class="line"><a name="l00868"></a><span class="lineno"> 868</span>&#160;{</div><div class="line"><a name="l00869"></a><span class="lineno"> 869</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00870"></a><span class="lineno"> 870</span>&#160; <span class="keywordflow">if</span> (event-&gt;keyval == GDK_KEY_Escape) {</div><div class="line"><a name="l00871"></a><span class="lineno"> 871</span>&#160; gtk_entry_set_text(remminamain-&gt;<a class="code" href="struct___remmina_main.html#ac2eff9c56cc7830bcf9ca4bfdf216095">entry_quick_connect_server</a>, <span class="stringliteral">&quot;&quot;</span>);</div><div class="line"><a name="l00872"></a><span class="lineno"> 872</span>&#160; gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(RM_GET_OBJECT(<span class="stringliteral">&quot;search_toggle&quot;</span>)), FALSE);</div><div class="line"><a name="l00873"></a><span class="lineno"> 873</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l00874"></a><span class="lineno"> 874</span>&#160; }</div><div class="line"><a name="l00875"></a><span class="lineno"> 875</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l00876"></a><span class="lineno"> 876</span>&#160;}</div><div class="line"><a name="l00877"></a><span class="lineno"> 877</span>&#160;</div><div class="line"><a name="l00878"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#a4477897686d091d6f57e7f9401674a8c"> 878</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="remmina__main_8c.html#a4477897686d091d6f57e7f9401674a8c">remmina_main_tree_row_activated</a>(GtkTreeView *tree, GtkTreePath *path, GtkTreeViewColumn *column, gpointer user_data)</div><div class="line"><a name="l00879"></a><span class="lineno"> 879</span>&#160;{</div><div class="line"><a name="l00880"></a><span class="lineno"> 880</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00881"></a><span class="lineno"> 881</span>&#160; <span class="keywordflow">if</span> (gtk_tree_view_row_expanded(tree, path))</div><div class="line"><a name="l00882"></a><span class="lineno"> 882</span>&#160; gtk_tree_view_collapse_row(tree, path);</div><div class="line"><a name="l00883"></a><span class="lineno"> 883</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00884"></a><span class="lineno"> 884</span>&#160; gtk_tree_view_expand_row(tree, path, FALSE);</div><div class="line"><a name="l00885"></a><span class="lineno"> 885</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l00886"></a><span class="lineno"> 886</span>&#160;}</div><div class="line"><a name="l00887"></a><span class="lineno"> 887</span>&#160;</div><div class="line"><a name="l00888"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#ac1a3a51f6d7f6a2411f9b38de860d766"> 888</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__main_8c.html#ac1a3a51f6d7f6a2411f9b38de860d766">remmina_main_on_view_toggle</a>()</div><div class="line"><a name="l00889"></a><span class="lineno"> 889</span>&#160;{</div><div class="line"><a name="l00890"></a><span class="lineno"> 890</span>&#160; <span class="keywordflow">if</span> (gtk_toggle_button_get_active(remminamain-&gt;<a class="code" href="struct___remmina_main.html#ae3c2c0b9855bb44b5b9a27a3178d32e7">view_toggle_button</a>)) {</div><div class="line"><a name="l00891"></a><span class="lineno"> 891</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ab43c3da7d8551c9df726996c540726f1">view_file_mode</a> != <a class="code" href="remmina__pref_8h.html#aac34dfe6c6b73b43a4656c9dce041034ae2bd62151481c5fa5823aa2d66fb67d7">REMMINA_VIEW_FILE_LIST</a>) {</div><div class="line"><a name="l00892"></a><span class="lineno"> 892</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ab43c3da7d8551c9df726996c540726f1">view_file_mode</a> = <a class="code" href="remmina__pref_8h.html#aac34dfe6c6b73b43a4656c9dce041034ae2bd62151481c5fa5823aa2d66fb67d7">REMMINA_VIEW_FILE_LIST</a>;</div><div class="line"><a name="l00893"></a><span class="lineno"> 893</span>&#160; gtk_entry_set_text(remminamain-&gt;<a class="code" href="struct___remmina_main.html#ac2eff9c56cc7830bcf9ca4bfdf216095">entry_quick_connect_server</a>, <span class="stringliteral">&quot;&quot;</span>);</div><div class="line"><a name="l00894"></a><span class="lineno"> 894</span>&#160; <a class="code" href="remmina__pref_8c.html#ae17aaf37449083a4322b6748c8f3a39f">remmina_pref_save</a>();</div><div class="line"><a name="l00895"></a><span class="lineno"> 895</span>&#160; <a class="code" href="remmina__main_8c.html#a3617295e74fa84edbd41dedc601402a7">remmina_main_load_files</a>();</div><div class="line"><a name="l00896"></a><span class="lineno"> 896</span>&#160; }</div><div class="line"><a name="l00897"></a><span class="lineno"> 897</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00898"></a><span class="lineno"> 898</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ab43c3da7d8551c9df726996c540726f1">view_file_mode</a> != <a class="code" href="remmina__pref_8h.html#aac34dfe6c6b73b43a4656c9dce041034a46530ebfd659963a54b7dae5702af1df">REMMINA_VIEW_FILE_TREE</a>) {</div><div class="line"><a name="l00899"></a><span class="lineno"> 899</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ab43c3da7d8551c9df726996c540726f1">view_file_mode</a> = <a class="code" href="remmina__pref_8h.html#aac34dfe6c6b73b43a4656c9dce041034a46530ebfd659963a54b7dae5702af1df">REMMINA_VIEW_FILE_TREE</a>;</div><div class="line"><a name="l00900"></a><span class="lineno"> 900</span>&#160; gtk_entry_set_text(remminamain-&gt;<a class="code" href="struct___remmina_main.html#ac2eff9c56cc7830bcf9ca4bfdf216095">entry_quick_connect_server</a>, <span class="stringliteral">&quot;&quot;</span>);</div><div class="line"><a name="l00901"></a><span class="lineno"> 901</span>&#160; <a class="code" href="remmina__pref_8c.html#ae17aaf37449083a4322b6748c8f3a39f">remmina_pref_save</a>();</div><div class="line"><a name="l00902"></a><span class="lineno"> 902</span>&#160; <a class="code" href="remmina__main_8c.html#a3617295e74fa84edbd41dedc601402a7">remmina_main_load_files</a>();</div><div class="line"><a name="l00903"></a><span class="lineno"> 903</span>&#160; }</div><div class="line"><a name="l00904"></a><span class="lineno"> 904</span>&#160; }</div><div class="line"><a name="l00905"></a><span class="lineno"> 905</span>&#160;}</div><div class="line"><a name="l00906"></a><span class="lineno"> 906</span>&#160;</div><div class="line"><a name="l00907"></a><span class="lineno"><a class="line" href="remmina__main_8h.html#a44eb44c6391f53a19c6f1fdf9a39a8c1"> 907</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__main_8c.html#a44eb44c6391f53a19c6f1fdf9a39a8c1">remmina_main_on_action_connection_copy</a>(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="line"><a name="l00908"></a><span class="lineno"> 908</span>&#160;{</div><div class="line"><a name="l00909"></a><span class="lineno"> 909</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00910"></a><span class="lineno"> 910</span>&#160; GtkWidget *widget;</div><div class="line"><a name="l00911"></a><span class="lineno"> 911</span>&#160;</div><div class="line"><a name="l00912"></a><span class="lineno"> 912</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="remmina__pref_8c.html#a9a8d02227eb703bccc3f9296a5d89d6f">remmina_pref_get_boolean</a>(<span class="stringliteral">&quot;use_primary_password&quot;</span>)</div><div class="line"><a name="l00913"></a><span class="lineno"> 913</span>&#160; &amp;&amp; <a class="code" href="remmina__unlock_8c.html#a81e79e5c1c230b7e2bf27b2457801d4e">remmina_unlock_new</a>(remminamain-&gt;<a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a>) == 0)</div><div class="line"><a name="l00914"></a><span class="lineno"> 914</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00915"></a><span class="lineno"> 915</span>&#160;</div><div class="line"><a name="l00916"></a><span class="lineno"> 916</span>&#160; <span class="keywordflow">if</span> (!remminamain-&gt;<a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-&gt;<a class="code" href="struct___remmina_main_priv.html#a092aebd62ba9fe50c899e416361c1d00">selected_filename</a>)</div><div class="line"><a name="l00917"></a><span class="lineno"> 917</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00918"></a><span class="lineno"> 918</span>&#160;</div><div class="line"><a name="l00919"></a><span class="lineno"> 919</span>&#160; <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile = <a class="code" href="remmina__file_8c.html#ac1cc2d7f827f7d64c7fd3edf10e9383e">remmina_file_load</a>(remminamain-&gt;<a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-&gt;<a class="code" href="struct___remmina_main_priv.html#a092aebd62ba9fe50c899e416361c1d00">selected_filename</a>);</div><div class="line"><a name="l00920"></a><span class="lineno"> 920</span>&#160;</div><div class="line"><a name="l00921"></a><span class="lineno"> 921</span>&#160; <span class="keywordflow">if</span> (((<a class="code" href="remmina__pref_8c.html#a9a8d02227eb703bccc3f9296a5d89d6f">remmina_pref_get_boolean</a>(<span class="stringliteral">&quot;lock_edit&quot;</span>)</div><div class="line"><a name="l00922"></a><span class="lineno"> 922</span>&#160; &amp;&amp; <a class="code" href="remmina__pref_8c.html#a9a8d02227eb703bccc3f9296a5d89d6f">remmina_pref_get_boolean</a>(<span class="stringliteral">&quot;use_primary_password&quot;</span>))</div><div class="line"><a name="l00923"></a><span class="lineno"> 923</span>&#160; || <a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a> (remminafile, <span class="stringliteral">&quot;profile-lock&quot;</span>, FALSE))</div><div class="line"><a name="l00924"></a><span class="lineno"> 924</span>&#160; &amp;&amp; <a class="code" href="remmina__unlock_8c.html#a81e79e5c1c230b7e2bf27b2457801d4e">remmina_unlock_new</a>(remminamain-&gt;<a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a>) == 0)</div><div class="line"><a name="l00925"></a><span class="lineno"> 925</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00926"></a><span class="lineno"> 926</span>&#160;</div><div class="line"><a name="l00927"></a><span class="lineno"> 927</span>&#160; <span class="keywordflow">if</span> (remminafile) {</div><div class="line"><a name="l00928"></a><span class="lineno"> 928</span>&#160; <a class="code" href="remmina__file_8c.html#abd2f06bf0a5ddcf7156e5ef7d0c8d4d7">remmina_file_free</a>(remminafile);</div><div class="line"><a name="l00929"></a><span class="lineno"> 929</span>&#160; remminafile = NULL;</div><div class="line"><a name="l00930"></a><span class="lineno"> 930</span>&#160; }</div><div class="line"><a name="l00931"></a><span class="lineno"> 931</span>&#160;</div><div class="line"><a name="l00932"></a><span class="lineno"> 932</span>&#160; widget = <a class="code" href="remmina__file__editor_8c.html#aa5c50852f8569f075eec5d5db30c2ebf">remmina_file_editor_new_copy</a>(remminamain-&gt;<a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-&gt;<a class="code" href="struct___remmina_main_priv.html#a092aebd62ba9fe50c899e416361c1d00">selected_filename</a>);</div><div class="line"><a name="l00933"></a><span class="lineno"> 933</span>&#160; <span class="keywordflow">if</span> (widget) {</div><div class="line"><a name="l00934"></a><span class="lineno"> 934</span>&#160; g_signal_connect(G_OBJECT(widget), <span class="stringliteral">&quot;destroy&quot;</span>, G_CALLBACK(<a class="code" href="remmina__main_8c.html#a6a466d0b07944e619bd9b0e473c8a5bd">remmina_main_file_editor_destroy</a>), remminamain);</div><div class="line"><a name="l00935"></a><span class="lineno"> 935</span>&#160; gtk_window_set_transient_for(GTK_WINDOW(widget), remminamain-&gt;<a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a>);</div><div class="line"><a name="l00936"></a><span class="lineno"> 936</span>&#160; gtk_widget_show(widget);</div><div class="line"><a name="l00937"></a><span class="lineno"> 937</span>&#160; }</div><div class="line"><a name="l00938"></a><span class="lineno"> 938</span>&#160; <span class="comment">/* Select the file previously selected */</span></div><div class="line"><a name="l00939"></a><span class="lineno"> 939</span>&#160; <span class="keywordflow">if</span> (remminamain-&gt;<a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-&gt;<a class="code" href="struct___remmina_main_priv.html#a092aebd62ba9fe50c899e416361c1d00">selected_filename</a>)</div><div class="line"><a name="l00940"></a><span class="lineno"> 940</span>&#160; <a class="code" href="remmina__main_8c.html#aa20963aed43242994c88d5a97a546355">remmina_main_select_file</a>(remminamain-&gt;<a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-&gt;<a class="code" href="struct___remmina_main_priv.html#a092aebd62ba9fe50c899e416361c1d00">selected_filename</a>);</div><div class="line"><a name="l00941"></a><span class="lineno"> 941</span>&#160;}</div><div class="line"><a name="l00942"></a><span class="lineno"> 942</span>&#160;</div><div class="line"><a name="l00943"></a><span class="lineno"><a class="line" href="remmina__main_8h.html#adfbfc580d25b58d09770a7d33ffe03cc"> 943</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__main_8c.html#adfbfc580d25b58d09770a7d33ffe03cc">remmina_main_on_action_connection_edit</a>(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="line"><a name="l00944"></a><span class="lineno"> 944</span>&#160;{</div><div class="line"><a name="l00945"></a><span class="lineno"> 945</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00946"></a><span class="lineno"> 946</span>&#160; GtkWidget *widget;</div><div class="line"><a name="l00947"></a><span class="lineno"> 947</span>&#160;</div><div class="line"><a name="l00948"></a><span class="lineno"> 948</span>&#160; <span class="keywordflow">if</span> (!remminamain-&gt;<a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-&gt;<a class="code" href="struct___remmina_main_priv.html#a092aebd62ba9fe50c899e416361c1d00">selected_filename</a>)</div><div class="line"><a name="l00949"></a><span class="lineno"> 949</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00950"></a><span class="lineno"> 950</span>&#160;</div><div class="line"><a name="l00951"></a><span class="lineno"> 951</span>&#160; <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile = <a class="code" href="remmina__file_8c.html#ac1cc2d7f827f7d64c7fd3edf10e9383e">remmina_file_load</a>(remminamain-&gt;<a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-&gt;<a class="code" href="struct___remmina_main_priv.html#a092aebd62ba9fe50c899e416361c1d00">selected_filename</a>);</div><div class="line"><a name="l00952"></a><span class="lineno"> 952</span>&#160;</div><div class="line"><a name="l00953"></a><span class="lineno"> 953</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="remmina__pref_8c.html#a9a8d02227eb703bccc3f9296a5d89d6f">remmina_pref_get_boolean</a>(<span class="stringliteral">&quot;use_primary_password&quot;</span>)</div><div class="line"><a name="l00954"></a><span class="lineno"> 954</span>&#160; &amp;&amp; (<a class="code" href="remmina__pref_8c.html#a9a8d02227eb703bccc3f9296a5d89d6f">remmina_pref_get_boolean</a>(<span class="stringliteral">&quot;lock_edit&quot;</span>)</div><div class="line"><a name="l00955"></a><span class="lineno"> 955</span>&#160; || <a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a> (remminafile, <span class="stringliteral">&quot;profile-lock&quot;</span>, FALSE))</div><div class="line"><a name="l00956"></a><span class="lineno"> 956</span>&#160; &amp;&amp; <a class="code" href="remmina__unlock_8c.html#a81e79e5c1c230b7e2bf27b2457801d4e">remmina_unlock_new</a>(remminamain-&gt;<a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a>) == 0)</div><div class="line"><a name="l00957"></a><span class="lineno"> 957</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00958"></a><span class="lineno"> 958</span>&#160;</div><div class="line"><a name="l00959"></a><span class="lineno"> 959</span>&#160; <span class="keywordflow">if</span> (remminafile) {</div><div class="line"><a name="l00960"></a><span class="lineno"> 960</span>&#160; <a class="code" href="remmina__file_8c.html#abd2f06bf0a5ddcf7156e5ef7d0c8d4d7">remmina_file_free</a>(remminafile);</div><div class="line"><a name="l00961"></a><span class="lineno"> 961</span>&#160; remminafile = NULL;</div><div class="line"><a name="l00962"></a><span class="lineno"> 962</span>&#160; }</div><div class="line"><a name="l00963"></a><span class="lineno"> 963</span>&#160;</div><div class="line"><a name="l00964"></a><span class="lineno"> 964</span>&#160; widget = <a class="code" href="remmina__file__editor_8c.html#aa9345cfe3fb32d326b652e96ee55eaea">remmina_file_editor_new_from_filename</a>(remminamain-&gt;<a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-&gt;<a class="code" href="struct___remmina_main_priv.html#a092aebd62ba9fe50c899e416361c1d00">selected_filename</a>);</div><div class="line"><a name="l00965"></a><span class="lineno"> 965</span>&#160; <span class="keywordflow">if</span> (widget) {</div><div class="line"><a name="l00966"></a><span class="lineno"> 966</span>&#160; gtk_window_set_transient_for(GTK_WINDOW(widget), remminamain-&gt;<a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a>);</div><div class="line"><a name="l00967"></a><span class="lineno"> 967</span>&#160; gtk_widget_show(widget);</div><div class="line"><a name="l00968"></a><span class="lineno"> 968</span>&#160; }</div><div class="line"><a name="l00969"></a><span class="lineno"> 969</span>&#160;<span class="comment">/* Select the file previously selected */</span></div><div class="line"><a name="l00970"></a><span class="lineno"> 970</span>&#160; <span class="keywordflow">if</span> (remminamain-&gt;<a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-&gt;<a class="code" href="struct___remmina_main_priv.html#a092aebd62ba9fe50c899e416361c1d00">selected_filename</a>)</div><div class="line"><a name="l00971"></a><span class="lineno"> 971</span>&#160; <a class="code" href="remmina__main_8c.html#aa20963aed43242994c88d5a97a546355">remmina_main_select_file</a>(remminamain-&gt;<a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-&gt;<a class="code" href="struct___remmina_main_priv.html#a092aebd62ba9fe50c899e416361c1d00">selected_filename</a>);</div><div class="line"><a name="l00972"></a><span class="lineno"> 972</span>&#160;}</div><div class="line"><a name="l00973"></a><span class="lineno"> 973</span>&#160;</div><div class="line"><a name="l00974"></a><span class="lineno"><a class="line" href="remmina__main_8h.html#a10e574723222f5df9db456977e62a093"> 974</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__main_8c.html#a10e574723222f5df9db456977e62a093">remmina_main_on_action_connection_delete</a>(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="line"><a name="l00975"></a><span class="lineno"> 975</span>&#160;{</div><div class="line"><a name="l00976"></a><span class="lineno"> 976</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00977"></a><span class="lineno"> 977</span>&#160; GtkWidget *dialog;</div><div class="line"><a name="l00978"></a><span class="lineno"> 978</span>&#160;</div><div class="line"><a name="l00979"></a><span class="lineno"> 979</span>&#160; <span class="keywordflow">if</span> (!remminamain-&gt;<a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-&gt;<a class="code" href="struct___remmina_main_priv.html#a092aebd62ba9fe50c899e416361c1d00">selected_filename</a>)</div><div class="line"><a name="l00980"></a><span class="lineno"> 980</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00981"></a><span class="lineno"> 981</span>&#160;</div><div class="line"><a name="l00982"></a><span class="lineno"> 982</span>&#160; <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile = <a class="code" href="remmina__file_8c.html#ac1cc2d7f827f7d64c7fd3edf10e9383e">remmina_file_load</a>(remminamain-&gt;<a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-&gt;<a class="code" href="struct___remmina_main_priv.html#a092aebd62ba9fe50c899e416361c1d00">selected_filename</a>);</div><div class="line"><a name="l00983"></a><span class="lineno"> 983</span>&#160;</div><div class="line"><a name="l00984"></a><span class="lineno"> 984</span>&#160; <span class="keywordflow">if</span> (((<a class="code" href="remmina__pref_8c.html#a9a8d02227eb703bccc3f9296a5d89d6f">remmina_pref_get_boolean</a>(<span class="stringliteral">&quot;lock_edit&quot;</span>)</div><div class="line"><a name="l00985"></a><span class="lineno"> 985</span>&#160; &amp;&amp; <a class="code" href="remmina__pref_8c.html#a9a8d02227eb703bccc3f9296a5d89d6f">remmina_pref_get_boolean</a>(<span class="stringliteral">&quot;use_primary_password&quot;</span>))</div><div class="line"><a name="l00986"></a><span class="lineno"> 986</span>&#160; || <a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a> (remminafile, <span class="stringliteral">&quot;profile-lock&quot;</span>, FALSE))</div><div class="line"><a name="l00987"></a><span class="lineno"> 987</span>&#160; &amp;&amp; <a class="code" href="remmina__unlock_8c.html#a81e79e5c1c230b7e2bf27b2457801d4e">remmina_unlock_new</a>(remminamain-&gt;<a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a>) == 0)</div><div class="line"><a name="l00988"></a><span class="lineno"> 988</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00989"></a><span class="lineno"> 989</span>&#160;</div><div class="line"><a name="l00990"></a><span class="lineno"> 990</span>&#160; <span class="keywordflow">if</span> (remminafile) {</div><div class="line"><a name="l00991"></a><span class="lineno"> 991</span>&#160; <a class="code" href="remmina__file_8c.html#abd2f06bf0a5ddcf7156e5ef7d0c8d4d7">remmina_file_free</a>(remminafile);</div><div class="line"><a name="l00992"></a><span class="lineno"> 992</span>&#160; remminafile = NULL;</div><div class="line"><a name="l00993"></a><span class="lineno"> 993</span>&#160; }</div><div class="line"><a name="l00994"></a><span class="lineno"> 994</span>&#160;</div><div class="line"><a name="l00995"></a><span class="lineno"> 995</span>&#160; dialog = gtk_message_dialog_new(remminamain-&gt;<a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a>, GTK_DIALOG_MODAL, GTK_MESSAGE_QUESTION, GTK_BUTTONS_YES_NO,</div><div class="line"><a name="l00996"></a><span class="lineno"> 996</span>&#160; _(<span class="stringliteral">&quot;Are you sure you want to delete “%s”?&quot;</span>), remminamain-&gt;<a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-&gt;<a class="code" href="struct___remmina_main_priv.html#a606c7e6dc78219e8e5536519db723a4d">selected_name</a>);</div><div class="line"><a name="l00997"></a><span class="lineno"> 997</span>&#160; <span class="keywordflow">if</span> (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_YES) {</div><div class="line"><a name="l00998"></a><span class="lineno"> 998</span>&#160; gchar *delfilename = g_strdup(remminamain-&gt;<a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-&gt;<a class="code" href="struct___remmina_main_priv.html#a092aebd62ba9fe50c899e416361c1d00">selected_filename</a>);</div><div class="line"><a name="l00999"></a><span class="lineno"> 999</span>&#160; <a class="code" href="remmina__file_8c.html#a55f66f2bb81bf427d6837e1adb7fe1d4">remmina_file_delete</a>(delfilename);</div><div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>&#160; g_free(delfilename), delfilename = NULL;</div><div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>&#160; <a class="code" href="remmina__icon_8c.html#af80ed314f91d653237249d839c7fc3b2">remmina_icon_populate_menu</a>();</div><div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>&#160; <a class="code" href="remmina__main_8c.html#a3617295e74fa84edbd41dedc601402a7">remmina_main_load_files</a>();</div><div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>&#160; }</div><div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>&#160; gtk_widget_destroy(dialog);</div><div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>&#160; <a class="code" href="remmina__main_8c.html#a9e60326026d7de56882bc83c0084fd12">remmina_main_clear_selection_data</a>();</div><div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>&#160;}</div><div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>&#160;</div><div class="line"><a name="l01008"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#a1e8b7e8c0f7a47dc0409ae6eb18cfc6a"> 1008</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__main_8c.html#a1e8b7e8c0f7a47dc0409ae6eb18cfc6a">remmina_main_on_accel_application_preferences</a>(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>&#160;{</div><div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>&#160; GVariant *v = g_variant_new(<span class="stringliteral">&quot;i&quot;</span>, 0);</div><div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>&#160;</div><div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>&#160; <a class="code" href="remmina__main_8c.html#a6ed9f6a588a2d9e3a6cf6884c8d07f92">remmina_main_on_action_application_preferences</a>(NULL, v, NULL);</div><div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>&#160;}</div><div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>&#160;</div><div class="line"><a name="l01016"></a><span class="lineno"><a class="line" href="remmina__main_8h.html#a6ed9f6a588a2d9e3a6cf6884c8d07f92"> 1016</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__main_8c.html#a6ed9f6a588a2d9e3a6cf6884c8d07f92">remmina_main_on_action_application_preferences</a>(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>&#160;{</div><div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>&#160; GtkSettings *settings;</div><div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>&#160;</div><div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Opening the preferences&quot;</span>);</div><div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>&#160; gint32 tab_num;</div><div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>&#160;</div><div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>&#160; <span class="keywordflow">if</span> (param) {</div><div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Parameter passed to preferences of type %s&quot;</span>, g_variant_get_type_string(param));</div><div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>&#160; tab_num = g_variant_get_int32(param);</div><div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;We got a parameter for the preferences: %d&quot;</span>, tab_num);</div><div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>&#160; tab_num = 0;</div><div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>&#160; }</div><div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>&#160;</div><div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="remmina__pref_8c.html#a9a8d02227eb703bccc3f9296a5d89d6f">remmina_pref_get_boolean</a>(<span class="stringliteral">&quot;use_primary_password&quot;</span>)</div><div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>&#160; &amp;&amp; <a class="code" href="remmina__unlock_8c.html#a81e79e5c1c230b7e2bf27b2457801d4e">remmina_unlock_new</a>(remminamain-&gt;<a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a>) == 0)</div><div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>&#160;</div><div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>&#160; GtkWidget *widget = <a class="code" href="remmina__pref__dialog_8c.html#ab09f64d25a5a016281a56edca7e2d70a">remmina_pref_dialog_new</a>(tab_num, remminamain-&gt;<a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a>);</div><div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>&#160;</div><div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>&#160; gtk_widget_show_all(widget);</div><div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>&#160; <span class="comment">/* Switch to a dark theme if the user enabled it */</span></div><div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>&#160; settings = gtk_settings_get_default();</div><div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>&#160; g_object_set(settings, <span class="stringliteral">&quot;gtk-application-prefer-dark-theme&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a7c139ee405d50330b1d9bfb646c0258c">dark_theme</a>, NULL);</div><div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>&#160;}</div><div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>&#160;</div><div class="line"><a name="l01044"></a><span class="lineno"><a class="line" href="remmina__main_8h.html#a05dbb6ce820f3a137949b919d0efa6a1"> 1044</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__main_8c.html#a05dbb6ce820f3a137949b919d0efa6a1">remmina_main_on_action_application_default</a>(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>&#160;{</div><div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>&#160; g_autoptr(GError) error = NULL;</div><div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>&#160; GDesktopAppInfo *desktop_info;</div><div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>&#160; GAppInfo *info = NULL;</div><div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>&#160; g_autofree gchar *<span class="keywordtype">id</span> = g_strconcat(REMMINA_APP_ID, <span class="stringliteral">&quot;.desktop&quot;</span>, NULL);</div><div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>&#160; <span class="keywordtype">int</span> i;</div><div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>&#160;</div><div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>&#160; desktop_info = g_desktop_app_info_new(<span class="keywordtype">id</span>);</div><div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>&#160; <span class="keywordflow">if</span> (!desktop_info)</div><div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>&#160;</div><div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>&#160; info = G_APP_INFO(desktop_info);</div><div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>&#160;</div><div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>&#160; <span class="keywordflow">for</span> (i = 0; <a class="code" href="remmina__main_8c.html#a8ebbcba2c07af0938b3c29e316747d12">supported_mime_types</a>[i]; i++) {</div><div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>&#160; <span class="keywordflow">if</span> (!g_app_info_set_as_default_for_type(info, <a class="code" href="remmina__main_8c.html#a8ebbcba2c07af0938b3c29e316747d12">supported_mime_types</a>[i], &amp;error))</div><div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>&#160; g_warning(<span class="stringliteral">&quot;Failed to set &#39;%s&#39; as the default application for secondary content type &#39;%s&#39;: %s&quot;</span>,</div><div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>&#160; g_app_info_get_name(info), <a class="code" href="remmina__main_8c.html#a8ebbcba2c07af0938b3c29e316747d12">supported_mime_types</a>[i], error-&gt;message);</div><div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>&#160; g_debug(<span class="stringliteral">&quot;Set &#39;%s&#39; as the default application for &#39;%s&#39;&quot;</span>,</div><div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>&#160; g_app_info_get_name(info),</div><div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>&#160; <a class="code" href="remmina__main_8c.html#a8ebbcba2c07af0938b3c29e316747d12">supported_mime_types</a>[i]);</div><div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>&#160; }</div><div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>&#160;}</div><div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>&#160;</div><div class="line"><a name="l01070"></a><span class="lineno"><a class="line" href="remmina__main_8h.html#a5445e5568a6fc04d08b620829a59334a"> 1070</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__main_8c.html#a5445e5568a6fc04d08b620829a59334a">remmina_main_on_action_application_quit</a>(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>&#160;{</div><div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>&#160; <span class="comment">// Called by quit signal in remmina_main.glade</span></div><div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>&#160; g_debug(<span class="stringliteral">&quot;Quit intercept&quot;</span>);</div><div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>&#160; <a class="code" href="remmina__exec_8c.html#aaa67e07e2426828d7e7b9b30d2038d31">remmina_application_condexit</a>(<a class="code" href="remmina__exec_8h.html#ae9dfd6986f18cb3d846a4933ac792fd5a94dfcc0fcf38aa8060ff843e40799284">REMMINA_CONDEXIT_ONQUIT</a>);</div><div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>&#160;}</div><div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>&#160;</div><div class="line"><a name="l01078"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#a3d60de4c121cae0c82e60b13873073db"> 1078</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__main_8c.html#a3d60de4c121cae0c82e60b13873073db">remmina_main_on_date_column_sort_clicked</a>()</div><div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>&#160;{</div><div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ab43c3da7d8551c9df726996c540726f1">view_file_mode</a> != <a class="code" href="remmina__pref_8h.html#aac34dfe6c6b73b43a4656c9dce041034ae2bd62151481c5fa5823aa2d66fb67d7">REMMINA_VIEW_FILE_LIST</a>) {</div><div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ab43c3da7d8551c9df726996c540726f1">view_file_mode</a> = <a class="code" href="remmina__pref_8h.html#aac34dfe6c6b73b43a4656c9dce041034ae2bd62151481c5fa5823aa2d66fb67d7">REMMINA_VIEW_FILE_LIST</a>;</div><div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>&#160; gtk_entry_set_text(remminamain-&gt;<a class="code" href="struct___remmina_main.html#ac2eff9c56cc7830bcf9ca4bfdf216095">entry_quick_connect_server</a>, <span class="stringliteral">&quot;&quot;</span>);</div><div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>&#160; <a class="code" href="remmina__pref_8c.html#ae17aaf37449083a4322b6748c8f3a39f">remmina_pref_save</a>();</div><div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>&#160; <a class="code" href="remmina__main_8c.html#a3617295e74fa84edbd41dedc601402a7">remmina_main_load_files</a>();</div><div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>&#160; }</div><div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>&#160;}</div><div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>&#160;</div><div class="line"><a name="l01088"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#ac767825cb87a34531306cfb587216d20"> 1088</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__main_8c.html#ac767825cb87a34531306cfb587216d20">remmina_main_import_file_list</a>(GSList *files)</div><div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>&#160;{</div><div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>&#160; GtkWidget *dlg;</div><div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>&#160; GSList *element;</div><div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>&#160; gchar *path;</div><div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>&#160; <a class="code" href="struct___remmina_file_plugin.html">RemminaFilePlugin</a> *plugin;</div><div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>&#160; GString *err;</div><div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>&#160; <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile = NULL;</div><div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>&#160; gboolean imported;</div><div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>&#160;</div><div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>&#160; err = g_string_new(NULL);</div><div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>&#160; imported = FALSE;</div><div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>&#160; <span class="keywordflow">for</span> (element = files; element; element = element-&gt;next) {</div><div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>&#160; path = (gchar *)element-&gt;data;</div><div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>&#160; plugin = <a class="code" href="remmina__plugin__manager_8c.html#a859348bddc9069f06195915692b65076">remmina_plugin_manager_get_import_file_handler</a>(path);</div><div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>&#160; <span class="keywordflow">if</span> (plugin &amp;&amp; (remminafile = plugin-&gt;<a class="code" href="struct___remmina_file_plugin.html#a597178a88c755ebe0614897b7aa279b1">import_func</a>(plugin, path)) != NULL &amp;&amp; <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">&quot;name&quot;</span>)) {</div><div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>&#160; <a class="code" href="remmina__file_8c.html#ac952f8ddb715314f11cef1ccc513fb7e">remmina_file_generate_filename</a>(remminafile);</div><div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>&#160; <a class="code" href="remmina__file_8c.html#a8c893a5deec9bc446bd89cc9973416c7">remmina_file_save</a>(remminafile);</div><div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>&#160; imported = TRUE;</div><div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>&#160; g_string_append(err, path);</div><div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>&#160; g_string_append_c(err, <span class="charliteral">&#39;\n&#39;</span>);</div><div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>&#160; }</div><div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>&#160; <span class="keywordflow">if</span> (remminafile) {</div><div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>&#160; <a class="code" href="remmina__file_8c.html#abd2f06bf0a5ddcf7156e5ef7d0c8d4d7">remmina_file_free</a>(remminafile);</div><div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>&#160; remminafile = NULL;</div><div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>&#160; }</div><div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>&#160; g_free(path);</div><div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>&#160; }</div><div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>&#160; g_slist_free(files);</div><div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>&#160; <span class="keywordflow">if</span> (err-&gt;len &gt; 0) {</div><div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>&#160; <span class="comment">// TRANSLATORS: The placeholder %s is an error message</span></div><div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>&#160; dlg = gtk_message_dialog_new(remminamain-&gt;<a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a>, GTK_DIALOG_MODAL, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK,</div><div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>&#160; _(<span class="stringliteral">&quot;Unable to import:\n%s&quot;</span>), err-&gt;str);</div><div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>&#160; g_signal_connect(G_OBJECT(dlg), <span class="stringliteral">&quot;response&quot;</span>, G_CALLBACK(gtk_widget_destroy), NULL);</div><div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>&#160; gtk_widget_show(dlg);</div><div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>&#160; }</div><div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>&#160; g_string_free(err, TRUE);</div><div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>&#160; <span class="keywordflow">if</span> (imported)</div><div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>&#160; <a class="code" href="remmina__main_8c.html#a3617295e74fa84edbd41dedc601402a7">remmina_main_load_files</a>();</div><div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>&#160;}</div><div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>&#160;</div><div class="line"><a name="l01131"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#a85aa313453e0ecaa17bcce233973998d"> 1131</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__main_8c.html#a85aa313453e0ecaa17bcce233973998d">remmina_main_action_tools_import_on_response</a>(GtkDialog *dialog, gint response_id, gpointer user_data)</div><div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>&#160;{</div><div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>&#160; GSList *files;</div><div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>&#160;</div><div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>&#160; <span class="keywordflow">if</span> (response_id == GTK_RESPONSE_ACCEPT) {</div><div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>&#160; files = gtk_file_chooser_get_filenames(GTK_FILE_CHOOSER(dialog));</div><div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>&#160; <a class="code" href="remmina__main_8c.html#ac767825cb87a34531306cfb587216d20">remmina_main_import_file_list</a>(files);</div><div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>&#160; }</div><div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>&#160; gtk_widget_destroy(GTK_WIDGET(dialog));</div><div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>&#160;}</div><div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>&#160;</div><div class="line"><a name="l01143"></a><span class="lineno"><a class="line" href="remmina__main_8h.html#a4b4f0bbdb9e487d6c3809e8a57dc1d1c"> 1143</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__main_8c.html#a4b4f0bbdb9e487d6c3809e8a57dc1d1c">remmina_main_on_action_tools_import</a>(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>&#160;{</div><div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>&#160; GtkWidget *dialog;</div><div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>&#160;</div><div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>&#160; dialog = gtk_file_chooser_dialog_new(_(<span class="stringliteral">&quot;Import&quot;</span>), remminamain-&gt;<a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a>, GTK_FILE_CHOOSER_ACTION_OPEN, <span class="stringliteral">&quot;Import&quot;</span>,</div><div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>&#160; GTK_RESPONSE_ACCEPT, NULL);</div><div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>&#160; gtk_file_chooser_set_select_multiple(GTK_FILE_CHOOSER(dialog), TRUE);</div><div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>&#160; g_signal_connect(G_OBJECT(dialog), <span class="stringliteral">&quot;response&quot;</span>, G_CALLBACK(<a class="code" href="remmina__main_8c.html#a85aa313453e0ecaa17bcce233973998d">remmina_main_action_tools_import_on_response</a>), NULL);</div><div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>&#160; gtk_widget_show(dialog);</div><div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>&#160;}</div><div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>&#160;</div><div class="line"><a name="l01155"></a><span class="lineno"><a class="line" href="remmina__main_8h.html#ab203476099a5ad6e889f91c8e05d577d"> 1155</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__main_8c.html#ab203476099a5ad6e889f91c8e05d577d">remmina_main_on_action_tools_export</a>(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>&#160;{</div><div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>&#160; <a class="code" href="struct___remmina_file_plugin.html">RemminaFilePlugin</a> *plugin;</div><div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>&#160; <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile;</div><div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>&#160; GtkWidget *dialog;</div><div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>&#160;</div><div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>&#160; <span class="keywordflow">if</span> (!remminamain-&gt;<a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-&gt;<a class="code" href="struct___remmina_main_priv.html#a092aebd62ba9fe50c899e416361c1d00">selected_filename</a>)</div><div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>&#160;</div><div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>&#160; remminafile = <a class="code" href="remmina__file_8c.html#ac1cc2d7f827f7d64c7fd3edf10e9383e">remmina_file_load</a>(remminamain-&gt;<a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-&gt;<a class="code" href="struct___remmina_main_priv.html#a092aebd62ba9fe50c899e416361c1d00">selected_filename</a>);</div><div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>&#160; <span class="keywordflow">if</span> (remminafile == NULL)</div><div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>&#160; plugin = <a class="code" href="remmina__plugin__manager_8c.html#afce14b101da527ada9b44a4503e91e07">remmina_plugin_manager_get_export_file_handler</a>(remminafile);</div><div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>&#160; <span class="keywordflow">if</span> (plugin) {</div><div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>&#160; dialog = gtk_file_chooser_dialog_new(plugin-&gt;<a class="code" href="struct___remmina_file_plugin.html#ac4f2b0118490cede0577aaee9f2e0b5f">export_hints</a>, remminamain-&gt;<a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a>,</div><div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>&#160; GTK_FILE_CHOOSER_ACTION_SAVE, _(<span class="stringliteral">&quot;_Save&quot;</span>), GTK_RESPONSE_ACCEPT, NULL);</div><div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>&#160; <span class="keywordflow">if</span> (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT)</div><div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>&#160; plugin-&gt;<a class="code" href="struct___remmina_file_plugin.html#a8bf634ff09caba624ecf93c42e12af78">export_func</a>(plugin, remminafile, gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog)));</div><div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>&#160; gtk_widget_destroy(dialog);</div><div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>&#160; dialog = gtk_message_dialog_new(remminamain-&gt;<a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a>, GTK_DIALOG_MODAL, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK,</div><div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>&#160; _(<span class="stringliteral">&quot;This protocol does not support exporting.&quot;</span>));</div><div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>&#160; g_signal_connect(G_OBJECT(dialog), <span class="stringliteral">&quot;response&quot;</span>, G_CALLBACK(gtk_widget_destroy), NULL);</div><div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>&#160; gtk_widget_show(dialog);</div><div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>&#160; }</div><div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>&#160; <a class="code" href="remmina__file_8c.html#abd2f06bf0a5ddcf7156e5ef7d0c8d4d7">remmina_file_free</a>(remminafile);</div><div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>&#160;}</div><div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>&#160;</div><div class="line"><a name="l01184"></a><span class="lineno"><a class="line" href="remmina__main_8h.html#adf59ad5b0a0ef68e58bbea3701929efc"> 1184</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__main_8c.html#adf59ad5b0a0ef68e58bbea3701929efc">remmina_main_on_action_application_plugins</a>(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>&#160;{</div><div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>&#160; <a class="code" href="remmina__plugin__manager_8c.html#aedec4e9cf18d99a559aa51065c2bc276">remmina_plugin_manager_show</a>(remminamain-&gt;<a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a>);</div><div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>&#160;}</div><div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>&#160;</div><div class="line"><a name="l01190"></a><span class="lineno"><a class="line" href="remmina__main_8h.html#a91f22c2834ac7f38d201d8d678f8c57b"> 1190</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__main_8c.html#a91f22c2834ac7f38d201d8d678f8c57b">remmina_main_on_action_application_dark_theme</a>(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>&#160;{</div><div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>&#160; GtkSettings *settings;</div><div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>&#160;</div><div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>&#160; settings = gtk_settings_get_default();</div><div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>&#160;</div><div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>&#160; <span class="keywordflow">if</span> (gtk_switch_get_active(remminamain-&gt;<a class="code" href="struct___remmina_main.html#a912f2057752ad0779485c3303e3e9b04">switch_dark_mode</a>))</div><div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a7c139ee405d50330b1d9bfb646c0258c">dark_theme</a> = 1;</div><div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a7c139ee405d50330b1d9bfb646c0258c">dark_theme</a> = 0;</div><div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>&#160; <a class="code" href="remmina__pref_8c.html#ae17aaf37449083a4322b6748c8f3a39f">remmina_pref_save</a>();</div><div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>&#160;</div><div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>&#160; g_object_set(settings, <span class="stringliteral">&quot;gtk-application-prefer-dark-theme&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a7c139ee405d50330b1d9bfb646c0258c">dark_theme</a>, NULL);</div><div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>&#160;}</div><div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>&#160;</div><div class="line"><a name="l01206"></a><span class="lineno"><a class="line" href="remmina__main_8h.html#a7049d977154921f651cc1538f59c5b7a"> 1206</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__main_8c.html#a7049d977154921f651cc1538f59c5b7a">remmina_main_on_action_help_homepage</a>(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>&#160;{</div><div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>&#160; g_app_info_launch_default_for_uri(<span class="stringliteral">&quot;https://www.remmina.org&quot;</span>, NULL, NULL);</div><div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>&#160;}</div><div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>&#160;</div><div class="line"><a name="l01212"></a><span class="lineno"><a class="line" href="remmina__main_8h.html#a0c32fe66988056b353220128611b9116"> 1212</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__main_8c.html#a0c32fe66988056b353220128611b9116">remmina_main_on_action_help_wiki</a>(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>&#160;{</div><div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>&#160; g_app_info_launch_default_for_uri(<span class="stringliteral">&quot;https://gitlab.com/Remmina/Remmina/wikis/home&quot;</span>, NULL, NULL);</div><div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>&#160;}</div><div class="line"><a name="l01217"></a><span class="lineno"> 1217</span>&#160;</div><div class="line"><a name="l01218"></a><span class="lineno"><a class="line" href="remmina__main_8h.html#aac3aa116a8d8b527f1aa61b7395b4b32"> 1218</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__main_8c.html#aac3aa116a8d8b527f1aa61b7395b4b32">remmina_main_on_action_help_community</a>(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>&#160;{</div><div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>&#160; g_app_info_launch_default_for_uri(<span class="stringliteral">&quot;https://remmina.org/community&quot;</span>, NULL, NULL);</div><div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>&#160;}</div><div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>&#160;</div><div class="line"><a name="l01224"></a><span class="lineno"><a class="line" href="remmina__main_8h.html#a2704d643ee15702a84a1c76219dd5277"> 1224</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__main_8c.html#a2704d643ee15702a84a1c76219dd5277">remmina_main_on_action_help_donations</a>(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>&#160;{</div><div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>&#160; g_app_info_launch_default_for_uri(<span class="stringliteral">&quot;https://www.remmina.org/donations&quot;</span>, NULL, NULL);</div><div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>&#160;}</div><div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>&#160;</div><div class="line"><a name="l01230"></a><span class="lineno"><a class="line" href="remmina__main_8h.html#a5db4436cc72b9d5ea3e498f8519efecc"> 1230</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__main_8c.html#a5db4436cc72b9d5ea3e498f8519efecc">remmina_main_on_action_help_debug</a>(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>&#160;{</div><div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>&#160; <a class="code" href="remmina__log_8c.html#a72cf53183f3ef89c4208fdccb629003d">remmina_log_start</a>();</div><div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>&#160;}</div><div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>&#160;</div><div class="line"><a name="l01236"></a><span class="lineno"><a class="line" href="remmina__main_8h.html#aac0bb51159be042fecab0103e73a54dc"> 1236</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__main_8c.html#aac0bb51159be042fecab0103e73a54dc">remmina_main_on_action_application_about</a>(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>&#160;{</div><div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>&#160; <a class="code" href="remmina__about_8c.html#a3ad768979e0945a162018c6d596c90f4">remmina_about_open</a>(remminamain-&gt;<a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a>);</div><div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>&#160;};</div><div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>&#160;</div><div class="line"><a name="l01242"></a><span class="lineno"><a class="line" href="remmina__main_8h.html#a0b4ec1e78b79adaa180a385ac50c20d6"> 1242</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__main_8c.html#a0b4ec1e78b79adaa180a385ac50c20d6">remmina_main_on_action_application_news</a>(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>&#160;{</div><div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Setting news counters to 0&quot;</span>);</div><div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a58fce08bda1efaeefd8b65f6463f67c6">periodic_rmnews_last_get</a> = 0;</div><div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a1b13dc96ccf8ebad045f02c58eb1d005">periodic_rmnews_get_count</a> = 0;</div><div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Saving preferences&quot;</span>);</div><div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>&#160; <a class="code" href="remmina__pref_8c.html#ae17aaf37449083a4322b6748c8f3a39f">remmina_pref_save</a>();</div><div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>&#160;};</div><div class="line"><a name="l01251"></a><span class="lineno"> 1251</span>&#160;</div><div class="line"><a name="l01252"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#a1f5f9a964a75214d500e7a9fca1bd8a6"> 1252</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="remmina__main_8c.html#a1f5f9a964a75214d500e7a9fca1bd8a6">is_empty</a>(<span class="keyword">const</span> gchar *s)</div><div class="line"><a name="l01253"></a><span class="lineno"> 1253</span>&#160;{</div><div class="line"><a name="l01254"></a><span class="lineno"> 1254</span>&#160; <span class="keywordflow">if</span> (s == NULL)</div><div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>&#160; <span class="keywordflow">while</span> (*s != 0) {</div><div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>&#160; <span class="keywordflow">if</span> (!isspace((<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>)*s))</div><div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>&#160; s++;</div><div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>&#160; }</div><div class="line"><a name="l01261"></a><span class="lineno"> 1261</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>&#160;}</div><div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>&#160;</div><div class="line"><a name="l01264"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#a802458852abacebfb16f1f4295806a01"> 1264</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="remmina__main_8c.html#a802458852abacebfb16f1f4295806a01">remmina_main_quickconnect</a>(<span class="keywordtype">void</span>)</div><div class="line"><a name="l01265"></a><span class="lineno"> 1265</span>&#160;{</div><div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>&#160; <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile;</div><div class="line"><a name="l01268"></a><span class="lineno"> 1268</span>&#160; gchar *server;</div><div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>&#160; gchar *server_trimmed;</div><div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>&#160; gchar *qcp;</div><div class="line"><a name="l01271"></a><span class="lineno"> 1271</span>&#160;</div><div class="line"><a name="l01272"></a><span class="lineno"> 1272</span>&#160;</div><div class="line"><a name="l01273"></a><span class="lineno"> 1273</span>&#160; <span class="comment">/* Save quick connect protocol if different from the previous one */</span></div><div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>&#160; qcp = gtk_combo_box_text_get_active_text(remminamain-&gt;<a class="code" href="struct___remmina_main.html#a35f10af8065b3b64ba6f26db60061d39">combo_quick_connect_protocol</a>);</div><div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>&#160; <span class="keywordflow">if</span> (qcp &amp;&amp; strcmp(qcp, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ac31f888a39eec7ef6de922c7b53d044e">last_quickconnect_protocol</a>) != 0) {</div><div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>&#160; g_free(<a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ac31f888a39eec7ef6de922c7b53d044e">last_quickconnect_protocol</a>);</div><div class="line"><a name="l01277"></a><span class="lineno"> 1277</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ac31f888a39eec7ef6de922c7b53d044e">last_quickconnect_protocol</a> = g_strdup(qcp);</div><div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>&#160; <a class="code" href="remmina__pref_8c.html#ae17aaf37449083a4322b6748c8f3a39f">remmina_pref_save</a>();</div><div class="line"><a name="l01279"></a><span class="lineno"> 1279</span>&#160; }</div><div class="line"><a name="l01280"></a><span class="lineno"> 1280</span>&#160;</div><div class="line"><a name="l01281"></a><span class="lineno"> 1281</span>&#160; remminafile = <a class="code" href="remmina__file_8c.html#a5e421ba636d34e21bba5ece463e98892">remmina_file_new</a>();</div><div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>&#160; server = g_strdup(gtk_entry_get_text(remminamain-&gt;<a class="code" href="struct___remmina_main.html#ac2eff9c56cc7830bcf9ca4bfdf216095">entry_quick_connect_server</a>));</div><div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>&#160; <span class="keywordflow">if</span> (g_hostname_to_ascii(server) == NULL)</div><div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>&#160; <span class="comment">/* If server contain /, e.g. vnc://, it won&#39;t connect</span></div><div class="line"><a name="l01286"></a><span class="lineno"> 1286</span>&#160;<span class="comment"> * We could search for an array of invalid characters, but</span></div><div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>&#160;<span class="comment"> * it&#39;s better to find a way to correctly parse and validate addresses</span></div><div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>&#160; <span class="keywordflow">if</span> (g_strrstr(server, <span class="stringliteral">&quot;/&quot;</span>) != NULL)</div><div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>&#160; <span class="comment">//if (g_str_has_suffix (server, &quot;/&quot;))</span></div><div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>&#160; <span class="comment">//return FALSE;</span></div><div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="remmina__main_8c.html#a1f5f9a964a75214d500e7a9fca1bd8a6">is_empty</a>(server))</div><div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01295"></a><span class="lineno"> 1295</span>&#160;</div><div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>&#160; <span class="comment">/* check if server is an IP address and trim whitespace if so */</span></div><div class="line"><a name="l01297"></a><span class="lineno"> 1297</span>&#160; server_trimmed = g_strdup(server);</div><div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>&#160; g_strstrip(server_trimmed);</div><div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>&#160; gchar **strings = g_strsplit(server_trimmed, <span class="stringliteral">&quot;:&quot;</span>, 2);</div><div class="line"><a name="l01300"></a><span class="lineno"> 1300</span>&#160;</div><div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>&#160; <span class="keywordflow">if</span> (strings[0] != NULL)</div><div class="line"><a name="l01302"></a><span class="lineno"> 1302</span>&#160; <span class="keywordflow">if</span> (g_hostname_is_ip_address(strings[0]))</div><div class="line"><a name="l01303"></a><span class="lineno"> 1303</span>&#160; g_stpcpy(server, server_trimmed);</div><div class="line"><a name="l01304"></a><span class="lineno"> 1304</span>&#160;</div><div class="line"><a name="l01305"></a><span class="lineno"> 1305</span>&#160; <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, <span class="stringliteral">&quot;sound&quot;</span>, <span class="stringliteral">&quot;off&quot;</span>);</div><div class="line"><a name="l01306"></a><span class="lineno"> 1306</span>&#160; <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, <span class="stringliteral">&quot;server&quot;</span>, server);</div><div class="line"><a name="l01307"></a><span class="lineno"> 1307</span>&#160; <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, <span class="stringliteral">&quot;name&quot;</span>, server);</div><div class="line"><a name="l01308"></a><span class="lineno"> 1308</span>&#160; <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, <span class="stringliteral">&quot;protocol&quot;</span>, qcp);</div><div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>&#160; g_free(server);</div><div class="line"><a name="l01310"></a><span class="lineno"> 1310</span>&#160; g_free(server_trimmed);</div><div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>&#160; g_free(qcp);</div><div class="line"><a name="l01312"></a><span class="lineno"> 1312</span>&#160;</div><div class="line"><a name="l01313"></a><span class="lineno"> 1313</span>&#160; <a class="code" href="rcw_8c.html#a1b7a771392e15e527005305e71cc2546">rcw_open_from_file</a>(remminafile);</div><div class="line"><a name="l01314"></a><span class="lineno"> 1314</span>&#160;</div><div class="line"><a name="l01315"></a><span class="lineno"> 1315</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01316"></a><span class="lineno"> 1316</span>&#160;}</div><div class="line"><a name="l01317"></a><span class="lineno"> 1317</span>&#160;</div><div class="line"><a name="l01318"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#a210e9e04c7c97cc86412044de31f659d"> 1318</a></span>&#160;gboolean <a class="code" href="remmina__main_8c.html#a210e9e04c7c97cc86412044de31f659d">remmina_main_quickconnect_on_click</a>(GtkWidget *widget, gpointer user_data)</div><div class="line"><a name="l01319"></a><span class="lineno"> 1319</span>&#160;{</div><div class="line"><a name="l01320"></a><span class="lineno"> 1320</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01321"></a><span class="lineno"> 1321</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="remmina_8c.html#ab4a9a67c5372ff07b71d0558679ab7ae">kioskmode</a> &amp;&amp; <a class="code" href="remmina_8c.html#ab4a9a67c5372ff07b71d0558679ab7ae">kioskmode</a> == FALSE)</div><div class="line"><a name="l01322"></a><span class="lineno"> 1322</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__main_8c.html#a802458852abacebfb16f1f4295806a01">remmina_main_quickconnect</a>();</div><div class="line"><a name="l01323"></a><span class="lineno"> 1323</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01324"></a><span class="lineno"> 1324</span>&#160;}</div><div class="line"><a name="l01325"></a><span class="lineno"> 1325</span>&#160;</div><div class="line"><a name="l01326"></a><span class="lineno"> 1326</span>&#160;<span class="comment">/* Select all the text inside the quick search box if there is anything */</span></div><div class="line"><a name="l01327"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#a6c69b2fa6a56869c54f58d7ebae89427"> 1327</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__main_8c.html#a6c69b2fa6a56869c54f58d7ebae89427">remmina_main_quick_search_enter</a>(GtkWidget *widget, gpointer user_data)</div><div class="line"><a name="l01328"></a><span class="lineno"> 1328</span>&#160;{</div><div class="line"><a name="l01329"></a><span class="lineno"> 1329</span>&#160; <span class="keywordflow">if</span> (gtk_entry_get_text(remminamain-&gt;<a class="code" href="struct___remmina_main.html#ac2eff9c56cc7830bcf9ca4bfdf216095">entry_quick_connect_server</a>))</div><div class="line"><a name="l01330"></a><span class="lineno"> 1330</span>&#160; gtk_editable_select_region(GTK_EDITABLE(remminamain-&gt;<a class="code" href="struct___remmina_main.html#ac2eff9c56cc7830bcf9ca4bfdf216095">entry_quick_connect_server</a>), 0, -1);</div><div class="line"><a name="l01331"></a><span class="lineno"> 1331</span>&#160;}</div><div class="line"><a name="l01332"></a><span class="lineno"> 1332</span>&#160;</div><div class="line"><a name="l01333"></a><span class="lineno"><a class="line" href="remmina__main_8h.html#a0edcc1d7dc3adcbb7bb36aa0f62dec3a"> 1333</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__main_8c.html#a0edcc1d7dc3adcbb7bb36aa0f62dec3a">remmina_main_on_action_collapse</a>(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="line"><a name="l01334"></a><span class="lineno"> 1334</span>&#160;{</div><div class="line"><a name="l01335"></a><span class="lineno"> 1335</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01336"></a><span class="lineno"> 1336</span>&#160; gtk_tree_view_collapse_all(remminamain-&gt;<a class="code" href="struct___remmina_main.html#a81f987e527d521be54aaf3f46dfe7ced">tree_files_list</a>);</div><div class="line"><a name="l01337"></a><span class="lineno"> 1337</span>&#160;}</div><div class="line"><a name="l01338"></a><span class="lineno"> 1338</span>&#160;</div><div class="line"><a name="l01339"></a><span class="lineno"><a class="line" href="remmina__main_8h.html#a9896df7a92402b5a61e58420235c515a"> 1339</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__main_8c.html#a9896df7a92402b5a61e58420235c515a">remmina_main_on_action_search_toggle</a>(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="line"><a name="l01340"></a><span class="lineno"> 1340</span>&#160;{</div><div class="line"><a name="l01341"></a><span class="lineno"> 1341</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01342"></a><span class="lineno"> 1342</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Search toggle triggered&quot;</span>);</div><div class="line"><a name="l01343"></a><span class="lineno"> 1343</span>&#160; gboolean toggle_status = gtk_toggle_button_get_active(remminamain-&gt;<a class="code" href="struct___remmina_main.html#acd8f3437eee668a2b8d905a16a16be72">search_toggle</a>);</div><div class="line"><a name="l01344"></a><span class="lineno"> 1344</span>&#160;</div><div class="line"><a name="l01345"></a><span class="lineno"> 1345</span>&#160; gtk_search_bar_set_search_mode(remminamain-&gt;<a class="code" href="struct___remmina_main.html#aecb54d7c3dd1e86a16e24ea2e00d4ddd">search_bar</a>, toggle_status);</div><div class="line"><a name="l01346"></a><span class="lineno"> 1346</span>&#160; <span class="keywordflow">if</span> (toggle_status) {</div><div class="line"><a name="l01347"></a><span class="lineno"> 1347</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Search toggle is active&quot;</span>);</div><div class="line"><a name="l01348"></a><span class="lineno"> 1348</span>&#160; gtk_widget_grab_focus(GTK_WIDGET(remminamain-&gt;<a class="code" href="struct___remmina_main.html#ac2eff9c56cc7830bcf9ca4bfdf216095">entry_quick_connect_server</a>));</div><div class="line"><a name="l01349"></a><span class="lineno"> 1349</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01350"></a><span class="lineno"> 1350</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Search toggle is not active, focus is tree_files_list&quot;</span>);</div><div class="line"><a name="l01351"></a><span class="lineno"> 1351</span>&#160; gtk_widget_grab_focus(GTK_WIDGET(remminamain-&gt;<a class="code" href="struct___remmina_main.html#a81f987e527d521be54aaf3f46dfe7ced">tree_files_list</a>));</div><div class="line"><a name="l01352"></a><span class="lineno"> 1352</span>&#160; }</div><div class="line"><a name="l01353"></a><span class="lineno"> 1353</span>&#160;}</div><div class="line"><a name="l01354"></a><span class="lineno"> 1354</span>&#160;</div><div class="line"><a name="l01355"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#aea426b2e8fc03f963bb2b98cb8649adf"> 1355</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__main_8c.html#aea426b2e8fc03f963bb2b98cb8649adf">remmina_main_on_accel_search_toggle</a>(<a class="code" href="struct___remmina_main.html">RemminaMain</a> *remminamain)</div><div class="line"><a name="l01356"></a><span class="lineno"> 1356</span>&#160;{</div><div class="line"><a name="l01357"></a><span class="lineno"> 1357</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01358"></a><span class="lineno"> 1358</span>&#160; gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(remminamain-&gt;<a class="code" href="struct___remmina_main.html#acd8f3437eee668a2b8d905a16a16be72">search_toggle</a>), TRUE);</div><div class="line"><a name="l01359"></a><span class="lineno"> 1359</span>&#160;}</div><div class="line"><a name="l01360"></a><span class="lineno"> 1360</span>&#160;</div><div class="line"><a name="l01361"></a><span class="lineno"><a class="line" href="remmina__main_8h.html#ab98d51c96a87fddaa2d5d6d4614bafa8"> 1361</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__main_8c.html#ab98d51c96a87fddaa2d5d6d4614bafa8">remmina_main_on_action_expand</a>(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="line"><a name="l01362"></a><span class="lineno"> 1362</span>&#160;{</div><div class="line"><a name="l01363"></a><span class="lineno"> 1363</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01364"></a><span class="lineno"> 1364</span>&#160; gtk_tree_view_expand_all(remminamain-&gt;<a class="code" href="struct___remmina_main.html#a81f987e527d521be54aaf3f46dfe7ced">tree_files_list</a>);</div><div class="line"><a name="l01365"></a><span class="lineno"> 1365</span>&#160;}</div><div class="line"><a name="l01366"></a><span class="lineno"> 1366</span>&#160;</div><div class="line"><a name="l01367"></a><span class="lineno"> 1367</span>&#160;<span class="comment">/* Handle double click on a row in the connections list */</span></div><div class="line"><a name="l01368"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#aba1a89a2400c5cc8373c6bd34602ac10"> 1368</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__main_8c.html#aba1a89a2400c5cc8373c6bd34602ac10">remmina_main_file_list_on_row_activated</a>(GtkTreeView *tree, GtkTreePath *path, GtkTreeViewColumn *column, gpointer user_data)</div><div class="line"><a name="l01369"></a><span class="lineno"> 1369</span>&#160;{</div><div class="line"><a name="l01370"></a><span class="lineno"> 1370</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01371"></a><span class="lineno"> 1371</span>&#160;<span class="comment">/* If a connection was selected then execute the default action */</span></div><div class="line"><a name="l01372"></a><span class="lineno"> 1372</span>&#160; <span class="keywordflow">if</span> (remminamain-&gt;<a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-&gt;<a class="code" href="struct___remmina_main_priv.html#a092aebd62ba9fe50c899e416361c1d00">selected_filename</a>) {</div><div class="line"><a name="l01373"></a><span class="lineno"> 1373</span>&#160; <span class="keywordflow">switch</span> (<a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a054a55a2c39181609150cbb4d22413ef">default_action</a>) {</div><div class="line"><a name="l01374"></a><span class="lineno"> 1374</span>&#160; <span class="keywordflow">case</span> <a class="code" href="remmina__pref_8h.html#a0ed680fdb405e7195d9f14032851eebba84fe14d6d19ab0479931a6886178f2e3">REMMINA_ACTION_EDIT</a>:</div><div class="line"><a name="l01375"></a><span class="lineno"> 1375</span>&#160; <a class="code" href="remmina__main_8c.html#adfbfc580d25b58d09770a7d33ffe03cc">remmina_main_on_action_connection_edit</a>(NULL, NULL, NULL);</div><div class="line"><a name="l01376"></a><span class="lineno"> 1376</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01377"></a><span class="lineno"> 1377</span>&#160; <span class="keywordflow">case</span> <a class="code" href="remmina__pref_8h.html#a0ed680fdb405e7195d9f14032851eebbad14d19fdcc60e744406c5f80c1bb840a">REMMINA_ACTION_CONNECT</a>:</div><div class="line"><a name="l01378"></a><span class="lineno"> 1378</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l01379"></a><span class="lineno"> 1379</span>&#160; <a class="code" href="remmina__main_8c.html#a6b30ed832369f3a7153aa63f98873c9d">remmina_main_on_action_connection_connect</a>(NULL, NULL, NULL);</div><div class="line"><a name="l01380"></a><span class="lineno"> 1380</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01381"></a><span class="lineno"> 1381</span>&#160; }</div><div class="line"><a name="l01382"></a><span class="lineno"> 1382</span>&#160; }</div><div class="line"><a name="l01383"></a><span class="lineno"> 1383</span>&#160;}</div><div class="line"><a name="l01384"></a><span class="lineno"> 1384</span>&#160;</div><div class="line"><a name="l01385"></a><span class="lineno"> 1385</span>&#160;<span class="comment">/* Show the popup menu by the right button mouse click */</span></div><div class="line"><a name="l01386"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#ace72fa8f7198020464623e7117a351a9"> 1386</a></span>&#160;gboolean <a class="code" href="remmina__main_8c.html#ace72fa8f7198020464623e7117a351a9">remmina_main_file_list_on_button_press</a>(GtkWidget *widget, GdkEventButton *event, gpointer user_data)</div><div class="line"><a name="l01387"></a><span class="lineno"> 1387</span>&#160;{</div><div class="line"><a name="l01388"></a><span class="lineno"> 1388</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01389"></a><span class="lineno"> 1389</span>&#160; <span class="keywordflow">if</span> (event-&gt;button == MOUSE_BUTTON_RIGHT) {</div><div class="line"><a name="l01390"></a><span class="lineno"> 1390</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="remmina_8c.html#ab4a9a67c5372ff07b71d0558679ab7ae">kioskmode</a> &amp;&amp; <a class="code" href="remmina_8c.html#ab4a9a67c5372ff07b71d0558679ab7ae">kioskmode</a> == FALSE)</div><div class="line"><a name="l01391"></a><span class="lineno"> 1391</span>&#160;<span class="preprocessor">#if GTK_CHECK_VERSION(3, 22, 0)</span></div><div class="line"><a name="l01392"></a><span class="lineno"> 1392</span>&#160; gtk_menu_popup_at_pointer(GTK_MENU(remminamain-&gt;<a class="code" href="struct___remmina_main.html#a2d6960ab62869638a77d2fe5bd72c7f6">menu_popup</a>), (GdkEvent *)event);</div><div class="line"><a name="l01393"></a><span class="lineno"> 1393</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l01394"></a><span class="lineno"> 1394</span>&#160; gtk_menu_popup(remminamain-&gt;<a class="code" href="struct___remmina_main.html#a2d6960ab62869638a77d2fe5bd72c7f6">menu_popup</a>, NULL, NULL, NULL, NULL, event-&gt;button, event-&gt;time);</div><div class="line"><a name="l01395"></a><span class="lineno"> 1395</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01396"></a><span class="lineno"> 1396</span>&#160; }</div><div class="line"><a name="l01397"></a><span class="lineno"> 1397</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01398"></a><span class="lineno"> 1398</span>&#160;}</div><div class="line"><a name="l01399"></a><span class="lineno"> 1399</span>&#160;</div><div class="line"><a name="l01400"></a><span class="lineno"> 1400</span>&#160;<span class="comment">/* Show the popup menu by the menu key */</span></div><div class="line"><a name="l01401"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#a31102f8ca7440a22c1514bca17933193"> 1401</a></span>&#160;gboolean <a class="code" href="remmina__main_8c.html#a31102f8ca7440a22c1514bca17933193">remmina_main_file_list_on_key_press</a>(GtkWidget *widget, GdkEventKey *event, gpointer user_data)</div><div class="line"><a name="l01402"></a><span class="lineno"> 1402</span>&#160;{</div><div class="line"><a name="l01403"></a><span class="lineno"> 1403</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01404"></a><span class="lineno"> 1404</span>&#160; <span class="keywordflow">if</span> (event-&gt;keyval == GDK_KEY_Menu) {</div><div class="line"><a name="l01405"></a><span class="lineno"> 1405</span>&#160;<span class="preprocessor">#if GTK_CHECK_VERSION(3, 22, 0)</span></div><div class="line"><a name="l01406"></a><span class="lineno"> 1406</span>&#160; gtk_menu_popup_at_widget(GTK_MENU(remminamain-&gt;<a class="code" href="struct___remmina_main.html#a2d6960ab62869638a77d2fe5bd72c7f6">menu_popup</a>), widget,</div><div class="line"><a name="l01407"></a><span class="lineno"> 1407</span>&#160; GDK_GRAVITY_CENTER, GDK_GRAVITY_CENTER,</div><div class="line"><a name="l01408"></a><span class="lineno"> 1408</span>&#160; (GdkEvent *)event);</div><div class="line"><a name="l01409"></a><span class="lineno"> 1409</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l01410"></a><span class="lineno"> 1410</span>&#160; gtk_menu_popup(remminamain-&gt;<a class="code" href="struct___remmina_main.html#a2d6960ab62869638a77d2fe5bd72c7f6">menu_popup</a>, NULL, NULL, NULL, NULL, 0, event-&gt;time);</div><div class="line"><a name="l01411"></a><span class="lineno"> 1411</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01412"></a><span class="lineno"> 1412</span>&#160; }</div><div class="line"><a name="l01413"></a><span class="lineno"> 1413</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01414"></a><span class="lineno"> 1414</span>&#160;}</div><div class="line"><a name="l01415"></a><span class="lineno"> 1415</span>&#160;</div><div class="line"><a name="l01416"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#af51fc7233eb2397a5074ba37b5c5275f"> 1416</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__main_8c.html#af51fc7233eb2397a5074ba37b5c5275f">remmina_main_quick_search_on_icon_press</a>(GtkEntry *entry, GtkEntryIconPosition icon_pos, GdkEvent *event, gpointer user_data)</div><div class="line"><a name="l01417"></a><span class="lineno"> 1417</span>&#160;{</div><div class="line"><a name="l01418"></a><span class="lineno"> 1418</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01419"></a><span class="lineno"> 1419</span>&#160; <span class="keywordflow">if</span> (icon_pos == GTK_ENTRY_ICON_SECONDARY)</div><div class="line"><a name="l01420"></a><span class="lineno"> 1420</span>&#160; gtk_entry_set_text(entry, <span class="stringliteral">&quot;&quot;</span>);</div><div class="line"><a name="l01421"></a><span class="lineno"> 1421</span>&#160;}</div><div class="line"><a name="l01422"></a><span class="lineno"> 1422</span>&#160;</div><div class="line"><a name="l01423"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#a1cac4199e40e35bf3fcdb98841615657"> 1423</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__main_8c.html#a1cac4199e40e35bf3fcdb98841615657">remmina_main_quick_search_on_changed</a>(GtkEditable *editable, gpointer user_data)</div><div class="line"><a name="l01424"></a><span class="lineno"> 1424</span>&#160;{</div><div class="line"><a name="l01425"></a><span class="lineno"> 1425</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01426"></a><span class="lineno"> 1426</span>&#160; <span class="comment">/* If a search text was input then temporary set the file mode to list */</span></div><div class="line"><a name="l01427"></a><span class="lineno"> 1427</span>&#160; <span class="keywordflow">if</span> (gtk_entry_get_text_length(remminamain-&gt;<a class="code" href="struct___remmina_main.html#ac2eff9c56cc7830bcf9ca4bfdf216095">entry_quick_connect_server</a>)) {</div><div class="line"><a name="l01428"></a><span class="lineno"> 1428</span>&#160; <span class="keywordflow">if</span> (GTK_IS_TREE_STORE(remminamain-&gt;<a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-&gt;<a class="code" href="struct___remmina_main_priv.html#aec4c4540e9463a45b22a5c0b9108bc6f">file_model</a>)) {</div><div class="line"><a name="l01429"></a><span class="lineno"> 1429</span>&#160; <span class="comment">/* File view mode changed, put it to override and reload list */</span></div><div class="line"><a name="l01430"></a><span class="lineno"> 1430</span>&#160; remminamain-&gt;<a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-&gt;<a class="code" href="struct___remmina_main_priv.html#a0307278dd7770ab490f4687f2eb00e76">override_view_file_mode_to_list</a> = TRUE;</div><div class="line"><a name="l01431"></a><span class="lineno"> 1431</span>&#160; <a class="code" href="remmina__main_8c.html#a3617295e74fa84edbd41dedc601402a7">remmina_main_load_files</a>();</div><div class="line"><a name="l01432"></a><span class="lineno"> 1432</span>&#160; }</div><div class="line"><a name="l01433"></a><span class="lineno"> 1433</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01434"></a><span class="lineno"> 1434</span>&#160; <span class="keywordflow">if</span> (remminamain-&gt;<a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-&gt;<a class="code" href="struct___remmina_main_priv.html#a0307278dd7770ab490f4687f2eb00e76">override_view_file_mode_to_list</a>) {</div><div class="line"><a name="l01435"></a><span class="lineno"> 1435</span>&#160; <span class="comment">/* File view mode changed, put it to default (disable override) and reload list */</span></div><div class="line"><a name="l01436"></a><span class="lineno"> 1436</span>&#160; remminamain-&gt;<a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-&gt;<a class="code" href="struct___remmina_main_priv.html#a0307278dd7770ab490f4687f2eb00e76">override_view_file_mode_to_list</a> = FALSE;</div><div class="line"><a name="l01437"></a><span class="lineno"> 1437</span>&#160; <a class="code" href="remmina__main_8c.html#a3617295e74fa84edbd41dedc601402a7">remmina_main_load_files</a>();</div><div class="line"><a name="l01438"></a><span class="lineno"> 1438</span>&#160; }</div><div class="line"><a name="l01439"></a><span class="lineno"> 1439</span>&#160; }</div><div class="line"><a name="l01440"></a><span class="lineno"> 1440</span>&#160; gtk_tree_model_filter_refilter(GTK_TREE_MODEL_FILTER(remminamain-&gt;<a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-&gt;<a class="code" href="struct___remmina_main_priv.html#ae1e1d579bdb2517bd0f86408b9d5f97c">file_model_filter</a>));</div><div class="line"><a name="l01441"></a><span class="lineno"> 1441</span>&#160;}</div><div class="line"><a name="l01442"></a><span class="lineno"> 1442</span>&#160;</div><div class="line"><a name="l01443"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#adf073486149762f547504020484bff70"> 1443</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__main_8c.html#adf073486149762f547504020484bff70">remmina_main_on_drag_data_received</a>(GtkWidget *widget, GdkDragContext *drag_context, gint x, gint y,</div><div class="line"><a name="l01444"></a><span class="lineno"> 1444</span>&#160; GtkSelectionData *data, guint info, guint time, gpointer user_data)</div><div class="line"><a name="l01445"></a><span class="lineno"> 1445</span>&#160;{</div><div class="line"><a name="l01446"></a><span class="lineno"> 1446</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01447"></a><span class="lineno"> 1447</span>&#160; gchar **uris;</div><div class="line"><a name="l01448"></a><span class="lineno"> 1448</span>&#160; GSList *files = NULL;</div><div class="line"><a name="l01449"></a><span class="lineno"> 1449</span>&#160; gint i;</div><div class="line"><a name="l01450"></a><span class="lineno"> 1450</span>&#160;</div><div class="line"><a name="l01451"></a><span class="lineno"> 1451</span>&#160; uris = g_uri_list_extract_uris((<span class="keyword">const</span> gchar *)gtk_selection_data_get_data(data));</div><div class="line"><a name="l01452"></a><span class="lineno"> 1452</span>&#160; <span class="keywordflow">for</span> (i = 0; uris[i]; i++) {</div><div class="line"><a name="l01453"></a><span class="lineno"> 1453</span>&#160; <span class="keywordflow">if</span> (strncmp(uris[i], <span class="stringliteral">&quot;file://&quot;</span>, 7) != 0)</div><div class="line"><a name="l01454"></a><span class="lineno"> 1454</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l01455"></a><span class="lineno"> 1455</span>&#160; files = g_slist_append(files, g_strdup(uris[i] + 7));</div><div class="line"><a name="l01456"></a><span class="lineno"> 1456</span>&#160; }</div><div class="line"><a name="l01457"></a><span class="lineno"> 1457</span>&#160; g_strfreev(uris);</div><div class="line"><a name="l01458"></a><span class="lineno"> 1458</span>&#160; <a class="code" href="remmina__main_8c.html#ac767825cb87a34531306cfb587216d20">remmina_main_import_file_list</a>(files);</div><div class="line"><a name="l01459"></a><span class="lineno"> 1459</span>&#160;}</div><div class="line"><a name="l01460"></a><span class="lineno"> 1460</span>&#160;</div><div class="line"><a name="l01461"></a><span class="lineno"> 1461</span>&#160;<span class="comment">/* Add a new menuitem to the Tools menu */</span></div><div class="line"><a name="l01462"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#a7be10e330f0c2a3f74e119cde443786f"> 1462</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="remmina__main_8c.html#a7be10e330f0c2a3f74e119cde443786f">remmina_main_add_tool_plugin</a>(gchar *name, <a class="code" href="struct___remmina_plugin.html">RemminaPlugin</a> *plugin, gpointer user_data)</div><div class="line"><a name="l01463"></a><span class="lineno"> 1463</span>&#160;{</div><div class="line"><a name="l01464"></a><span class="lineno"> 1464</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01465"></a><span class="lineno"> 1465</span>&#160; <a class="code" href="struct___remmina_tool_plugin.html">RemminaToolPlugin</a> *tool_plugin = (<a class="code" href="struct___remmina_tool_plugin.html">RemminaToolPlugin</a> *)plugin;</div><div class="line"><a name="l01466"></a><span class="lineno"> 1466</span>&#160; GtkWidget *menuitem = gtk_menu_item_new_with_label(plugin-&gt;<a class="code" href="struct___remmina_plugin.html#a4ac66b7ebefb9bd8167737eb1af83cde">description</a>);</div><div class="line"><a name="l01467"></a><span class="lineno"> 1467</span>&#160;</div><div class="line"><a name="l01468"></a><span class="lineno"> 1468</span>&#160; gtk_widget_show(menuitem);</div><div class="line"><a name="l01469"></a><span class="lineno"> 1469</span>&#160; gtk_menu_shell_append(GTK_MENU_SHELL(remminamain-&gt;<a class="code" href="struct___remmina_main.html#a1575015519fedca001bb26e129331b62">menu_popup_full</a>), menuitem);</div><div class="line"><a name="l01470"></a><span class="lineno"> 1470</span>&#160; g_signal_connect(G_OBJECT(menuitem), <span class="stringliteral">&quot;activate&quot;</span>, G_CALLBACK(tool_plugin-&gt;<a class="code" href="struct___remmina_tool_plugin.html#ad83c522c030d51d5f0313b1f77f04d74">exec_func</a>), tool_plugin);</div><div class="line"><a name="l01471"></a><span class="lineno"> 1471</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01472"></a><span class="lineno"> 1472</span>&#160;}</div><div class="line"><a name="l01473"></a><span class="lineno"> 1473</span>&#160;</div><div class="line"><a name="l01474"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#a861de52d1b5ec54591d0592de6289d79"> 1474</a></span>&#160;gboolean <a class="code" href="remmina__main_8c.html#a861de52d1b5ec54591d0592de6289d79">remmina_main_on_window_state_event</a>(GtkWidget *widget, GdkEventWindowState *event, gpointer user_data)</div><div class="line"><a name="l01475"></a><span class="lineno"> 1475</span>&#160;{</div><div class="line"><a name="l01476"></a><span class="lineno"> 1476</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01477"></a><span class="lineno"> 1477</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01478"></a><span class="lineno"> 1478</span>&#160;}</div><div class="line"><a name="l01479"></a><span class="lineno"> 1479</span>&#160;</div><div class="line"><a name="l01480"></a><span class="lineno"> 1480</span>&#160;<span class="comment">/* Remmina main window initialization */</span></div><div class="line"><a name="l01481"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#afefc1b651e1c546e949dbe6df72b0300"> 1481</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__main_8c.html#afefc1b651e1c546e949dbe6df72b0300">remmina_main_init</a>(<span class="keywordtype">void</span>)</div><div class="line"><a name="l01482"></a><span class="lineno"> 1482</span>&#160;{</div><div class="line"><a name="l01483"></a><span class="lineno"> 1483</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01484"></a><span class="lineno"> 1484</span>&#160; <span class="keywordtype">int</span> i, qcp_idx, qcp_actidx;</div><div class="line"><a name="l01485"></a><span class="lineno"> 1485</span>&#160; <span class="keywordtype">char</span> *name;</div><div class="line"><a name="l01486"></a><span class="lineno"> 1486</span>&#160; GtkSettings *settings;</div><div class="line"><a name="l01487"></a><span class="lineno"> 1487</span>&#160;</div><div class="line"><a name="l01488"></a><span class="lineno"> 1488</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Initializing the Remmina main window&quot;</span>);</div><div class="line"><a name="l01489"></a><span class="lineno"> 1489</span>&#160; <span class="comment">/* Switch to a dark theme if the user enabled it */</span></div><div class="line"><a name="l01490"></a><span class="lineno"> 1490</span>&#160; settings = gtk_settings_get_default();</div><div class="line"><a name="l01491"></a><span class="lineno"> 1491</span>&#160; g_object_set(settings, <span class="stringliteral">&quot;gtk-application-prefer-dark-theme&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a7c139ee405d50330b1d9bfb646c0258c">dark_theme</a>, NULL);</div><div class="line"><a name="l01492"></a><span class="lineno"> 1492</span>&#160;</div><div class="line"><a name="l01493"></a><span class="lineno"> 1493</span>&#160; REMMINA_DEBUG (<span class="stringliteral">&quot;Initializing monitor&quot;</span>);</div><div class="line"><a name="l01494"></a><span class="lineno"> 1494</span>&#160; remminamain-&gt;<a class="code" href="struct___remmina_main.html#a0e6602776373cf6a198d249df6e87150">monitor</a> = <a class="code" href="remmina__monitor_8c.html#ac37c2579934e206d669c1af9b51f8ef1">remmina_network_monitor_new</a>();</div><div class="line"><a name="l01495"></a><span class="lineno"> 1495</span>&#160;</div><div class="line"><a name="l01496"></a><span class="lineno"> 1496</span>&#160; remminamain-&gt;<a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-&gt;<a class="code" href="struct___remmina_main_priv.html#a467cf8ebc87ccdb68b9f88bce95c9f3a">expanded_group</a> = <a class="code" href="remmina__string__array_8c.html#a7f1c8e427a25c2d5cede3952b1d0ad90">remmina_string_array_new_from_string</a>(<a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#aa8d4c923cb9ca1be451436d1790e8ee5">expanded_group</a>);</div><div class="line"><a name="l01497"></a><span class="lineno"> 1497</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="remmina_8c.html#ab4a9a67c5372ff07b71d0558679ab7ae">kioskmode</a> &amp;&amp; <a class="code" href="remmina_8c.html#ab4a9a67c5372ff07b71d0558679ab7ae">kioskmode</a> == FALSE)</div><div class="line"><a name="l01498"></a><span class="lineno"> 1498</span>&#160; gtk_window_set_title(remminamain-&gt;<a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a>, _(<span class="stringliteral">&quot;Remmina Remote Desktop Client&quot;</span>));</div><div class="line"><a name="l01499"></a><span class="lineno"> 1499</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01500"></a><span class="lineno"> 1500</span>&#160; gtk_window_set_title(remminamain-&gt;<a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a>, _(<span class="stringliteral">&quot;Remmina Kiosk&quot;</span>));</div><div class="line"><a name="l01501"></a><span class="lineno"> 1501</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="remmina_8c.html#ab4a9a67c5372ff07b71d0558679ab7ae">kioskmode</a> &amp;&amp; <a class="code" href="remmina_8c.html#ab4a9a67c5372ff07b71d0558679ab7ae">kioskmode</a> == FALSE) {</div><div class="line"><a name="l01502"></a><span class="lineno"> 1502</span>&#160; gtk_window_set_default_size(remminamain-&gt;<a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a6318ff8e2f73d36fb8b35cbed503c222">main_width</a>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#aeb86dc8005c98ce2eab57bd900467875">main_height</a>);</div><div class="line"><a name="l01503"></a><span class="lineno"> 1503</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a8edfd2a9a9a06b1fd876fbe8742b9ff6">main_maximize</a>)</div><div class="line"><a name="l01504"></a><span class="lineno"> 1504</span>&#160; gtk_window_maximize(remminamain-&gt;<a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a>);</div><div class="line"><a name="l01505"></a><span class="lineno"> 1505</span>&#160; }</div><div class="line"><a name="l01506"></a><span class="lineno"> 1506</span>&#160; <span class="comment">/* Honor global preferences Search Bar visibility */</span></div><div class="line"><a name="l01507"></a><span class="lineno"> 1507</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ae293a1fa591d3db78bd587c5af9c9101">hide_searchbar</a>)</div><div class="line"><a name="l01508"></a><span class="lineno"> 1508</span>&#160; gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(RM_GET_OBJECT(<span class="stringliteral">&quot;search_toggle&quot;</span>)), FALSE);</div><div class="line"><a name="l01509"></a><span class="lineno"> 1509</span>&#160;</div><div class="line"><a name="l01510"></a><span class="lineno"> 1510</span>&#160; <span class="comment">/* Add a GtkMenuItem to the Tools menu for each plugin of type REMMINA_PLUGIN_TYPE_TOOL */</span></div><div class="line"><a name="l01511"></a><span class="lineno"> 1511</span>&#160; <a class="code" href="remmina__plugin__manager_8c.html#a13f13a6a4280268656f258cb5aeff031">remmina_plugin_manager_for_each_plugin</a>(<a class="code" href="plugin_8h.html#aaf53c620d115a4642130227cff4a624aadd037352a609e2dc890595f9d95bd1ac">REMMINA_PLUGIN_TYPE_TOOL</a>, <a class="code" href="remmina__main_8c.html#a7be10e330f0c2a3f74e119cde443786f">remmina_main_add_tool_plugin</a>, remminamain);</div><div class="line"><a name="l01512"></a><span class="lineno"> 1512</span>&#160;</div><div class="line"><a name="l01513"></a><span class="lineno"> 1513</span>&#160; <span class="comment">/* Add available quick connect protocols to remminamain-&gt;combo_quick_connect_protocol */</span></div><div class="line"><a name="l01514"></a><span class="lineno"> 1514</span>&#160; qcp_idx = qcp_actidx = 0;</div><div class="line"><a name="l01515"></a><span class="lineno"> 1515</span>&#160; <span class="keywordflow">for</span> (i = 0; i &lt; <span class="keyword">sizeof</span>(<a class="code" href="remmina__main_8c.html#aace9ecdd0b74d392ad6ed541bd605c1c">quick_connect_plugin_list</a>) / <span class="keyword">sizeof</span>(<a class="code" href="remmina__main_8c.html#aace9ecdd0b74d392ad6ed541bd605c1c">quick_connect_plugin_list</a>[0]); i++) {</div><div class="line"><a name="l01516"></a><span class="lineno"> 1516</span>&#160; name = <a class="code" href="remmina__main_8c.html#aace9ecdd0b74d392ad6ed541bd605c1c">quick_connect_plugin_list</a>[i];</div><div class="line"><a name="l01517"></a><span class="lineno"> 1517</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="remmina__plugin__manager_8c.html#a3872c8656a8a3d5147bcc603471c1932">remmina_plugin_manager_get_plugin</a>(<a class="code" href="plugin_8h.html#aaf53c620d115a4642130227cff4a624aa45e094c248384c12cdafd9d088e4aa24">REMMINA_PLUGIN_TYPE_PROTOCOL</a>, name)) {</div><div class="line"><a name="l01518"></a><span class="lineno"> 1518</span>&#160; gtk_combo_box_text_append(remminamain-&gt;<a class="code" href="struct___remmina_main.html#a35f10af8065b3b64ba6f26db60061d39">combo_quick_connect_protocol</a>, name, name);</div><div class="line"><a name="l01519"></a><span class="lineno"> 1519</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ac31f888a39eec7ef6de922c7b53d044e">last_quickconnect_protocol</a> != NULL &amp;&amp; strcmp(name, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ac31f888a39eec7ef6de922c7b53d044e">last_quickconnect_protocol</a>) == 0)</div><div class="line"><a name="l01520"></a><span class="lineno"> 1520</span>&#160; qcp_actidx = qcp_idx;</div><div class="line"><a name="l01521"></a><span class="lineno"> 1521</span>&#160; qcp_idx++;</div><div class="line"><a name="l01522"></a><span class="lineno"> 1522</span>&#160; }</div><div class="line"><a name="l01523"></a><span class="lineno"> 1523</span>&#160; }</div><div class="line"><a name="l01524"></a><span class="lineno"> 1524</span>&#160; gtk_combo_box_set_active(GTK_COMBO_BOX(remminamain-&gt;<a class="code" href="struct___remmina_main.html#a35f10af8065b3b64ba6f26db60061d39">combo_quick_connect_protocol</a>), qcp_actidx);</div><div class="line"><a name="l01525"></a><span class="lineno"> 1525</span>&#160;</div><div class="line"><a name="l01526"></a><span class="lineno"> 1526</span>&#160; <span class="comment">/* Connect the group accelerators to the GtkWindow */</span></div><div class="line"><a name="l01527"></a><span class="lineno"> 1527</span>&#160; <span class="comment">//gtk_window_add_accel_group(remminamain-&gt;window, remminamain-&gt;accelgroup_shortcuts);</span></div><div class="line"><a name="l01528"></a><span class="lineno"> 1528</span>&#160; <span class="comment">/* Set the Quick Connection */</span></div><div class="line"><a name="l01529"></a><span class="lineno"> 1529</span>&#160; gtk_entry_set_activates_default(remminamain-&gt;<a class="code" href="struct___remmina_main.html#ac2eff9c56cc7830bcf9ca4bfdf216095">entry_quick_connect_server</a>, TRUE);</div><div class="line"><a name="l01530"></a><span class="lineno"> 1530</span>&#160; <span class="comment">/* Set the TreeView for the files list */</span></div><div class="line"><a name="l01531"></a><span class="lineno"> 1531</span>&#160; gtk_tree_selection_set_select_function(</div><div class="line"><a name="l01532"></a><span class="lineno"> 1532</span>&#160; gtk_tree_view_get_selection(remminamain-&gt;<a class="code" href="struct___remmina_main.html#a81f987e527d521be54aaf3f46dfe7ced">tree_files_list</a>),</div><div class="line"><a name="l01533"></a><span class="lineno"> 1533</span>&#160; <a class="code" href="remmina__main_8c.html#a3c5043279b5d98d4d08635d33402ea66">remmina_main_selection_func</a>, NULL, NULL);</div><div class="line"><a name="l01535"></a><span class="lineno"> 1535</span>&#160; gtk_tree_view_set_search_entry(remminamain-&gt;<a class="code" href="struct___remmina_main.html#a81f987e527d521be54aaf3f46dfe7ced">tree_files_list</a>, GTK_ENTRY(remminamain-&gt;<a class="code" href="struct___remmina_main.html#ac2eff9c56cc7830bcf9ca4bfdf216095">entry_quick_connect_server</a>));</div><div class="line"><a name="l01536"></a><span class="lineno"> 1536</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ae293a1fa591d3db78bd587c5af9c9101">hide_searchbar</a>)</div><div class="line"><a name="l01537"></a><span class="lineno"> 1537</span>&#160; gtk_widget_grab_focus(GTK_WIDGET(remminamain-&gt;<a class="code" href="struct___remmina_main.html#a81f987e527d521be54aaf3f46dfe7ced">tree_files_list</a>));</div><div class="line"><a name="l01538"></a><span class="lineno"> 1538</span>&#160; <span class="comment">/* Load the files list */</span></div><div class="line"><a name="l01539"></a><span class="lineno"> 1539</span>&#160; <a class="code" href="remmina__main_8c.html#a3617295e74fa84edbd41dedc601402a7">remmina_main_load_files</a>();</div><div class="line"><a name="l01540"></a><span class="lineno"> 1540</span>&#160;</div><div class="line"><a name="l01541"></a><span class="lineno"> 1541</span>&#160; <span class="comment">/* Drag-n-drop support */</span></div><div class="line"><a name="l01542"></a><span class="lineno"> 1542</span>&#160; gtk_drag_dest_set(GTK_WIDGET(remminamain-&gt;<a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a>), GTK_DEST_DEFAULT_ALL, <a class="code" href="remmina__main_8c.html#a8ccd8303ada6e26880504fc58812fbda">remmina_drop_types</a>, 1, GDK_ACTION_COPY);</div><div class="line"><a name="l01543"></a><span class="lineno"> 1543</span>&#160;</div><div class="line"><a name="l01544"></a><span class="lineno"> 1544</span>&#160; <span class="comment">/* Finish initialization */</span></div><div class="line"><a name="l01545"></a><span class="lineno"> 1545</span>&#160; remminamain-&gt;<a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-&gt;<a class="code" href="struct___remmina_main_priv.html#a7a4eb201dd185ba606af5c486ef55e7f">initialized</a> = TRUE;</div><div class="line"><a name="l01546"></a><span class="lineno"> 1546</span>&#160;</div><div class="line"><a name="l01547"></a><span class="lineno"> 1547</span>&#160; <span class="comment">/* Register the window in remmina_widget_pool with GType=GTK_WINDOW and TAG=remmina-main-window */</span></div><div class="line"><a name="l01548"></a><span class="lineno"> 1548</span>&#160; g_object_set_data(G_OBJECT(remminamain-&gt;<a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a>), <span class="stringliteral">&quot;tag&quot;</span>, <span class="stringliteral">&quot;remmina-main-window&quot;</span>);</div><div class="line"><a name="l01549"></a><span class="lineno"> 1549</span>&#160; <a class="code" href="remmina__widget__pool_8c.html#ae3c9c9853eb5bedbfeadbfac1d495b95">remmina_widget_pool_register</a>(GTK_WIDGET(remminamain-&gt;<a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a>));</div><div class="line"><a name="l01550"></a><span class="lineno"> 1550</span>&#160;}</div><div class="line"><a name="l01551"></a><span class="lineno"> 1551</span>&#160;</div><div class="line"><a name="l01552"></a><span class="lineno"> 1552</span>&#160;<span class="comment">/* Signal handler for &quot;show&quot; on remminamain-&gt;window */</span></div><div class="line"><a name="l01553"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#aa4d9b76d32fa500f4b9f39a19e4eaaf2"> 1553</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__main_8c.html#aa4d9b76d32fa500f4b9f39a19e4eaaf2">remmina_main_on_show</a>(GtkWidget *w, gpointer user_data)</div><div class="line"><a name="l01554"></a><span class="lineno"> 1554</span>&#160;{</div><div class="line"><a name="l01555"></a><span class="lineno"> 1555</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01556"></a><span class="lineno"> 1556</span>&#160;<span class="preprocessor">#ifdef SNAP_BUILD</span></div><div class="line"><a name="l01557"></a><span class="lineno"> 1557</span>&#160; <a class="code" href="remmina__main_8c.html#ab08aae433b625c3a84330630fe2bd2d5">remmina_main_show_snap_welcome</a>();</div><div class="line"><a name="l01558"></a><span class="lineno"> 1558</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01559"></a><span class="lineno"> 1559</span>&#160;}</div><div class="line"><a name="l01560"></a><span class="lineno"> 1560</span>&#160;</div><div class="line"><a name="l01561"></a><span class="lineno"> 1561</span>&#160;<span class="comment">/* RemminaMain instance */</span></div><div class="line"><a name="l01562"></a><span class="lineno"><a class="line" href="remmina__main_8h.html#a0c322c3136c4225d5f8d4cee318afce7"> 1562</a></span>&#160;GtkWidget *<a class="code" href="remmina__main_8c.html#af14b1942a754d7b2f5c10266208ebe01">remmina_main_new</a>(<span class="keywordtype">void</span>)</div><div class="line"><a name="l01563"></a><span class="lineno"> 1563</span>&#160;{</div><div class="line"><a name="l01564"></a><span class="lineno"> 1564</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01565"></a><span class="lineno"> 1565</span>&#160; GSimpleActionGroup *actions;</div><div class="line"><a name="l01566"></a><span class="lineno"> 1566</span>&#160; GtkAccelGroup *accel_group = NULL;</div><div class="line"><a name="l01567"></a><span class="lineno"> 1567</span>&#160;</div><div class="line"><a name="l01568"></a><span class="lineno"> 1568</span>&#160; remminamain = g_new0(<a class="code" href="struct___remmina_main.html">RemminaMain</a>, 1);</div><div class="line"><a name="l01569"></a><span class="lineno"> 1569</span>&#160; remminamain-&gt;<a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a> = g_new0(<a class="code" href="struct___remmina_main_priv.html">RemminaMainPriv</a>, 1);</div><div class="line"><a name="l01570"></a><span class="lineno"> 1570</span>&#160; <span class="comment">/* Assign UI widgets to the private members */</span></div><div class="line"><a name="l01571"></a><span class="lineno"> 1571</span>&#160; remminamain-&gt;<a class="code" href="struct___remmina_main.html#ab7c6aebff1b06ef97c36bfa9d360b0c1">builder</a> = <a class="code" href="remmina__public_8c.html#a4573e086e1ff8507eb9447b25bf11b92">remmina_public_gtk_builder_new_from_resource</a>(<span class="stringliteral">&quot;/org/remmina/Remmina/src/../data/ui/remmina_main.glade&quot;</span>);</div><div class="line"><a name="l01572"></a><span class="lineno"> 1572</span>&#160; remminamain-&gt;<a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a> = GTK_WINDOW(RM_GET_OBJECT(<span class="stringliteral">&quot;RemminaMain&quot;</span>));</div><div class="line"><a name="l01573"></a><span class="lineno"> 1573</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="remmina_8c.html#ab4a9a67c5372ff07b71d0558679ab7ae">kioskmode</a> &amp;&amp; <a class="code" href="remmina_8c.html#ab4a9a67c5372ff07b71d0558679ab7ae">kioskmode</a> == TRUE) {</div><div class="line"><a name="l01574"></a><span class="lineno"> 1574</span>&#160; gtk_window_set_position(remminamain-&gt;<a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a>, GTK_WIN_POS_CENTER_ALWAYS);</div><div class="line"><a name="l01575"></a><span class="lineno"> 1575</span>&#160; gtk_window_set_default_size(remminamain-&gt;<a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a>, 800, 400);</div><div class="line"><a name="l01576"></a><span class="lineno"> 1576</span>&#160; gtk_window_set_resizable(remminamain-&gt;<a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a>, FALSE);</div><div class="line"><a name="l01577"></a><span class="lineno"> 1577</span>&#160; }</div><div class="line"><a name="l01578"></a><span class="lineno"> 1578</span>&#160; <span class="comment">/* New Button */</span></div><div class="line"><a name="l01579"></a><span class="lineno"> 1579</span>&#160; remminamain-&gt;<a class="code" href="struct___remmina_main.html#a4db5c4960c9dbe3e798528bacb31456e">button_new</a> = GTK_BUTTON(RM_GET_OBJECT(<span class="stringliteral">&quot;button_new&quot;</span>));</div><div class="line"><a name="l01580"></a><span class="lineno"> 1580</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="remmina_8c.html#ab4a9a67c5372ff07b71d0558679ab7ae">kioskmode</a> &amp;&amp; <a class="code" href="remmina_8c.html#ab4a9a67c5372ff07b71d0558679ab7ae">kioskmode</a> == TRUE)</div><div class="line"><a name="l01581"></a><span class="lineno"> 1581</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(remminamain-&gt;<a class="code" href="struct___remmina_main.html#a4db5c4960c9dbe3e798528bacb31456e">button_new</a>), FALSE);</div><div class="line"><a name="l01582"></a><span class="lineno"> 1582</span>&#160; <span class="comment">/* Search bar */</span></div><div class="line"><a name="l01583"></a><span class="lineno"> 1583</span>&#160; remminamain-&gt;<a class="code" href="struct___remmina_main.html#acd8f3437eee668a2b8d905a16a16be72">search_toggle</a> = GTK_TOGGLE_BUTTON(RM_GET_OBJECT(<span class="stringliteral">&quot;search_toggle&quot;</span>));</div><div class="line"><a name="l01584"></a><span class="lineno"> 1584</span>&#160; remminamain-&gt;<a class="code" href="struct___remmina_main.html#aecb54d7c3dd1e86a16e24ea2e00d4ddd">search_bar</a> = GTK_SEARCH_BAR(RM_GET_OBJECT(<span class="stringliteral">&quot;search_bar&quot;</span>));</div><div class="line"><a name="l01585"></a><span class="lineno"> 1585</span>&#160; <span class="comment">/* view mode list/tree */</span></div><div class="line"><a name="l01586"></a><span class="lineno"> 1586</span>&#160; remminamain-&gt;<a class="code" href="struct___remmina_main.html#ae3c2c0b9855bb44b5b9a27a3178d32e7">view_toggle_button</a> = GTK_TOGGLE_BUTTON(RM_GET_OBJECT(<span class="stringliteral">&quot;view_toggle_button&quot;</span>));</div><div class="line"><a name="l01587"></a><span class="lineno"> 1587</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="remmina_8c.html#ab4a9a67c5372ff07b71d0558679ab7ae">kioskmode</a> &amp;&amp; <a class="code" href="remmina_8c.html#ab4a9a67c5372ff07b71d0558679ab7ae">kioskmode</a> == TRUE)</div><div class="line"><a name="l01588"></a><span class="lineno"> 1588</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(remminamain-&gt;<a class="code" href="struct___remmina_main.html#ae3c2c0b9855bb44b5b9a27a3178d32e7">view_toggle_button</a>), FALSE);</div><div class="line"><a name="l01589"></a><span class="lineno"> 1589</span>&#160;</div><div class="line"><a name="l01590"></a><span class="lineno"> 1590</span>&#160; <span class="comment">/* Menu widgets */</span></div><div class="line"><a name="l01591"></a><span class="lineno"> 1591</span>&#160; remminamain-&gt;<a class="code" href="struct___remmina_main.html#a2d6960ab62869638a77d2fe5bd72c7f6">menu_popup</a> = GTK_MENU(RM_GET_OBJECT(<span class="stringliteral">&quot;menu_popup&quot;</span>));</div><div class="line"><a name="l01592"></a><span class="lineno"> 1592</span>&#160; remminamain-&gt;<a class="code" href="struct___remmina_main.html#ab3be770af5f21758fa641b274ca967ec">menu_header_button</a> = GTK_MENU_BUTTON(RM_GET_OBJECT(<span class="stringliteral">&quot;menu_header_button&quot;</span>));</div><div class="line"><a name="l01593"></a><span class="lineno"> 1593</span>&#160; remminamain-&gt;<a class="code" href="struct___remmina_main.html#a1575015519fedca001bb26e129331b62">menu_popup_full</a> = GTK_MENU(RM_GET_OBJECT(<span class="stringliteral">&quot;menu_popup_full&quot;</span>));</div><div class="line"><a name="l01594"></a><span class="lineno"> 1594</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="remmina_8c.html#ab4a9a67c5372ff07b71d0558679ab7ae">kioskmode</a> &amp;&amp; <a class="code" href="remmina_8c.html#ab4a9a67c5372ff07b71d0558679ab7ae">kioskmode</a> == TRUE) {</div><div class="line"><a name="l01595"></a><span class="lineno"> 1595</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(remminamain-&gt;<a class="code" href="struct___remmina_main.html#a1575015519fedca001bb26e129331b62">menu_popup_full</a>), FALSE);</div><div class="line"><a name="l01596"></a><span class="lineno"> 1596</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(remminamain-&gt;<a class="code" href="struct___remmina_main.html#ab3be770af5f21758fa641b274ca967ec">menu_header_button</a>), FALSE);</div><div class="line"><a name="l01597"></a><span class="lineno"> 1597</span>&#160; }</div><div class="line"><a name="l01598"></a><span class="lineno"> 1598</span>&#160; <span class="comment">/* View mode radios */</span></div><div class="line"><a name="l01599"></a><span class="lineno"> 1599</span>&#160; remminamain-&gt;<a class="code" href="struct___remmina_main.html#a6288ed69d372d1047ce94c74e77e0fd4">menuitem_view_mode_list</a> = GTK_RADIO_MENU_ITEM(RM_GET_OBJECT(<span class="stringliteral">&quot;menuitem_view_mode_list&quot;</span>));</div><div class="line"><a name="l01600"></a><span class="lineno"> 1600</span>&#160; remminamain-&gt;<a class="code" href="struct___remmina_main.html#a670425eaf7430854a172ee0f41c4e5e0">menuitem_view_mode_tree</a> = GTK_RADIO_MENU_ITEM(RM_GET_OBJECT(<span class="stringliteral">&quot;menuitem_view_mode_tree&quot;</span>));</div><div class="line"><a name="l01601"></a><span class="lineno"> 1601</span>&#160; <span class="comment">/* Quick connect objects */</span></div><div class="line"><a name="l01602"></a><span class="lineno"> 1602</span>&#160; remminamain-&gt;<a class="code" href="struct___remmina_main.html#a7b03d239c21141a202d0698492cfae95">box_quick_connect</a> = GTK_BOX(RM_GET_OBJECT(<span class="stringliteral">&quot;box_quick_connect&quot;</span>));</div><div class="line"><a name="l01603"></a><span class="lineno"> 1603</span>&#160; remminamain-&gt;<a class="code" href="struct___remmina_main.html#a35f10af8065b3b64ba6f26db60061d39">combo_quick_connect_protocol</a> = GTK_COMBO_BOX_TEXT(RM_GET_OBJECT(<span class="stringliteral">&quot;combo_quick_connect_protocol&quot;</span>));</div><div class="line"><a name="l01604"></a><span class="lineno"> 1604</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="remmina_8c.html#ab4a9a67c5372ff07b71d0558679ab7ae">kioskmode</a> &amp;&amp; <a class="code" href="remmina_8c.html#ab4a9a67c5372ff07b71d0558679ab7ae">kioskmode</a> == TRUE)</div><div class="line"><a name="l01605"></a><span class="lineno"> 1605</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(remminamain-&gt;<a class="code" href="struct___remmina_main.html#a35f10af8065b3b64ba6f26db60061d39">combo_quick_connect_protocol</a>), FALSE);</div><div class="line"><a name="l01606"></a><span class="lineno"> 1606</span>&#160; remminamain-&gt;<a class="code" href="struct___remmina_main.html#ac2eff9c56cc7830bcf9ca4bfdf216095">entry_quick_connect_server</a> = GTK_ENTRY(RM_GET_OBJECT(<span class="stringliteral">&quot;entry_quick_connect_server&quot;</span>));</div><div class="line"><a name="l01607"></a><span class="lineno"> 1607</span>&#160; <span class="comment">/* Other widgets */</span></div><div class="line"><a name="l01608"></a><span class="lineno"> 1608</span>&#160; remminamain-&gt;<a class="code" href="struct___remmina_main.html#a81f987e527d521be54aaf3f46dfe7ced">tree_files_list</a> = GTK_TREE_VIEW(RM_GET_OBJECT(<span class="stringliteral">&quot;tree_files_list&quot;</span>));</div><div class="line"><a name="l01609"></a><span class="lineno"> 1609</span>&#160; remminamain-&gt;<a class="code" href="struct___remmina_main.html#aa2b3c232b59da2278215d446b93db0e5">column_files_list_name</a> = GTK_TREE_VIEW_COLUMN(RM_GET_OBJECT(<span class="stringliteral">&quot;column_files_list_name&quot;</span>));</div><div class="line"><a name="l01610"></a><span class="lineno"> 1610</span>&#160; remminamain-&gt;<a class="code" href="struct___remmina_main.html#a56ac6ffe61c0d3663ebc6b26e65a8cbc">column_files_list_group</a> = GTK_TREE_VIEW_COLUMN(RM_GET_OBJECT(<span class="stringliteral">&quot;column_files_list_group&quot;</span>));</div><div class="line"><a name="l01611"></a><span class="lineno"> 1611</span>&#160; remminamain-&gt;<a class="code" href="struct___remmina_main.html#a7db532834f4fd6360956cb0e2383b0fb">column_files_list_server</a> = GTK_TREE_VIEW_COLUMN(RM_GET_OBJECT(<span class="stringliteral">&quot;column_files_list_server&quot;</span>));</div><div class="line"><a name="l01612"></a><span class="lineno"> 1612</span>&#160; remminamain-&gt;<a class="code" href="struct___remmina_main.html#a8e21f782dd6e0a6d80f0f622898b2a48">column_files_list_plugin</a> = GTK_TREE_VIEW_COLUMN(RM_GET_OBJECT(<span class="stringliteral">&quot;column_files_list_plugin&quot;</span>));</div><div class="line"><a name="l01613"></a><span class="lineno"> 1613</span>&#160; remminamain-&gt;<a class="code" href="struct___remmina_main.html#a1ffeff8198ae0dc7c2461001118fcc5a">column_files_list_date</a> = GTK_TREE_VIEW_COLUMN(RM_GET_OBJECT(<span class="stringliteral">&quot;column_files_list_date&quot;</span>));</div><div class="line"><a name="l01614"></a><span class="lineno"> 1614</span>&#160; remminamain-&gt;<a class="code" href="struct___remmina_main.html#ab743fa626843d8fbb669fbd01819aea9">column_files_list_notes</a> = GTK_TREE_VIEW_COLUMN(RM_GET_OBJECT(<span class="stringliteral">&quot;column_files_list_notes&quot;</span>));</div><div class="line"><a name="l01615"></a><span class="lineno"> 1615</span>&#160; gtk_tree_view_column_set_fixed_width(remminamain-&gt;<a class="code" href="struct___remmina_main.html#ab743fa626843d8fbb669fbd01819aea9">column_files_list_notes</a>, 100);</div><div class="line"><a name="l01616"></a><span class="lineno"> 1616</span>&#160; remminamain-&gt;<a class="code" href="struct___remmina_main.html#acacd90f3e6df6a864154edba01464ae2">statusbar_main</a> = GTK_STATUSBAR(RM_GET_OBJECT(<span class="stringliteral">&quot;statusbar_main&quot;</span>));</div><div class="line"><a name="l01617"></a><span class="lineno"> 1617</span>&#160; <span class="comment">/* signals */</span></div><div class="line"><a name="l01618"></a><span class="lineno"> 1618</span>&#160; g_signal_connect(remminamain-&gt;<a class="code" href="struct___remmina_main.html#ac2eff9c56cc7830bcf9ca4bfdf216095">entry_quick_connect_server</a>, <span class="stringliteral">&quot;key-release-event&quot;</span>, G_CALLBACK(<a class="code" href="remmina__main_8c.html#af129aea3f5f3ec56b061187a81d43e4c">remmina_main_search_key_event</a>), NULL);</div><div class="line"><a name="l01619"></a><span class="lineno"> 1619</span>&#160; g_signal_connect(remminamain-&gt;<a class="code" href="struct___remmina_main.html#a81f987e527d521be54aaf3f46dfe7ced">tree_files_list</a>, <span class="stringliteral">&quot;row-activated&quot;</span>, G_CALLBACK(<a class="code" href="remmina__main_8c.html#a4477897686d091d6f57e7f9401674a8c">remmina_main_tree_row_activated</a>), NULL);</div><div class="line"><a name="l01620"></a><span class="lineno"> 1620</span>&#160; <span class="comment">/* Non widget objects */</span></div><div class="line"><a name="l01621"></a><span class="lineno"> 1621</span>&#160; actions = g_simple_action_group_new();</div><div class="line"><a name="l01622"></a><span class="lineno"> 1622</span>&#160; g_action_map_add_action_entries(G_ACTION_MAP(actions), <a class="code" href="remmina__main_8c.html#a923b3e2712d969eb59d9291e99f933e8">app_actions</a>, G_N_ELEMENTS(<a class="code" href="remmina__main_8c.html#a923b3e2712d969eb59d9291e99f933e8">app_actions</a>), remminamain-&gt;<a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a>);</div><div class="line"><a name="l01623"></a><span class="lineno"> 1623</span>&#160; gtk_widget_insert_action_group(GTK_WIDGET(remminamain-&gt;<a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a>), <span class="stringliteral">&quot;app&quot;</span>, G_ACTION_GROUP(actions));</div><div class="line"><a name="l01624"></a><span class="lineno"> 1624</span>&#160; g_action_map_add_action_entries(G_ACTION_MAP(actions), <a class="code" href="remmina__main_8c.html#af146cc1f982c98a9c8a5ac43cc1508f3">main_actions</a>, G_N_ELEMENTS(<a class="code" href="remmina__main_8c.html#af146cc1f982c98a9c8a5ac43cc1508f3">main_actions</a>), remminamain-&gt;<a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a>);</div><div class="line"><a name="l01625"></a><span class="lineno"> 1625</span>&#160; gtk_widget_insert_action_group(GTK_WIDGET(remminamain-&gt;<a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a>), <span class="stringliteral">&quot;main&quot;</span>, G_ACTION_GROUP(actions));</div><div class="line"><a name="l01626"></a><span class="lineno"> 1626</span>&#160; g_object_unref(actions);</div><div class="line"><a name="l01627"></a><span class="lineno"> 1627</span>&#160; <span class="comment">/* Accelerators */</span></div><div class="line"><a name="l01628"></a><span class="lineno"> 1628</span>&#160; accel_group = gtk_accel_group_new();</div><div class="line"><a name="l01629"></a><span class="lineno"> 1629</span>&#160; gtk_window_add_accel_group(remminamain-&gt;<a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a>, accel_group);</div><div class="line"><a name="l01630"></a><span class="lineno"> 1630</span>&#160; gtk_accel_group_connect(accel_group, GDK_KEY_Q, GDK_CONTROL_MASK, 0,</div><div class="line"><a name="l01631"></a><span class="lineno"> 1631</span>&#160; g_cclosure_new_swap(G_CALLBACK(<a class="code" href="remmina__main_8c.html#a5445e5568a6fc04d08b620829a59334a">remmina_main_on_action_application_quit</a>), NULL, NULL));</div><div class="line"><a name="l01632"></a><span class="lineno"> 1632</span>&#160; <span class="comment">// TODO: This crash remmina because the function doesn&#39;t receive the parameter we expect</span></div><div class="line"><a name="l01633"></a><span class="lineno"> 1633</span>&#160; gtk_accel_group_connect(accel_group, GDK_KEY_P, GDK_CONTROL_MASK, 0,</div><div class="line"><a name="l01634"></a><span class="lineno"> 1634</span>&#160; g_cclosure_new_swap(G_CALLBACK(<a class="code" href="remmina__main_8c.html#a1e8b7e8c0f7a47dc0409ae6eb18cfc6a">remmina_main_on_accel_application_preferences</a>), NULL, NULL));</div><div class="line"><a name="l01635"></a><span class="lineno"> 1635</span>&#160; gtk_accel_group_connect(accel_group, GDK_KEY_F, GDK_CONTROL_MASK, 0,</div><div class="line"><a name="l01636"></a><span class="lineno"> 1636</span>&#160; g_cclosure_new_swap(G_CALLBACK(<a class="code" href="remmina__main_8c.html#aea426b2e8fc03f963bb2b98cb8649adf">remmina_main_on_accel_search_toggle</a>), remminamain, NULL));</div><div class="line"><a name="l01637"></a><span class="lineno"> 1637</span>&#160;</div><div class="line"><a name="l01638"></a><span class="lineno"> 1638</span>&#160; <span class="comment">/* Connect signals */</span></div><div class="line"><a name="l01639"></a><span class="lineno"> 1639</span>&#160; gtk_builder_connect_signals(remminamain-&gt;<a class="code" href="struct___remmina_main.html#ab7c6aebff1b06ef97c36bfa9d360b0c1">builder</a>, NULL);</div><div class="line"><a name="l01640"></a><span class="lineno"> 1640</span>&#160; <span class="comment">/* Initialize the window and load the preferences */</span></div><div class="line"><a name="l01641"></a><span class="lineno"> 1641</span>&#160; <a class="code" href="remmina__main_8c.html#afefc1b651e1c546e949dbe6df72b0300">remmina_main_init</a>();</div><div class="line"><a name="l01642"></a><span class="lineno"> 1642</span>&#160; <span class="keywordflow">return</span> GTK_WIDGET(remminamain-&gt;<a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a>);</div><div class="line"><a name="l01643"></a><span class="lineno"> 1643</span>&#160;}</div><div class="line"><a name="l01644"></a><span class="lineno"> 1644</span>&#160;</div><div class="line"><a name="l01645"></a><span class="lineno"><a class="line" href="remmina__main_8h.html#a3948142732379a3d165f3b0b4d5f5abc"> 1645</a></span>&#160;GtkWindow *<a class="code" href="remmina__main_8c.html#a7740488de65c0e642895cc9dfba07b6e">remmina_main_get_window</a>()</div><div class="line"><a name="l01646"></a><span class="lineno"> 1646</span>&#160;{</div><div class="line"><a name="l01647"></a><span class="lineno"> 1647</span>&#160; <span class="keywordflow">if</span> (!remminamain)</div><div class="line"><a name="l01648"></a><span class="lineno"> 1648</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l01649"></a><span class="lineno"> 1649</span>&#160; <span class="keywordflow">if</span> (!remminamain-&gt;<a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>)</div><div class="line"><a name="l01650"></a><span class="lineno"> 1650</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l01651"></a><span class="lineno"> 1651</span>&#160; <span class="keywordflow">if</span> (!remminamain-&gt;<a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-&gt;<a class="code" href="struct___remmina_main_priv.html#a7a4eb201dd185ba606af5c486ef55e7f">initialized</a>)</div><div class="line"><a name="l01652"></a><span class="lineno"> 1652</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l01653"></a><span class="lineno"> 1653</span>&#160; remminamain-&gt;<a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a> = GTK_WINDOW(RM_GET_OBJECT(<span class="stringliteral">&quot;RemminaMain&quot;</span>));</div><div class="line"><a name="l01654"></a><span class="lineno"> 1654</span>&#160; <span class="keywordflow">return</span> remminamain-&gt;<a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a>;</div><div class="line"><a name="l01655"></a><span class="lineno"> 1655</span>&#160;}</div><div class="line"><a name="l01656"></a><span class="lineno"> 1656</span>&#160;</div><div class="line"><a name="l01657"></a><span class="lineno"><a class="line" href="remmina__main_8h.html#a5ae0372dafe41f96a09097c07d1b270a"> 1657</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__main_8c.html#a5ae0372dafe41f96a09097c07d1b270a">remmina_main_update_file_datetime</a>(<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *file)</div><div class="line"><a name="l01658"></a><span class="lineno"> 1658</span>&#160;{</div><div class="line"><a name="l01659"></a><span class="lineno"> 1659</span>&#160; <span class="keywordflow">if</span> (!remminamain)</div><div class="line"><a name="l01660"></a><span class="lineno"> 1660</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l01661"></a><span class="lineno"> 1661</span>&#160; <a class="code" href="remmina__main_8c.html#a3617295e74fa84edbd41dedc601402a7">remmina_main_load_files</a>();</div><div class="line"><a name="l01662"></a><span class="lineno"> 1662</span>&#160;}</div><div class="line"><a name="l01663"></a><span class="lineno"> 1663</span>&#160;</div><div class="line"><a name="l01664"></a><span class="lineno"><a class="line" href="remmina__main_8h.html#ab2a1a54320992fb796850ffbd6a63589"> 1664</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__main_8c.html#ab2a1a54320992fb796850ffbd6a63589">remmina_main_show_dialog</a>(GtkMessageType msg, GtkButtonsType buttons, <span class="keyword">const</span> gchar* message) {</div><div class="line"><a name="l01665"></a><span class="lineno"> 1665</span>&#160; GtkWidget *dialog;</div><div class="line"><a name="l01666"></a><span class="lineno"> 1666</span>&#160;</div><div class="line"><a name="l01667"></a><span class="lineno"> 1667</span>&#160; <span class="keywordflow">if</span> (remminamain-&gt;<a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a>) {</div><div class="line"><a name="l01668"></a><span class="lineno"> 1668</span>&#160; dialog = gtk_message_dialog_new(remminamain-&gt;<a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a>, GTK_DIALOG_MODAL, msg, buttons, <span class="stringliteral">&quot;%s&quot;</span>, message);</div><div class="line"><a name="l01669"></a><span class="lineno"> 1669</span>&#160; gtk_dialog_run(GTK_DIALOG(dialog));</div><div class="line"><a name="l01670"></a><span class="lineno"> 1670</span>&#160; gtk_widget_destroy(dialog);</div><div class="line"><a name="l01671"></a><span class="lineno"> 1671</span>&#160; }</div><div class="line"><a name="l01672"></a><span class="lineno"> 1672</span>&#160;}</div><div class="line"><a name="l01673"></a><span class="lineno"> 1673</span>&#160;</div><div class="line"><a name="l01674"></a><span class="lineno"><a class="line" href="remmina__main_8h.html#ad99b9c0bf2fa8c166a8b4a09e06ffdf7"> 1674</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__main_8c.html#ad99b9c0bf2fa8c166a8b4a09e06ffdf7">remmina_main_show_warning_dialog</a>(<span class="keyword">const</span> gchar *message) {</div><div class="line"><a name="l01675"></a><span class="lineno"> 1675</span>&#160; GtkWidget *dialog;</div><div class="line"><a name="l01676"></a><span class="lineno"> 1676</span>&#160;</div><div class="line"><a name="l01677"></a><span class="lineno"> 1677</span>&#160; <span class="keywordflow">if</span> (remminamain-&gt;<a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a>) {</div><div class="line"><a name="l01678"></a><span class="lineno"> 1678</span>&#160; dialog = gtk_message_dialog_new(remminamain-&gt;<a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a>, GTK_DIALOG_MODAL, GTK_MESSAGE_WARNING, GTK_BUTTONS_CLOSE,</div><div class="line"><a name="l01679"></a><span class="lineno"> 1679</span>&#160; message, g_get_application_name());</div><div class="line"><a name="l01680"></a><span class="lineno"> 1680</span>&#160; gtk_dialog_run(GTK_DIALOG(dialog));</div><div class="line"><a name="l01681"></a><span class="lineno"> 1681</span>&#160; gtk_widget_destroy(dialog);</div><div class="line"><a name="l01682"></a><span class="lineno"> 1682</span>&#160; }</div><div class="line"><a name="l01683"></a><span class="lineno"> 1683</span>&#160;}</div><div class="ttc" id="remmina__file__manager_8h_html_a0155f52ba9a28e2aa0ea5d831f5d2c90"><div class="ttname"><a href="remmina__file__manager_8h.html#a0155f52ba9a28e2aa0ea5d831f5d2c90">RemminaGroupData</a></div><div class="ttdeci">G_BEGIN_DECLS struct _RemminaGroupData RemminaGroupData</div></div>
-<div class="ttc" id="remmina__file_8c_html_ac1cc2d7f827f7d64c7fd3edf10e9383e"><div class="ttname"><a href="remmina__file_8c.html#ac1cc2d7f827f7d64c7fd3edf10e9383e">remmina_file_load</a></div><div class="ttdeci">RemminaFile * remmina_file_load(const gchar *filename)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00346">remmina_file.c:346</a></div></div>
+<div class="ttc" id="remmina__file_8c_html_ac1cc2d7f827f7d64c7fd3edf10e9383e"><div class="ttname"><a href="remmina__file_8c.html#ac1cc2d7f827f7d64c7fd3edf10e9383e">remmina_file_load</a></div><div class="ttdeci">RemminaFile * remmina_file_load(const gchar *filename)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00350">remmina_file.c:350</a></div></div>
<div class="ttc" id="remmina__plugin__manager_8c_html_a5e79d6abd0b12c1ed2bb33988e41857e"><div class="ttname"><a href="remmina__plugin__manager_8c.html#a5e79d6abd0b12c1ed2bb33988e41857e">remmina_secret_plugin</a></div><div class="ttdeci">static RemminaSecretPlugin * remmina_secret_plugin</div><div class="ttdef"><b>Definition:</b> <a href="remmina__plugin__manager_8c_source.html#l00068">remmina_plugin_manager.c:68</a></div></div>
<div class="ttc" id="remmina__log_8c_html_a72cf53183f3ef89c4208fdccb629003d"><div class="ttname"><a href="remmina__log_8c.html#a72cf53183f3ef89c4208fdccb629003d">remmina_log_start</a></div><div class="ttdeci">void remmina_log_start(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__log_8c_source.html#l00116">remmina_log.c:116</a></div></div>
<div class="ttc" id="remmina__main_8c_html_af146cc1f982c98a9c8a5ac43cc1508f3"><div class="ttname"><a href="remmina__main_8c.html#af146cc1f982c98a9c8a5ac43cc1508f3">main_actions</a></div><div class="ttdeci">static GActionEntry main_actions[]</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00109">remmina_main.c:109</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_ae293a1fa591d3db78bd587c5af9c9101"><div class="ttname"><a href="struct___remmina_pref.html#ae293a1fa591d3db78bd587c5af9c9101">_RemminaPref::hide_searchbar</a></div><div class="ttdeci">gboolean hide_searchbar</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00154">remmina_pref.h:154</a></div></div>
-<div class="ttc" id="remmina__file_8c_html_abd2f06bf0a5ddcf7156e5ef7d0c8d4d7"><div class="ttname"><a href="remmina__file_8c.html#abd2f06bf0a5ddcf7156e5ef7d0c8d4d7">remmina_file_free</a></div><div class="ttdeci">void remmina_file_free(RemminaFile *remminafile)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00700">remmina_file.c:700</a></div></div>
+<div class="ttc" id="remmina__file_8c_html_abd2f06bf0a5ddcf7156e5ef7d0c8d4d7"><div class="ttname"><a href="remmina__file_8c.html#abd2f06bf0a5ddcf7156e5ef7d0c8d4d7">remmina_file_free</a></div><div class="ttdeci">void remmina_file_free(RemminaFile *remminafile)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00709">remmina_file.c:709</a></div></div>
<div class="ttc" id="struct___remmina_plugin_html"><div class="ttname"><a href="struct___remmina_plugin.html">_RemminaPlugin</a></div><div class="ttdef"><b>Definition:</b> <a href="plugin_8h_source.html#l00056">plugin.h:56</a></div></div>
<div class="ttc" id="remmina__plugin__manager_8h_html"><div class="ttname"><a href="remmina__plugin__manager_8h.html">remmina_plugin_manager.h</a></div></div>
<div class="ttc" id="struct___remmina_main_html_acd8f3437eee668a2b8d905a16a16be72"><div class="ttname"><a href="struct___remmina_main.html#acd8f3437eee668a2b8d905a16a16be72">_RemminaMain::search_toggle</a></div><div class="ttdeci">GtkToggleButton * search_toggle</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8h_source.html#l00061">remmina_main.h:61</a></div></div>
-<div class="ttc" id="remmina__file_8c_html_a8eb1b213d9d08c6ad13683ce05f4355e"><div class="ttname"><a href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a></div><div class="ttdeci">const gchar * remmina_file_get_string(RemminaFile *remminafile, const gchar *setting)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00507">remmina_file.c:507</a></div></div>
+<div class="ttc" id="remmina__file_8c_html_a8eb1b213d9d08c6ad13683ce05f4355e"><div class="ttname"><a href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a></div><div class="ttdeci">const gchar * remmina_file_get_string(RemminaFile *remminafile, const gchar *setting)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00516">remmina_file.c:516</a></div></div>
<div class="ttc" id="struct___remmina_main_html_a6288ed69d372d1047ce94c74e77e0fd4"><div class="ttname"><a href="struct___remmina_main.html#a6288ed69d372d1047ce94c74e77e0fd4">_RemminaMain::menuitem_view_mode_list</a></div><div class="ttdeci">GtkRadioMenuItem * menuitem_view_mode_list</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8h_source.html#l00054">remmina_main.h:54</a></div></div>
<div class="ttc" id="remmina__main_8c_html_ae32574ebe06b1a24f135af9379e663b4"><div class="ttname"><a href="remmina__main_8c.html#ae32574ebe06b1a24f135af9379e663b4">remmina_main_load_file_tree_callback</a></div><div class="ttdeci">static void remmina_main_load_file_tree_callback(RemminaFile *remminafile, gpointer user_data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00480">remmina_main.c:480</a></div></div>
<div class="ttc" id="struct___remmina_tool_plugin_html"><div class="ttname"><a href="struct___remmina_tool_plugin.html">_RemminaToolPlugin</a></div><div class="ttdef"><b>Definition:</b> <a href="plugin_8h_source.html#l00114">plugin.h:114</a></div></div>
@@ -112,7 +112,7 @@ $(document).ready(function(){initNavTree('remmina__main_8c_source.html','');});
<div class="ttc" id="remmina__file__manager_8h_html"><div class="ttname"><a href="remmina__file__manager_8h.html">remmina_file_manager.h</a></div></div>
<div class="ttc" id="struct___remmina_main_html_a45e6df8230d849a78e547fd542d76980"><div class="ttname"><a href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">_RemminaMain::priv</a></div><div class="ttdeci">RemminaMainPriv * priv</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8h_source.html#l00083">remmina_main.h:83</a></div></div>
<div class="ttc" id="struct___remmina_file_plugin_html"><div class="ttname"><a href="struct___remmina_file_plugin.html">_RemminaFilePlugin</a></div><div class="ttdef"><b>Definition:</b> <a href="plugin_8h_source.html#l00100">plugin.h:100</a></div></div>
-<div class="ttc" id="remmina__file_8c_html_ad1e4f3a0f64cd98e301044b6c38a1f1d"><div class="ttname"><a href="remmina__file_8c.html#ad1e4f3a0f64cd98e301044b6c38a1f1d">remmina_file_get_filename</a></div><div class="ttdeci">const gchar * remmina_file_get_filename(RemminaFile *remminafile)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00206">remmina_file.c:206</a></div></div>
+<div class="ttc" id="remmina__file_8c_html_ad1e4f3a0f64cd98e301044b6c38a1f1d"><div class="ttname"><a href="remmina__file_8c.html#ad1e4f3a0f64cd98e301044b6c38a1f1d">remmina_file_get_filename</a></div><div class="ttdeci">const gchar * remmina_file_get_filename(RemminaFile *remminafile)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00210">remmina_file.c:210</a></div></div>
<div class="ttc" id="remmina__main_8c_html_a6b30ed832369f3a7153aa63f98873c9d"><div class="ttname"><a href="remmina__main_8c.html#a6b30ed832369f3a7153aa63f98873c9d">remmina_main_on_action_connection_connect</a></div><div class="ttdeci">void remmina_main_on_action_connection_connect(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00765">remmina_main.c:765</a></div></div>
<div class="ttc" id="plugin_8h_html_aaf53c620d115a4642130227cff4a624aadd037352a609e2dc890595f9d95bd1ac"><div class="ttname"><a href="plugin_8h.html#aaf53c620d115a4642130227cff4a624aadd037352a609e2dc890595f9d95bd1ac">REMMINA_PLUGIN_TYPE_TOOL</a></div><div class="ttdef"><b>Definition:</b> <a href="plugin_8h_source.html#l00050">plugin.h:50</a></div></div>
<div class="ttc" id="types_8h_html_a112d7cc6c755209cabb68cf2a62ad515"><div class="ttname"><a href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a></div><div class="ttdeci">typedefG_BEGIN_DECLS struct _RemminaFile RemminaFile</div><div class="ttdef"><b>Definition:</b> <a href="types_8h_source.html#l00044">types.h:44</a></div></div>
@@ -153,7 +153,7 @@ $(document).ready(function(){initNavTree('remmina__main_8c_source.html','');});
<div class="ttc" id="remmina__mpchange_8h_html"><div class="ttname"><a href="remmina__mpchange_8h.html">remmina_mpchange.h</a></div></div>
<div class="ttc" id="remmina__about_8h_html"><div class="ttname"><a href="remmina__about_8h.html">remmina_about.h</a></div></div>
<div class="ttc" id="remmina__icon_8c_html_af80ed314f91d653237249d839c7fc3b2"><div class="ttname"><a href="remmina__icon_8c.html#af80ed314f91d653237249d839c7fc3b2">remmina_icon_populate_menu</a></div><div class="ttdeci">void remmina_icon_populate_menu(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__icon_8c_source.html#l00250">remmina_icon.c:250</a></div></div>
-<div class="ttc" id="remmina__file_8c_html_a96abbfdc183d1e82fdffd6445d611ffe"><div class="ttname"><a href="remmina__file_8c.html#a96abbfdc183d1e82fdffd6445d611ffe">remmina_file_get_datetime</a></div><div class="ttdeci">gchar * remmina_file_get_datetime(RemminaFile *remminafile)</div><div class="ttdoc">Return the string date of the last time a Remmina state file has been modified. </div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l01020">remmina_file.c:1020</a></div></div>
+<div class="ttc" id="remmina__file_8c_html_a96abbfdc183d1e82fdffd6445d611ffe"><div class="ttname"><a href="remmina__file_8c.html#a96abbfdc183d1e82fdffd6445d611ffe">remmina_file_get_datetime</a></div><div class="ttdeci">gchar * remmina_file_get_datetime(RemminaFile *remminafile)</div><div class="ttdoc">Return the string date of the last time a Remmina state file has been modified. </div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l01029">remmina_file.c:1029</a></div></div>
<div class="ttc" id="remmina__main_8c_html_a71fbe206a9c2abb8f348ee598d7751b7"><div class="ttname"><a href="remmina__main_8c.html#a71fbe206a9c2abb8f348ee598d7751b7">remmina_main_file_model_on_sort</a></div><div class="ttdeci">static void remmina_main_file_model_on_sort(GtkTreeSortable *sortable, gpointer user_data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00512">remmina_main.c:512</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_a6318ff8e2f73d36fb8b35cbed503c222"><div class="ttname"><a href="struct___remmina_pref.html#a6318ff8e2f73d36fb8b35cbed503c222">_RemminaPref::main_width</a></div><div class="ttdeci">gint main_width</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00215">remmina_pref.h:215</a></div></div>
<div class="ttc" id="remmina__main_8c_html_af14b1942a754d7b2f5c10266208ebe01"><div class="ttname"><a href="remmina__main_8c.html#af14b1942a754d7b2f5c10266208ebe01">remmina_main_new</a></div><div class="ttdeci">GtkWidget * remmina_main_new(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01562">remmina_main.c:1562</a></div></div>
@@ -210,7 +210,7 @@ $(document).ready(function(){initNavTree('remmina__main_8c_source.html','');});
<div class="ttc" id="remmina__main_8c_html_ad99b9c0bf2fa8c166a8b4a09e06ffdf7"><div class="ttname"><a href="remmina__main_8c.html#ad99b9c0bf2fa8c166a8b4a09e06ffdf7">remmina_main_show_warning_dialog</a></div><div class="ttdeci">void remmina_main_show_warning_dialog(const gchar *message)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01674">remmina_main.c:1674</a></div></div>
<div class="ttc" id="remmina__main_8c_html_a52cc21537ff003b9d0fbdb9040c811af"><div class="ttname"><a href="remmina__main_8c.html#a52cc21537ff003b9d0fbdb9040c811af">remmina_main_on_action_connection_new</a></div><div class="ttdeci">void remmina_main_on_action_connection_new(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00848">remmina_main.c:848</a></div></div>
<div class="ttc" id="remmina__main_8c_html_a6c69b2fa6a56869c54f58d7ebae89427"><div class="ttname"><a href="remmina__main_8c.html#a6c69b2fa6a56869c54f58d7ebae89427">remmina_main_quick_search_enter</a></div><div class="ttdeci">void remmina_main_quick_search_enter(GtkWidget *widget, gpointer user_data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01327">remmina_main.c:1327</a></div></div>
-<div class="ttc" id="remmina__file_8c_html_a55f66f2bb81bf427d6837e1adb7fe1d4"><div class="ttname"><a href="remmina__file_8c.html#a55f66f2bb81bf427d6837e1adb7fe1d4">remmina_file_delete</a></div><div class="ttdeci">void remmina_file_delete(const gchar *filename)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00900">remmina_file.c:900</a></div></div>
+<div class="ttc" id="remmina__file_8c_html_a55f66f2bb81bf427d6837e1adb7fe1d4"><div class="ttname"><a href="remmina__file_8c.html#a55f66f2bb81bf427d6837e1adb7fe1d4">remmina_file_delete</a></div><div class="ttdeci">void remmina_file_delete(const gchar *filename)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00909">remmina_file.c:909</a></div></div>
<div class="ttc" id="struct___remmina_main_html_a4db5c4960c9dbe3e798528bacb31456e"><div class="ttname"><a href="struct___remmina_main.html#a4db5c4960c9dbe3e798528bacb31456e">_RemminaMain::button_new</a></div><div class="ttdeci">GtkButton * button_new</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8h_source.html#l00058">remmina_main.h:58</a></div></div>
<div class="ttc" id="struct___remmina_main_html_a1575015519fedca001bb26e129331b62"><div class="ttname"><a href="struct___remmina_main.html#a1575015519fedca001bb26e129331b62">_RemminaMain::menu_popup_full</a></div><div class="ttdeci">GtkMenu * menu_popup_full</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8h_source.html#l00053">remmina_main.h:53</a></div></div>
<div class="ttc" id="remmina__main_8c_html_a385c44f6fb256e5716a2302a5b940388a348c0cf6892b36818d9825dddc25f8e3"><div class="ttname"><a href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a348c0cf6892b36818d9825dddc25f8e3">NOTES_COLUMN</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00079">remmina_main.c:79</a></div></div>
@@ -232,7 +232,7 @@ $(document).ready(function(){initNavTree('remmina__main_8c_source.html','');});
<div class="ttc" id="remmina__pref_8c_html_a9a8d02227eb703bccc3f9296a5d89d6f"><div class="ttname"><a href="remmina__pref_8c.html#a9a8d02227eb703bccc3f9296a5d89d6f">remmina_pref_get_boolean</a></div><div class="ttdeci">gboolean remmina_pref_get_boolean(const gchar *key)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l01179">remmina_pref.c:1179</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_ab43c3da7d8551c9df726996c540726f1"><div class="ttname"><a href="struct___remmina_pref.html#ab43c3da7d8551c9df726996c540726f1">_RemminaPref::view_file_mode</a></div><div class="ttdeci">gint view_file_mode</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00211">remmina_pref.h:211</a></div></div>
<div class="ttc" id="remmina__string__array_8c_html_aff90e964c6541b1af02adf7ea39e6e02"><div class="ttname"><a href="remmina__string__array_8c.html#aff90e964c6541b1af02adf7ea39e6e02">remmina_string_array_new</a></div><div class="ttdeci">RemminaStringArray * remmina_string_array_new(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__string__array_8c_source.html#l00044">remmina_string_array.c:44</a></div></div>
-<div class="ttc" id="remmina__file_8c_html_a3d19095f74e9b7c92d74f11bd5a39a8c"><div class="ttname"><a href="remmina__file_8c.html#a3d19095f74e9b7c92d74f11bd5a39a8c">remmina_file_touch</a></div><div class="ttdeci">void remmina_file_touch(RemminaFile *remminafile)</div><div class="ttdoc">Update the atime and mtime of a given filename. </div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l01089">remmina_file.c:1089</a></div></div>
+<div class="ttc" id="remmina__file_8c_html_a3d19095f74e9b7c92d74f11bd5a39a8c"><div class="ttname"><a href="remmina__file_8c.html#a3d19095f74e9b7c92d74f11bd5a39a8c">remmina_file_touch</a></div><div class="ttdeci">void remmina_file_touch(RemminaFile *remminafile)</div><div class="ttdoc">Update the atime and mtime of a given filename. </div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l01103">remmina_file.c:1103</a></div></div>
<div class="ttc" id="remmina__file__editor_8c_html_aa9345cfe3fb32d326b652e96ee55eaea"><div class="ttname"><a href="remmina__file__editor_8c.html#aa9345cfe3fb32d326b652e96ee55eaea">remmina_file_editor_new_from_filename</a></div><div class="ttdeci">GtkWidget * remmina_file_editor_new_from_filename(const gchar *filename)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file__editor_8c_source.html#l02071">remmina_file_editor.c:2071</a></div></div>
<div class="ttc" id="remmina__main_8c_html_a385c44f6fb256e5716a2302a5b940388a6e22c76fbdeaa8f724eb996db2d528bb"><div class="ttname"><a href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a6e22c76fbdeaa8f724eb996db2d528bb">DATE_COLUMN</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00076">remmina_main.c:76</a></div></div>
<div class="ttc" id="remmina__main_8c_html_a51880fc109db6457a5d0fc543c2deaf2"><div class="ttname"><a href="remmina__main_8c.html#a51880fc109db6457a5d0fc543c2deaf2">remmina_main_save_expanded_group_func</a></div><div class="ttdeci">static void remmina_main_save_expanded_group_func(GtkTreeView *tree_view, GtkTreePath *path, gpointer user_data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00147">remmina_main.c:147</a></div></div>
@@ -257,7 +257,7 @@ $(document).ready(function(){initNavTree('remmina__main_8c_source.html','');});
<div class="ttc" id="remmina__main_8c_html_a3d60de4c121cae0c82e60b13873073db"><div class="ttname"><a href="remmina__main_8c.html#a3d60de4c121cae0c82e60b13873073db">remmina_main_on_date_column_sort_clicked</a></div><div class="ttdeci">void remmina_main_on_date_column_sort_clicked()</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01078">remmina_main.c:1078</a></div></div>
<div class="ttc" id="rcw_8c_html_a29701ae152ba15f6d8921f395174d2df"><div class="ttname"><a href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a></div><div class="ttdeci">RemminaPref remmina_pref</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l00075">rcw.c:75</a></div></div>
<div class="ttc" id="remmina__main_8c_html_a31102f8ca7440a22c1514bca17933193"><div class="ttname"><a href="remmina__main_8c.html#a31102f8ca7440a22c1514bca17933193">remmina_main_file_list_on_key_press</a></div><div class="ttdeci">gboolean remmina_main_file_list_on_key_press(GtkWidget *widget, GdkEventKey *event, gpointer user_data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01401">remmina_main.c:1401</a></div></div>
-<div class="ttc" id="remmina__file_8c_html_a4884356c195dcfb4ceacf641a1e74e66"><div class="ttname"><a href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a></div><div class="ttdeci">gint remmina_file_get_int(RemminaFile *remminafile, const gchar *setting, gint default_value)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00594">remmina_file.c:594</a></div></div>
+<div class="ttc" id="remmina__file_8c_html_a4884356c195dcfb4ceacf641a1e74e66"><div class="ttname"><a href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a></div><div class="ttdeci">gint remmina_file_get_int(RemminaFile *remminafile, const gchar *setting, gint default_value)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00603">remmina_file.c:603</a></div></div>
<div class="ttc" id="remmina__main_8c_html_a91f22c2834ac7f38d201d8d678f8c57b"><div class="ttname"><a href="remmina__main_8c.html#a91f22c2834ac7f38d201d8d678f8c57b">remmina_main_on_action_application_dark_theme</a></div><div class="ttdeci">void remmina_main_on_action_application_dark_theme(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01190">remmina_main.c:1190</a></div></div>
<div class="ttc" id="remmina__about_8c_html_a3ad768979e0945a162018c6d596c90f4"><div class="ttname"><a href="remmina__about_8c.html#a3ad768979e0945a162018c6d596c90f4">remmina_about_open</a></div><div class="ttdeci">void remmina_about_open(GtkWindow *parent)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__about_8c_source.html#l00044">remmina_about.c:44</a></div></div>
<div class="ttc" id="remmina__file__editor_8c_html_aa4e8657ca722e4cce3f3c42c0cfec51e"><div class="ttname"><a href="remmina__file__editor_8c.html#aa4e8657ca722e4cce3f3c42c0cfec51e">remmina_file_editor_new</a></div><div class="ttdeci">GtkWidget * remmina_file_editor_new(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file__editor_8c_source.html#l02032">remmina_file_editor.c:2032</a></div></div>
@@ -280,9 +280,9 @@ $(document).ready(function(){initNavTree('remmina__main_8c_source.html','');});
<div class="ttc" id="remmina_8c_html_ab4a9a67c5372ff07b71d0558679ab7ae"><div class="ttname"><a href="remmina_8c.html#ab4a9a67c5372ff07b71d0558679ab7ae">kioskmode</a></div><div class="ttdeci">gboolean kioskmode</div><div class="ttdef"><b>Definition:</b> <a href="remmina_8c_source.html#l00082">remmina.c:82</a></div></div>
<div class="ttc" id="struct___remmina_main_html_a82aa6f22340fc4f3df185aba7b01afc2"><div class="ttname"><a href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">_RemminaMain::window</a></div><div class="ttdeci">GtkWindow * window</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8h_source.html#l00049">remmina_main.h:49</a></div></div>
<div class="ttc" id="remmina__exec_8c_html_aaa67e07e2426828d7e7b9b30d2038d31"><div class="ttname"><a href="remmina__exec_8c.html#aaa67e07e2426828d7e7b9b30d2038d31">remmina_application_condexit</a></div><div class="ttdeci">void remmina_application_condexit(RemminaCondExitType why)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__exec_8c_source.html#l00123">remmina_exec.c:123</a></div></div>
-<div class="ttc" id="remmina__file_8c_html_a85ca1ca2d0bf9ef29e490c6f4527a954"><div class="ttname"><a href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a></div><div class="ttdeci">void remmina_file_set_string(RemminaFile *remminafile, const gchar *setting, const gchar *value)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00463">remmina_file.c:463</a></div></div>
+<div class="ttc" id="remmina__file_8c_html_a85ca1ca2d0bf9ef29e490c6f4527a954"><div class="ttname"><a href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a></div><div class="ttdeci">void remmina_file_set_string(RemminaFile *remminafile, const gchar *setting, const gchar *value)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00469">remmina_file.c:469</a></div></div>
<div class="ttc" id="remmina__main_8c_html_aace9ecdd0b74d392ad6ed541bd605c1c"><div class="ttname"><a href="remmina__main_8c.html#aace9ecdd0b74d392ad6ed541bd605c1c">quick_connect_plugin_list</a></div><div class="ttdeci">static char * quick_connect_plugin_list[]</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00128">remmina_main.c:128</a></div></div>
-<div class="ttc" id="remmina__file_8c_html_a8c893a5deec9bc446bd89cc9973416c7"><div class="ttname"><a href="remmina__file_8c.html#a8c893a5deec9bc446bd89cc9973416c7">remmina_file_save</a></div><div class="ttdeci">void remmina_file_save(RemminaFile *remminafile)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00719">remmina_file.c:719</a></div></div>
+<div class="ttc" id="remmina__file_8c_html_a8c893a5deec9bc446bd89cc9973416c7"><div class="ttname"><a href="remmina__file_8c.html#a8c893a5deec9bc446bd89cc9973416c7">remmina_file_save</a></div><div class="ttdeci">void remmina_file_save(RemminaFile *remminafile)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00728">remmina_file.c:728</a></div></div>
<div class="ttc" id="struct___remmina_main_html_ab743fa626843d8fbb669fbd01819aea9"><div class="ttname"><a href="struct___remmina_main.html#ab743fa626843d8fbb669fbd01819aea9">_RemminaMain::column_files_list_notes</a></div><div class="ttdeci">GtkTreeViewColumn * column_files_list_notes</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8h_source.html#l00078">remmina_main.h:78</a></div></div>
<div class="ttc" id="remmina__main_8c_html_a802458852abacebfb16f1f4295806a01"><div class="ttname"><a href="remmina__main_8c.html#a802458852abacebfb16f1f4295806a01">remmina_main_quickconnect</a></div><div class="ttdeci">static gboolean remmina_main_quickconnect(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01264">remmina_main.c:1264</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_a320861799b86dc076d5f87e3a216eb95"><div class="ttname"><a href="struct___remmina_pref.html#a320861799b86dc076d5f87e3a216eb95">_RemminaPref::always_show_notes</a></div><div class="ttdeci">gboolean always_show_notes</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00152">remmina_pref.h:152</a></div></div>
@@ -294,7 +294,7 @@ $(document).ready(function(){initNavTree('remmina__main_8c_source.html','');});
<div class="ttc" id="remmina__main_8c_html_a5445e5568a6fc04d08b620829a59334a"><div class="ttname"><a href="remmina__main_8c.html#a5445e5568a6fc04d08b620829a59334a">remmina_main_on_action_application_quit</a></div><div class="ttdeci">void remmina_main_on_action_application_quit(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01070">remmina_main.c:1070</a></div></div>
<div class="ttc" id="struct___remmina_main_html_ac2eff9c56cc7830bcf9ca4bfdf216095"><div class="ttname"><a href="struct___remmina_main.html#ac2eff9c56cc7830bcf9ca4bfdf216095">_RemminaMain::entry_quick_connect_server</a></div><div class="ttdeci">GtkEntry * entry_quick_connect_server</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8h_source.html#l00069">remmina_main.h:69</a></div></div>
<div class="ttc" id="remmina__unlock_8c_html_a81e79e5c1c230b7e2bf27b2457801d4e"><div class="ttname"><a href="remmina__unlock_8c.html#a81e79e5c1c230b7e2bf27b2457801d4e">remmina_unlock_new</a></div><div class="ttdeci">gint remmina_unlock_new(GtkWindow *parent)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__unlock_8c_source.html#l00112">remmina_unlock.c:112</a></div></div>
-<div class="ttc" id="remmina__file_8c_html_a2feb8e9e32f3ff4e2fac836e67a77331"><div class="ttname"><a href="remmina__file_8c.html#a2feb8e9e32f3ff4e2fac836e67a77331">remmina_file_get_icon_name</a></div><div class="ttdeci">const gchar * remmina_file_get_icon_name(RemminaFile *remminafile)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00874">remmina_file.c:874</a></div></div>
+<div class="ttc" id="remmina__file_8c_html_a2feb8e9e32f3ff4e2fac836e67a77331"><div class="ttname"><a href="remmina__file_8c.html#a2feb8e9e32f3ff4e2fac836e67a77331">remmina_file_get_icon_name</a></div><div class="ttdeci">const gchar * remmina_file_get_icon_name(RemminaFile *remminafile)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00883">remmina_file.c:883</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_a58fce08bda1efaeefd8b65f6463f67c6"><div class="ttname"><a href="struct___remmina_pref.html#a58fce08bda1efaeefd8b65f6463f67c6">_RemminaPref::periodic_rmnews_last_get</a></div><div class="ttdeci">glong periodic_rmnews_last_get</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00240">remmina_pref.h:240</a></div></div>
<div class="ttc" id="remmina__mpchange_8c_html_aa5a382490ca5e92bc4b124f66d83c4ff"><div class="ttname"><a href="remmina__mpchange_8c.html#aa5a382490ca5e92bc4b124f66d83c4ff">remmina_mpchange_schedule</a></div><div class="ttdeci">void remmina_mpchange_schedule(gboolean has_domain, const gchar *group, const gchar *domain, const gchar *username, const gchar *password, const gchar *gatewayusername, const gchar *gatewaydomain, const gchar *gatewaypassword)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__mpchange_8c_source.html#l00497">remmina_mpchange.c:497</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_aeb86dc8005c98ce2eab57bd900467875"><div class="ttname"><a href="struct___remmina_pref.html#aeb86dc8005c98ce2eab57bd900467875">_RemminaPref::main_height</a></div><div class="ttdeci">gint main_height</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00216">remmina_pref.h:216</a></div></div>
diff --git a/public/remmina__masterthread__exec_8c_source.html b/public/remmina__masterthread__exec_8c_source.html
index 63455210a..d52f1e19e 100644
--- a/public/remmina__masterthread__exec_8c_source.html
+++ b/public/remmina__masterthread__exec_8c_source.html
@@ -87,7 +87,7 @@ $(document).ready(function(){initNavTree('remmina__masterthread__exec_8c_source.
</div><!--header-->
<div class="contents">
<a href="remmina__masterthread__exec_8c.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * Remmina - The GTK+ Remote Desktop Client</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> * Copyright (C) 2009-2011 Vic Lee</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> * Copyright (C) 2014-2015 Antenore Gatta, Fabio Castelli, Giovanni Panozzo</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * Copyright (C) 2016-2022 Antenore Gatta, Giovanni Panozzo</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * (at your option) any later version.</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> * along with this program; if not, write to the Free Software</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> * Foundation, Inc., 51 Franklin Street, Fifth Floor,</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> * Boston, MA 02110-1301, USA.</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="comment"> * In addition, as a special exception, the copyright holders give</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment"> * permission to link the code of portions of this program with the</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"> * OpenSSL library under certain conditions as described in each</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> * individual source file, and distribute linked combinations</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> * including the two.</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * You must obey the GNU General Public License in all respects</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> * for all of the code used other than OpenSSL. * If you modify</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment"> * file(s) with this exception, you may extend this exception to your</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="comment"> * version of the file(s), but you are not obligated to do so. * If you</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="comment"> * do not wish to do so, delete this exception statement from your</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="comment"> * version. * If you delete this exception statement from all source</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="comment"> * files in the program, then also delete it here.</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="comment">/* Support for execution on main thread of some GTK related</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="comment"> * functions (due to threads deprecations in GTK) */</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="preprocessor">#include &lt;gtk/gtk.h&gt;</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__masterthread__exec_8h.html">remmina_masterthread_exec.h</a>&quot;</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="remmina__masterthread__exec_8c.html#a8eeacd537241e5af184a2007c476baf0"> 44</a></span>&#160;<span class="keyword">static</span> pthread_t <a class="code" href="remmina__masterthread__exec_8c.html#a8eeacd537241e5af184a2007c476baf0">gMainThreadID</a>;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;</div><div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="remmina__masterthread__exec_8c.html#ae5c4d736f1856249c255430e010a179f"> 46</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="remmina__masterthread__exec_8c.html#ae5c4d736f1856249c255430e010a179f">remmina_masterthread_exec_callback</a>(<a class="code" href="structremmina__masterthread__exec__data.html">RemminaMTExecData</a> *d)</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;{</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="comment">/* This function is called on main GTK Thread via gdk_threads_add_idlde()</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="comment"> * from remmina_masterthread_exec_and_wait() */</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordflow">if</span> (!d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#ac390f60a6ecc7312c7e4cbc1c4de0a63">cancelled</a>) {</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordflow">switch</span> (d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#ab3d58f7a9847ce04c9dcd3917910fdb1">func</a>) {</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordflow">case</span> FUNC_INIT_SAVE_CRED:</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#ab863cc1442a992adfa323bc77ab88504">remmina_protocol_widget_save_cred</a>(d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#a00585ef650a083f1e8270cbdf05d437f">init_save_creds</a>.gp);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordflow">case</span> FUNC_CHAT_RECEIVE:</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#ae2522242b3f39ee84ee8cf75170de0c0">remmina_protocol_widget_chat_receive</a>(d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#a6a00bf7132ed6d4923bd239acb073ace">chat_receive</a>.gp, d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#a6a00bf7132ed6d4923bd239acb073ace">chat_receive</a>.text);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordflow">case</span> FUNC_FILE_GET_STRING:</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#ac76a0900842e936efdd2add9ec352886">file_get_string</a>.retval = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>( d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#ac76a0900842e936efdd2add9ec352886">file_get_string</a>.remminafile, d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#ac76a0900842e936efdd2add9ec352886">file_get_string</a>.setting );</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordflow">case</span> FUNC_FILE_SET_STRING:</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>( d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#af4aac360c396741c659474158d7c0e87">file_set_string</a>.remminafile, d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#af4aac360c396741c659474158d7c0e87">file_set_string</a>.setting, d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#af4aac360c396741c659474158d7c0e87">file_set_string</a>.value );</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordflow">case</span> FUNC_GTK_LABEL_SET_TEXT:</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; gtk_label_set_text( d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#a85a0c3a54c87297e585fac9d52cd83c1">gtk_label_set_text</a>.label, d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#a85a0c3a54c87297e585fac9d52cd83c1">gtk_label_set_text</a>.str );</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keywordflow">case</span> FUNC_FTP_CLIENT_UPDATE_TASK:</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <a class="code" href="remmina__ftp__client_8c.html#ad96358f40ab056c91f796ddda886a1dd">remmina_ftp_client_update_task</a>( d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#aacac54eb2616abc1a48d52f1cdcddf40">ftp_client_update_task</a>.client, d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#aacac54eb2616abc1a48d52f1cdcddf40">ftp_client_update_task</a>.task );</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordflow">case</span> FUNC_FTP_CLIENT_GET_WAITING_TASK:</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#ac6b3f7b8019945e2f0c8039f7a78fed6">ftp_client_get_waiting_task</a>.retval = <a class="code" href="remmina__ftp__client_8c.html#a33e4993b60c36eae89a6a0a943d28141">remmina_ftp_client_get_waiting_task</a>( d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#ac6b3f7b8019945e2f0c8039f7a78fed6">ftp_client_get_waiting_task</a>.client );</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordflow">case</span> FUNC_PROTOCOLWIDGET_EMIT_SIGNAL:</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#ac3e5a7f14aef4adb2e57d35e9c180b3b">remmina_protocol_widget_emit_signal</a>(d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#a46c919e7c8529074e19f46cf1b545f97">protocolwidget_emit_signal</a>.gp, d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#a46c919e7c8529074e19f46cf1b545f97">protocolwidget_emit_signal</a>.signal_name);</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordflow">case</span> FUNC_PROTOCOLWIDGET_MPPROGRESS:</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#a3b8dfbacdde21a1a75007cde8e31bfd6">protocolwidget_mpprogress</a>.ret_mp = <a class="code" href="remmina__protocol__widget_8c.html#a78b123eca6709bceeacda7d791a94bf1">remmina_protocol_widget_mpprogress</a>(d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#a3b8dfbacdde21a1a75007cde8e31bfd6">protocolwidget_mpprogress</a>.cnnobj, d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#a3b8dfbacdde21a1a75007cde8e31bfd6">protocolwidget_mpprogress</a>.message,</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#a3b8dfbacdde21a1a75007cde8e31bfd6">protocolwidget_mpprogress</a>.response_callback, d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#a3b8dfbacdde21a1a75007cde8e31bfd6">protocolwidget_mpprogress</a>.response_callback_data);</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keywordflow">case</span> FUNC_PROTOCOLWIDGET_MPDESTROY:</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a97cba8208a4348446159bf465b3233f5">remmina_protocol_widget_mpdestroy</a>(d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#a75007c472a404959a00cdebd8efc951a">protocolwidget_mpdestroy</a>.cnnobj, d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#a75007c472a404959a00cdebd8efc951a">protocolwidget_mpdestroy</a>.mp);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keywordflow">case</span> FUNC_PROTOCOLWIDGET_MPSHOWRETRY:</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a7ed85f4ea19e0660dbf46f4f3dc4b895">remmina_protocol_widget_panel_show_retry</a>(d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#af47270db94513116a8c0f7658848c4af">protocolwidget_mpshowretry</a>.gp);</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keywordflow">case</span> FUNC_PROTOCOLWIDGET_PANELSHOWLISTEN:</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a278e13b53a4fdb65498e00e908edb98d">remmina_protocol_widget_panel_show_listen</a>(d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#a2852b6a6de556164946570c4d7786ece">protocolwidget_panelshowlisten</a>.gp, d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#a2852b6a6de556164946570c4d7786ece">protocolwidget_panelshowlisten</a>.port);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keywordflow">case</span> FUNC_SFTP_CLIENT_CONFIRM_RESUME:</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;<span class="preprocessor">#ifdef HAVE_LIBSSH</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#a070d5e12c3eede1d1799d83c433f9abd">sftp_client_confirm_resume</a>.retval = <a class="code" href="remmina__sftp__client_8c.html#a138904893cb9c7f6535b8dfc7ba17e33">remmina_sftp_client_confirm_resume</a>( d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#a070d5e12c3eede1d1799d83c433f9abd">sftp_client_confirm_resume</a>.client,</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#a070d5e12c3eede1d1799d83c433f9abd">sftp_client_confirm_resume</a>.path );</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keywordflow">case</span> FUNC_VTE_TERMINAL_SET_ENCODING_AND_PTY:</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;<span class="preprocessor">#if defined (HAVE_LIBSSH) &amp;&amp; defined (HAVE_LIBVTE)</span></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <a class="code" href="remmina__ssh__plugin_8c.html#adc8e3776e67abca9ab913bc33172e4ce">remmina_plugin_ssh_vte_terminal_set_encoding_and_pty</a>( d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#addc82d31b5441f2bf02630b9ddbe7fdb">vte_terminal_set_encoding_and_pty</a>.terminal,</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#addc82d31b5441f2bf02630b9ddbe7fdb">vte_terminal_set_encoding_and_pty</a>.codeset,</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#addc82d31b5441f2bf02630b9ddbe7fdb">vte_terminal_set_encoding_and_pty</a>.master,</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#addc82d31b5441f2bf02630b9ddbe7fdb">vte_terminal_set_encoding_and_pty</a>.slave);</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; }</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; pthread_mutex_lock(&amp;d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#ad6766566c40f5265a8ec504e56951319">pt_mutex</a>);</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#a2609267a5c4dcf8b9cbe411ee51656d9">complete</a> = TRUE;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; pthread_cond_signal(&amp;d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#a41d44d1cc03512701f61bb88a983e94b">pt_cond</a>);</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; pthread_mutex_unlock(&amp;d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#ad6766566c40f5265a8ec504e56951319">pt_mutex</a>);</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; }<span class="keywordflow">else</span> {</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="comment">/* thread has been cancelled, so we must free d memory here */</span></div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; g_free(d);</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; }</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;}</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;</div><div class="line"><a name="l00118"></a><span class="lineno"><a class="line" href="remmina__masterthread__exec_8c.html#a94985f15fd0d27c037824ee90b0ecd3c"> 118</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__masterthread__exec_8c.html#a94985f15fd0d27c037824ee90b0ecd3c">remmina_masterthread_exec_cleanup_handler</a>(gpointer data)</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;{</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <a class="code" href="structremmina__masterthread__exec__data.html">RemminaMTExecData</a> *d = data;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#ac390f60a6ecc7312c7e4cbc1c4de0a63">cancelled</a> = TRUE;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;}</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;</div><div class="line"><a name="l00125"></a><span class="lineno"><a class="line" href="remmina__masterthread__exec_8h.html#a14628c2470cac50e87916a70ea05c97d"> 125</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__masterthread__exec_8c.html#a14628c2470cac50e87916a70ea05c97d">remmina_masterthread_exec_and_wait</a>(<a class="code" href="structremmina__masterthread__exec__data.html">RemminaMTExecData</a> *d)</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;{</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#ac390f60a6ecc7312c7e4cbc1c4de0a63">cancelled</a> = FALSE;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#a2609267a5c4dcf8b9cbe411ee51656d9">complete</a> = FALSE;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; pthread_cleanup_push(<a class="code" href="remmina__masterthread__exec_8c.html#a94985f15fd0d27c037824ee90b0ecd3c">remmina_masterthread_exec_cleanup_handler</a>, (<span class="keywordtype">void</span>*)d);</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; pthread_mutex_init(&amp;d-&gt;pt_mutex, NULL);</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; pthread_cond_init(&amp;d-&gt;pt_cond, NULL);</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; gdk_threads_add_idle((GSourceFunc)<a class="code" href="remmina__masterthread__exec_8c.html#ae5c4d736f1856249c255430e010a179f">remmina_masterthread_exec_callback</a>, (gpointer)d);</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; pthread_mutex_lock(&amp;d-&gt;pt_mutex);</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="keywordflow">while</span> (!d-&gt;complete)</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; pthread_cond_wait(&amp;d-&gt;pt_cond, &amp;d-&gt;pt_mutex);</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; pthread_cleanup_pop(0);</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; pthread_mutex_destroy(&amp;d-&gt;pt_mutex);</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; pthread_cond_destroy(&amp;d-&gt;pt_cond);</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;}</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;</div><div class="line"><a name="l00141"></a><span class="lineno"><a class="line" href="remmina__masterthread__exec_8h.html#a3d6fe9efdc6b84c16d99809003cfc850"> 141</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__masterthread__exec_8c.html#a4a595ce198f8adda31fe11348b0f734e">remmina_masterthread_exec_save_main_thread_id</a>()</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;{</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="comment">/* To be called from main thread at startup */</span></div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <a class="code" href="remmina__masterthread__exec_8c.html#a8eeacd537241e5af184a2007c476baf0">gMainThreadID</a> = pthread_self();</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160;}</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;</div><div class="line"><a name="l00147"></a><span class="lineno"><a class="line" href="remmina__masterthread__exec_8h.html#a7b90b9539fd1bffa1fdace50f9caf29c"> 147</a></span>&#160;gboolean <a class="code" href="remmina__masterthread__exec_8c.html#a3a52e863a3a3da6da6bb5d36c13b7ff4">remmina_masterthread_exec_is_main_thread</a>()</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;{</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="keywordflow">return</span> pthread_equal(<a class="code" href="remmina__masterthread__exec_8c.html#a8eeacd537241e5af184a2007c476baf0">gMainThreadID</a>, pthread_self()) != 0;</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;}</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160;</div><div class="ttc" id="structremmina__masterthread__exec__data_html_a00585ef650a083f1e8270cbdf05d437f"><div class="ttname"><a href="structremmina__masterthread__exec__data.html#a00585ef650a083f1e8270cbdf05d437f">remmina_masterthread_exec_data::init_save_creds</a></div><div class="ttdeci">struct remmina_masterthread_exec_data::@12::@14 init_save_creds</div></div>
-<div class="ttc" id="remmina__file_8c_html_a8eb1b213d9d08c6ad13683ce05f4355e"><div class="ttname"><a href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a></div><div class="ttdeci">const gchar * remmina_file_get_string(RemminaFile *remminafile, const gchar *setting)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00507">remmina_file.c:507</a></div></div>
+<div class="ttc" id="remmina__file_8c_html_a8eb1b213d9d08c6ad13683ce05f4355e"><div class="ttname"><a href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a></div><div class="ttdeci">const gchar * remmina_file_get_string(RemminaFile *remminafile, const gchar *setting)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00516">remmina_file.c:516</a></div></div>
<div class="ttc" id="remmina__protocol__widget_8c_html_ae2522242b3f39ee84ee8cf75170de0c0"><div class="ttname"><a href="remmina__protocol__widget_8c.html#ae2522242b3f39ee84ee8cf75170de0c0">remmina_protocol_widget_chat_receive</a></div><div class="ttdeci">void remmina_protocol_widget_chat_receive(RemminaProtocolWidget *gp, const gchar *text)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l02030">remmina_protocol_widget.c:2030</a></div></div>
<div class="ttc" id="remmina__protocol__widget_8c_html_ab863cc1442a992adfa323bc77ab88504"><div class="ttname"><a href="remmina__protocol__widget_8c.html#ab863cc1442a992adfa323bc77ab88504">remmina_protocol_widget_save_cred</a></div><div class="ttdeci">void remmina_protocol_widget_save_cred(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01885">remmina_protocol_widget.c:1885</a></div></div>
<div class="ttc" id="remmina__sftp__client_8c_html_a138904893cb9c7f6535b8dfc7ba17e33"><div class="ttname"><a href="remmina__sftp__client_8c.html#a138904893cb9c7f6535b8dfc7ba17e33">remmina_sftp_client_confirm_resume</a></div><div class="ttdeci">gint remmina_sftp_client_confirm_resume(RemminaSFTPClient *client, const gchar *path)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__sftp__client_8c_source.html#l00931">remmina_sftp_client.c:931</a></div></div>
@@ -124,7 +124,7 @@ $(document).ready(function(){initNavTree('remmina__masterthread__exec_8c_source.
<div class="ttc" id="structremmina__masterthread__exec__data_html_a6a00bf7132ed6d4923bd239acb073ace"><div class="ttname"><a href="structremmina__masterthread__exec__data.html#a6a00bf7132ed6d4923bd239acb073ace">remmina_masterthread_exec_data::chat_receive</a></div><div class="ttdeci">struct remmina_masterthread_exec_data::@12::@15 chat_receive</div></div>
<div class="ttc" id="structremmina__masterthread__exec__data_html_abea1e7f8f2ed7639f59907b622fba688"><div class="ttname"><a href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">remmina_masterthread_exec_data::p</a></div><div class="ttdeci">union remmina_masterthread_exec_data::@12 p</div></div>
<div class="ttc" id="structremmina__masterthread__exec__data_html_a46c919e7c8529074e19f46cf1b545f97"><div class="ttname"><a href="structremmina__masterthread__exec__data.html#a46c919e7c8529074e19f46cf1b545f97">remmina_masterthread_exec_data::protocolwidget_emit_signal</a></div><div class="ttdeci">struct remmina_masterthread_exec_data::@12::@20 protocolwidget_emit_signal</div></div>
-<div class="ttc" id="remmina__file_8c_html_a85ca1ca2d0bf9ef29e490c6f4527a954"><div class="ttname"><a href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a></div><div class="ttdeci">void remmina_file_set_string(RemminaFile *remminafile, const gchar *setting, const gchar *value)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00463">remmina_file.c:463</a></div></div>
+<div class="ttc" id="remmina__file_8c_html_a85ca1ca2d0bf9ef29e490c6f4527a954"><div class="ttname"><a href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a></div><div class="ttdeci">void remmina_file_set_string(RemminaFile *remminafile, const gchar *setting, const gchar *value)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00469">remmina_file.c:469</a></div></div>
<div class="ttc" id="structremmina__masterthread__exec__data_html_ab3d58f7a9847ce04c9dcd3917910fdb1"><div class="ttname"><a href="structremmina__masterthread__exec__data.html#ab3d58f7a9847ce04c9dcd3917910fdb1">remmina_masterthread_exec_data::func</a></div><div class="ttdeci">enum remmina_masterthread_exec_data::@11 func</div></div>
<div class="ttc" id="structremmina__masterthread__exec__data_html_ad6766566c40f5265a8ec504e56951319"><div class="ttname"><a href="structremmina__masterthread__exec__data.html#ad6766566c40f5265a8ec504e56951319">remmina_masterthread_exec_data::pt_mutex</a></div><div class="ttdeci">pthread_mutex_t pt_mutex</div><div class="ttdef"><b>Definition:</b> <a href="remmina__masterthread__exec_8h_source.html#l00126">remmina_masterthread_exec.h:126</a></div></div>
</div><!-- fragment --></div><!-- contents -->
diff --git a/public/remmina__monitor_8c_source.html b/public/remmina__monitor_8c_source.html
index 2c5387035..520d7264f 100644
--- a/public/remmina__monitor_8c_source.html
+++ b/public/remmina__monitor_8c_source.html
@@ -86,7 +86,7 @@ $(document).ready(function(){initNavTree('remmina__monitor_8c_source.html','');}
<div class="title">remmina_monitor.c</div> </div>
</div><!--header-->
<div class="contents">
-<a href="remmina__monitor_8c.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * Remmina - The GTK+ Remote Desktop Client</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> * Copyright (C) 2016-2022 Antenore Gatta</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * (at your option) any later version.</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> * along with this program; if not, write to the Free Software</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * Foundation, Inc., 51 Franklin Street, Fifth Floor,</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> * Boston, MA 02110-1301, USA.</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> * In addition, as a special exception, the copyright holders give</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment"> * permission to link the code of portions of this program with the</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="comment"> * OpenSSL library under certain conditions as described in each</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment"> * individual source file, and distribute linked combinations</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"> * including the two.</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> * You must obey the GNU General Public License in all respects</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> * for all of the code used other than OpenSSL. * If you modify</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * file(s) with this exception, you may extend this exception to your</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> * version of the file(s), but you are not obligated to do so. * If you</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment"> * do not wish to do so, delete this exception statement from your</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="comment"> * version. * If you delete this exception statement from all source</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="comment"> * files in the program, then also delete it here.</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="preprocessor">#include &quot;config.h&quot;</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__monitor_8h.html">remmina_monitor.h</a>&quot;</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__log_8h.html">remmina_log.h</a>&quot;</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__public_8h.html">remmina_public.h</a>&quot;</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__trace__calls_8h.html">remmina/remmina_trace_calls.h</a>&quot;</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;</div><div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="remmina__monitor_8c.html#a6eae21e170328d883ef13f8f71401ffd"> 41</a></span>&#160;<a class="code" href="struct___remmina_monitor.html">RemminaMonitor</a> *<a class="code" href="remmina__monitor_8c.html#a6eae21e170328d883ef13f8f71401ffd">rm_monitor</a>;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;</div><div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="remmina__monitor_8c.html#ab433d36e6c15de79e0152e2f6ce895ca"> 43</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__monitor_8c.html#ab433d36e6c15de79e0152e2f6ce895ca">remmina_monitor_can_reach_cb</a> (GNetworkMonitor *netmonitor, GAsyncResult *result, <a class="code" href="struct___remmina_monitor.html">RemminaMonitor</a> *monitor)</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;{</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; g_autoptr (GError) error = NULL;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; gchar *status = NULL;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; gboolean is_reachable = g_network_monitor_can_reach_finish (netmonitor, result, &amp;error);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keyword">const</span> gchar *addr_tostr = g_strdup(g_socket_connectable_to_string (monitor-&gt;<a class="code" href="struct___remmina_monitor.html#abc732574457c248961a878dd0689dd3a">addr</a>));</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="comment">//gchar *value = (gchar *)g_hash_table_lookup (monitor-&gt;server_status, addr_tostr);</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordflow">if</span> (is_reachable) {</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; REMMINA_DEBUG (<span class="stringliteral">&quot;Network object %s is reachable&quot;</span>, g_socket_connectable_to_string (monitor-&gt;<a class="code" href="struct___remmina_monitor.html#abc732574457c248961a878dd0689dd3a">addr</a>));</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; status = g_strdup (<span class="stringliteral">&quot;online&quot;</span>);</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; REMMINA_DEBUG (<span class="stringliteral">&quot;Network object %s is not reachable&quot;</span>, g_socket_connectable_to_string (monitor-&gt;<a class="code" href="struct___remmina_monitor.html#abc732574457c248961a878dd0689dd3a">addr</a>));</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; status = g_strdup (<span class="stringliteral">&quot;offline&quot;</span>);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; }</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordflow">if</span> (g_hash_table_replace (monitor-&gt;<a class="code" href="struct___remmina_monitor.html#abfc4878dd55c3b590663ac530ea53be4">server_status</a>, g_strdup(addr_tostr), g_strdup(status))) {</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; REMMINA_DEBUG (<span class="stringliteral">&quot;Inserting %s -&gt; %s&quot;</span>, addr_tostr, status);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; REMMINA_DEBUG (<span class="stringliteral">&quot;Replacing %s -&gt; %s&quot;</span>, addr_tostr, status);</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; }</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="comment">/* Cannot use remminafile here because is freed by remmina_file_manager_iterate */</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="comment">//if (remminafile)</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="comment">//remmina_file_set_state_int (remminafile, &quot;reachable&quot;, reachable);</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; g_free (status);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;}</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;</div><div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="remmina__monitor_8h.html#a6791ceb41e67708d546c3ee2c41c6d12"> 77</a></span>&#160;gchar *<a class="code" href="remmina__monitor_8c.html#a6791ceb41e67708d546c3ee2c41c6d12">remmina_monitor_can_reach</a>(<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile, <a class="code" href="struct___remmina_monitor.html">RemminaMonitor</a> *monitor)</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;{</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keyword">const</span> gchar *server;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keyword">const</span> gchar *ssh_tunnel_server;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keyword">const</span> gchar *addr_tostr = NULL;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; gchar *status = NULL;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; gchar *ssh_tunnel_host, *srv_host;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; gint netmonit, srv_port, ssh_tunnel_port;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keyword">const</span> gchar *protocol;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; gint default_port = 0;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keywordflow">if</span> (!remminafile) {</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; status = g_strdup (<span class="stringliteral">&quot;I/O Error&quot;</span>);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; REMMINA_DEBUG (status);</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; }</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; netmonit = <a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(remminafile, <span class="stringliteral">&quot;enable-netmonit&quot;</span>, FALSE);</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="keywordflow">if</span> (!netmonit) {</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; status = g_strdup (<span class="stringliteral">&quot;Monitoring disabled&quot;</span>);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; REMMINA_DEBUG (status);</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; }</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; protocol = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a> (remminafile, <span class="stringliteral">&quot;protocol&quot;</span>);</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="keywordflow">if</span> (protocol &amp;&amp; protocol[0] != <span class="charliteral">&#39;\0&#39;</span>) {</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; REMMINA_DEBUG (<span class="stringliteral">&quot;Evaluating protocol %s for monitoring&quot;</span>, protocol);</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordflow">if</span> (g_strcmp0(<span class="stringliteral">&quot;RDP&quot;</span>, protocol) == 0)</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; default_port = 3389;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="keywordflow">if</span> (g_strcmp0(<span class="stringliteral">&quot;VNC&quot;</span>, protocol) == 0)</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; default_port = 5900;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="keywordflow">if</span> (g_strcmp0(<span class="stringliteral">&quot;GVNC&quot;</span>, protocol) == 0)</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; default_port = 5900;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keywordflow">if</span> (g_strcmp0(<span class="stringliteral">&quot;SPICE&quot;</span>, protocol) == 0)</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; default_port = 5900;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keywordflow">if</span> (g_strcmp0(<span class="stringliteral">&quot;WWW&quot;</span>, protocol) == 0)</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; default_port = 443;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keywordflow">if</span> (g_strcmp0(<span class="stringliteral">&quot;X2GO&quot;</span>, protocol) == 0)</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; default_port = 22;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="keywordflow">if</span> (g_strcmp0(<span class="stringliteral">&quot;SSH&quot;</span>, protocol) == 0)</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; default_port = 22;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="keywordflow">if</span> (g_strcmp0(<span class="stringliteral">&quot;SFTP&quot;</span>, protocol) == 0)</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; default_port = 22;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <span class="keywordflow">if</span> (g_strcmp0(<span class="stringliteral">&quot;EXEC&quot;</span>, protocol) == 0)</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; default_port = -1;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="keywordflow">if</span> (default_port == 0) {</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; status = g_strdup (<span class="stringliteral">&quot;Unknown protocol&quot;</span>);</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; REMMINA_DEBUG (status);</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; }</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="keywordflow">if</span> (default_port &lt; 0) {</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; status = g_strdup (<span class="stringliteral">&quot;Cannot monitor&quot;</span>);</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; REMMINA_DEBUG (status);</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; }</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; ssh_tunnel_server = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">&quot;ssh_tunnel_server&quot;</span>);</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(remminafile, <span class="stringliteral">&quot;ssh_tunnel_enabled&quot;</span>, FALSE)) {</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <a class="code" href="remmina__public_8c.html#adc8b77823386e00e610527d6b0b61149">remmina_public_get_server_port</a>(ssh_tunnel_server, 22, &amp;ssh_tunnel_host, &amp;ssh_tunnel_port);</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; monitor-&gt;<a class="code" href="struct___remmina_monitor.html#abc732574457c248961a878dd0689dd3a">addr</a> = g_network_address_new (ssh_tunnel_host, ssh_tunnel_port);</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; g_free(ssh_tunnel_host), ssh_tunnel_host = NULL;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; server = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">&quot;server&quot;</span>);</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <a class="code" href="remmina__public_8c.html#adc8b77823386e00e610527d6b0b61149">remmina_public_get_server_port</a>(server, default_port, &amp;srv_host, &amp;srv_port);</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; monitor-&gt;<a class="code" href="struct___remmina_monitor.html#abc732574457c248961a878dd0689dd3a">addr</a> = g_network_address_new (srv_host, srv_port);</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; g_free(srv_host), srv_host = NULL;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; }</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; addr_tostr = g_strdup(g_socket_connectable_to_string (monitor-&gt;<a class="code" href="struct___remmina_monitor.html#abc732574457c248961a878dd0689dd3a">addr</a>));</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; REMMINA_DEBUG (<span class="stringliteral">&quot;addr is %s&quot;</span>, addr_tostr);</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <span class="keywordflow">if</span> (monitor-&gt;<a class="code" href="struct___remmina_monitor.html#adaa8ac5463302ab18a45171b5e4618f1">connected</a> &amp;&amp; netmonit) {</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; REMMINA_DEBUG (<span class="stringliteral">&quot;Testing for %s&quot;</span>, addr_tostr);</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; g_network_monitor_can_reach_async (</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; monitor-&gt;<a class="code" href="struct___remmina_monitor.html#a4fe2b4d1448a36e21ab114630bd1d105">netmonitor</a>,</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; monitor-&gt;<a class="code" href="struct___remmina_monitor.html#abc732574457c248961a878dd0689dd3a">addr</a>,</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; NULL,</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; (GAsyncReadyCallback) <a class="code" href="remmina__monitor_8c.html#ab433d36e6c15de79e0152e2f6ce895ca">remmina_monitor_can_reach_cb</a>,</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; monitor);</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; }</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; status = (gchar *)g_hash_table_lookup (monitor-&gt;<a class="code" href="struct___remmina_monitor.html#abfc4878dd55c3b590663ac530ea53be4">server_status</a>, addr_tostr);</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="comment">//if (!status)</span></div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <span class="comment">//g_hash_table_insert (monitor-&gt;server_status, g_strdup(addr_tostr), &quot;offline&quot;);</span></div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160;</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; }</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160;</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <span class="keywordflow">if</span> (!status) {</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <span class="keywordflow">return</span> g_strdup(addr_tostr);</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; } <span class="keywordflow">else</span></div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <span class="keywordflow">return</span> status;</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160;</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <span class="comment">//g_free(ssh_tunnel_host), ssh_tunnel_host = NULL;</span></div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <span class="comment">//g_free(srv_host), srv_host = NULL;</span></div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="comment">//g_free(dest), dest = NULL;</span></div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;}</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;</div><div class="line"><a name="l00181"></a><span class="lineno"><a class="line" href="remmina__monitor_8h.html#aa53b9aaa2e68e2116b714e52418de3aa"> 181</a></span>&#160;gboolean <a class="code" href="remmina__monitor_8c.html#acf79b91eb05694ec967d726bd0f85e50">remmina_network_monitor_status</a> (<a class="code" href="struct___remmina_monitor.html">RemminaMonitor</a> *rm_monitor)</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160;{</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160;</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; gboolean status = g_network_monitor_get_connectivity (rm_monitor-&gt;<a class="code" href="struct___remmina_monitor.html#a4fe2b4d1448a36e21ab114630bd1d105">netmonitor</a>);</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160;</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; rm_monitor-&gt;<a class="code" href="struct___remmina_monitor.html#abfc4878dd55c3b590663ac530ea53be4">server_status</a> = g_hash_table_new_full(</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; g_str_hash,</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; g_str_equal,</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; (GDestroyNotify)g_free,</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; (GDestroyNotify)g_free);</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160;</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="keywordflow">switch</span> (status)</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; {</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="keywordflow">case</span> G_NETWORK_CONNECTIVITY_LOCAL:</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; REMMINA_DEBUG (<span class="stringliteral">&quot;G_NETWORK_CONNECTIVITY_LOCAL&quot;</span>);</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; rm_monitor-&gt;<a class="code" href="struct___remmina_monitor.html#adaa8ac5463302ab18a45171b5e4618f1">connected</a> = FALSE;</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160;</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; <span class="keywordflow">case</span> G_NETWORK_CONNECTIVITY_LIMITED:</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; REMMINA_DEBUG (<span class="stringliteral">&quot;G_NETWORK_CONNECTIVITY_LIMITED&quot;</span>);</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; rm_monitor-&gt;<a class="code" href="struct___remmina_monitor.html#adaa8ac5463302ab18a45171b5e4618f1">connected</a> = FALSE;</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160;</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <span class="keywordflow">case</span> G_NETWORK_CONNECTIVITY_PORTAL:</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; REMMINA_DEBUG (<span class="stringliteral">&quot;G_NETWORK_CONNECTIVITY_PORTAL&quot;</span>);</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; rm_monitor-&gt;<a class="code" href="struct___remmina_monitor.html#adaa8ac5463302ab18a45171b5e4618f1">connected</a> = FALSE;</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160;</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <span class="keywordflow">case</span> G_NETWORK_CONNECTIVITY_FULL:</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; REMMINA_DEBUG (<span class="stringliteral">&quot;G_NETWORK_CONNECTIVITY_FULL&quot;</span>);</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; rm_monitor-&gt;<a class="code" href="struct___remmina_monitor.html#adaa8ac5463302ab18a45171b5e4618f1">connected</a> = TRUE;</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; }</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160;</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <span class="keywordflow">return</span> status;</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160;}</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160;</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160;</div><div class="line"><a name="l00220"></a><span class="lineno"><a class="line" href="remmina__monitor_8h.html#ac37c2579934e206d669c1af9b51f8ef1"> 220</a></span>&#160;<a class="code" href="struct___remmina_monitor.html">RemminaMonitor</a> *<a class="code" href="remmina__monitor_8c.html#ac37c2579934e206d669c1af9b51f8ef1">remmina_network_monitor_new</a> ()</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160;{</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160;</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; rm_monitor = g_new0(<a class="code" href="struct___remmina_monitor.html">RemminaMonitor</a>, 1);</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160;</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; rm_monitor-&gt;<a class="code" href="struct___remmina_monitor.html#a4fe2b4d1448a36e21ab114630bd1d105">netmonitor</a> = g_network_monitor_get_default ();</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160;</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__monitor_8c.html#a6eae21e170328d883ef13f8f71401ffd">rm_monitor</a>;</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160;}</div><div class="ttc" id="remmina__file_8c_html_a8eb1b213d9d08c6ad13683ce05f4355e"><div class="ttname"><a href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a></div><div class="ttdeci">const gchar * remmina_file_get_string(RemminaFile *remminafile, const gchar *setting)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00507">remmina_file.c:507</a></div></div>
+<a href="remmina__monitor_8c.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * Remmina - The GTK+ Remote Desktop Client</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> * Copyright (C) 2016-2022 Antenore Gatta</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * (at your option) any later version.</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> * along with this program; if not, write to the Free Software</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * Foundation, Inc., 51 Franklin Street, Fifth Floor,</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> * Boston, MA 02110-1301, USA.</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> * In addition, as a special exception, the copyright holders give</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment"> * permission to link the code of portions of this program with the</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="comment"> * OpenSSL library under certain conditions as described in each</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment"> * individual source file, and distribute linked combinations</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"> * including the two.</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> * You must obey the GNU General Public License in all respects</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> * for all of the code used other than OpenSSL. * If you modify</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * file(s) with this exception, you may extend this exception to your</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> * version of the file(s), but you are not obligated to do so. * If you</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment"> * do not wish to do so, delete this exception statement from your</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="comment"> * version. * If you delete this exception statement from all source</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="comment"> * files in the program, then also delete it here.</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="preprocessor">#include &quot;config.h&quot;</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__monitor_8h.html">remmina_monitor.h</a>&quot;</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__log_8h.html">remmina_log.h</a>&quot;</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__public_8h.html">remmina_public.h</a>&quot;</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__trace__calls_8h.html">remmina/remmina_trace_calls.h</a>&quot;</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;</div><div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="remmina__monitor_8c.html#a6eae21e170328d883ef13f8f71401ffd"> 41</a></span>&#160;<a class="code" href="struct___remmina_monitor.html">RemminaMonitor</a> *<a class="code" href="remmina__monitor_8c.html#a6eae21e170328d883ef13f8f71401ffd">rm_monitor</a>;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;</div><div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="remmina__monitor_8c.html#ab433d36e6c15de79e0152e2f6ce895ca"> 43</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__monitor_8c.html#ab433d36e6c15de79e0152e2f6ce895ca">remmina_monitor_can_reach_cb</a> (GNetworkMonitor *netmonitor, GAsyncResult *result, <a class="code" href="struct___remmina_monitor.html">RemminaMonitor</a> *monitor)</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;{</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; g_autoptr (GError) error = NULL;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; gchar *status = NULL;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; gboolean is_reachable = g_network_monitor_can_reach_finish (netmonitor, result, &amp;error);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keyword">const</span> gchar *addr_tostr = g_strdup(g_socket_connectable_to_string (monitor-&gt;<a class="code" href="struct___remmina_monitor.html#abc732574457c248961a878dd0689dd3a">addr</a>));</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="comment">//gchar *value = (gchar *)g_hash_table_lookup (monitor-&gt;server_status, addr_tostr);</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordflow">if</span> (is_reachable) {</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; REMMINA_DEBUG (<span class="stringliteral">&quot;Network object %s is reachable&quot;</span>, g_socket_connectable_to_string (monitor-&gt;<a class="code" href="struct___remmina_monitor.html#abc732574457c248961a878dd0689dd3a">addr</a>));</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; status = g_strdup (<span class="stringliteral">&quot;online&quot;</span>);</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; REMMINA_DEBUG (<span class="stringliteral">&quot;Network object %s is not reachable&quot;</span>, g_socket_connectable_to_string (monitor-&gt;<a class="code" href="struct___remmina_monitor.html#abc732574457c248961a878dd0689dd3a">addr</a>));</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; status = g_strdup (<span class="stringliteral">&quot;offline&quot;</span>);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; }</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordflow">if</span> (g_hash_table_replace (monitor-&gt;<a class="code" href="struct___remmina_monitor.html#abfc4878dd55c3b590663ac530ea53be4">server_status</a>, g_strdup(addr_tostr), g_strdup(status))) {</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; REMMINA_DEBUG (<span class="stringliteral">&quot;Inserting %s -&gt; %s&quot;</span>, addr_tostr, status);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; REMMINA_DEBUG (<span class="stringliteral">&quot;Replacing %s -&gt; %s&quot;</span>, addr_tostr, status);</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; }</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="comment">/* Cannot use remminafile here because is freed by remmina_file_manager_iterate */</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="comment">//if (remminafile)</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="comment">//remmina_file_set_state_int (remminafile, &quot;reachable&quot;, reachable);</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; g_free (status);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;}</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;</div><div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="remmina__monitor_8h.html#a6791ceb41e67708d546c3ee2c41c6d12"> 77</a></span>&#160;gchar *<a class="code" href="remmina__monitor_8c.html#a6791ceb41e67708d546c3ee2c41c6d12">remmina_monitor_can_reach</a>(<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile, <a class="code" href="struct___remmina_monitor.html">RemminaMonitor</a> *monitor)</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;{</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keyword">const</span> gchar *server;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keyword">const</span> gchar *ssh_tunnel_server;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keyword">const</span> gchar *addr_tostr = NULL;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; gchar *status = NULL;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; gchar *ssh_tunnel_host, *srv_host;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; gint netmonit, srv_port, ssh_tunnel_port;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keyword">const</span> gchar *protocol;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; gint default_port = 0;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keywordflow">if</span> (!remminafile) {</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; status = g_strdup (<span class="stringliteral">&quot;I/O Error&quot;</span>);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; REMMINA_DEBUG (status);</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; }</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; netmonit = <a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(remminafile, <span class="stringliteral">&quot;enable-netmonit&quot;</span>, FALSE);</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="keywordflow">if</span> (!netmonit) {</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; status = g_strdup (<span class="stringliteral">&quot;Monitoring disabled&quot;</span>);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; REMMINA_DEBUG (status);</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; }</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; protocol = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a> (remminafile, <span class="stringliteral">&quot;protocol&quot;</span>);</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="keywordflow">if</span> (protocol &amp;&amp; protocol[0] != <span class="charliteral">&#39;\0&#39;</span>) {</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; REMMINA_DEBUG (<span class="stringliteral">&quot;Evaluating protocol %s for monitoring&quot;</span>, protocol);</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordflow">if</span> (g_strcmp0(<span class="stringliteral">&quot;RDP&quot;</span>, protocol) == 0)</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; default_port = 3389;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="keywordflow">if</span> (g_strcmp0(<span class="stringliteral">&quot;VNC&quot;</span>, protocol) == 0)</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; default_port = 5900;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="keywordflow">if</span> (g_strcmp0(<span class="stringliteral">&quot;GVNC&quot;</span>, protocol) == 0)</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; default_port = 5900;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keywordflow">if</span> (g_strcmp0(<span class="stringliteral">&quot;SPICE&quot;</span>, protocol) == 0)</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; default_port = 5900;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keywordflow">if</span> (g_strcmp0(<span class="stringliteral">&quot;WWW&quot;</span>, protocol) == 0)</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; default_port = 443;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keywordflow">if</span> (g_strcmp0(<span class="stringliteral">&quot;X2GO&quot;</span>, protocol) == 0)</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; default_port = 22;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="keywordflow">if</span> (g_strcmp0(<span class="stringliteral">&quot;SSH&quot;</span>, protocol) == 0)</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; default_port = 22;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="keywordflow">if</span> (g_strcmp0(<span class="stringliteral">&quot;SFTP&quot;</span>, protocol) == 0)</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; default_port = 22;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <span class="keywordflow">if</span> (g_strcmp0(<span class="stringliteral">&quot;EXEC&quot;</span>, protocol) == 0)</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; default_port = -1;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="keywordflow">if</span> (default_port == 0) {</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; status = g_strdup (<span class="stringliteral">&quot;Unknown protocol&quot;</span>);</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; REMMINA_DEBUG (status);</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; }</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="keywordflow">if</span> (default_port &lt; 0) {</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; status = g_strdup (<span class="stringliteral">&quot;Cannot monitor&quot;</span>);</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; REMMINA_DEBUG (status);</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; }</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; ssh_tunnel_server = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">&quot;ssh_tunnel_server&quot;</span>);</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(remminafile, <span class="stringliteral">&quot;ssh_tunnel_enabled&quot;</span>, FALSE)) {</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <a class="code" href="remmina__public_8c.html#adc8b77823386e00e610527d6b0b61149">remmina_public_get_server_port</a>(ssh_tunnel_server, 22, &amp;ssh_tunnel_host, &amp;ssh_tunnel_port);</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; monitor-&gt;<a class="code" href="struct___remmina_monitor.html#abc732574457c248961a878dd0689dd3a">addr</a> = g_network_address_new (ssh_tunnel_host, ssh_tunnel_port);</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; g_free(ssh_tunnel_host), ssh_tunnel_host = NULL;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; server = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">&quot;server&quot;</span>);</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <a class="code" href="remmina__public_8c.html#adc8b77823386e00e610527d6b0b61149">remmina_public_get_server_port</a>(server, default_port, &amp;srv_host, &amp;srv_port);</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; monitor-&gt;<a class="code" href="struct___remmina_monitor.html#abc732574457c248961a878dd0689dd3a">addr</a> = g_network_address_new (srv_host, srv_port);</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; g_free(srv_host), srv_host = NULL;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; }</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; addr_tostr = g_strdup(g_socket_connectable_to_string (monitor-&gt;<a class="code" href="struct___remmina_monitor.html#abc732574457c248961a878dd0689dd3a">addr</a>));</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; REMMINA_DEBUG (<span class="stringliteral">&quot;addr is %s&quot;</span>, addr_tostr);</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <span class="keywordflow">if</span> (monitor-&gt;<a class="code" href="struct___remmina_monitor.html#adaa8ac5463302ab18a45171b5e4618f1">connected</a> &amp;&amp; netmonit) {</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; REMMINA_DEBUG (<span class="stringliteral">&quot;Testing for %s&quot;</span>, addr_tostr);</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; g_network_monitor_can_reach_async (</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; monitor-&gt;<a class="code" href="struct___remmina_monitor.html#a4fe2b4d1448a36e21ab114630bd1d105">netmonitor</a>,</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; monitor-&gt;<a class="code" href="struct___remmina_monitor.html#abc732574457c248961a878dd0689dd3a">addr</a>,</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; NULL,</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; (GAsyncReadyCallback) <a class="code" href="remmina__monitor_8c.html#ab433d36e6c15de79e0152e2f6ce895ca">remmina_monitor_can_reach_cb</a>,</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; monitor);</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; }</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; status = (gchar *)g_hash_table_lookup (monitor-&gt;<a class="code" href="struct___remmina_monitor.html#abfc4878dd55c3b590663ac530ea53be4">server_status</a>, addr_tostr);</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="comment">//if (!status)</span></div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <span class="comment">//g_hash_table_insert (monitor-&gt;server_status, g_strdup(addr_tostr), &quot;offline&quot;);</span></div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160;</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; }</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160;</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <span class="keywordflow">if</span> (!status) {</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <span class="keywordflow">return</span> g_strdup(addr_tostr);</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; } <span class="keywordflow">else</span></div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <span class="keywordflow">return</span> status;</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160;</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <span class="comment">//g_free(ssh_tunnel_host), ssh_tunnel_host = NULL;</span></div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <span class="comment">//g_free(srv_host), srv_host = NULL;</span></div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="comment">//g_free(dest), dest = NULL;</span></div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;}</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;</div><div class="line"><a name="l00181"></a><span class="lineno"><a class="line" href="remmina__monitor_8h.html#aa53b9aaa2e68e2116b714e52418de3aa"> 181</a></span>&#160;gboolean <a class="code" href="remmina__monitor_8c.html#acf79b91eb05694ec967d726bd0f85e50">remmina_network_monitor_status</a> (<a class="code" href="struct___remmina_monitor.html">RemminaMonitor</a> *rm_monitor)</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160;{</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160;</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; gboolean status = g_network_monitor_get_connectivity (rm_monitor-&gt;<a class="code" href="struct___remmina_monitor.html#a4fe2b4d1448a36e21ab114630bd1d105">netmonitor</a>);</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160;</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; rm_monitor-&gt;<a class="code" href="struct___remmina_monitor.html#abfc4878dd55c3b590663ac530ea53be4">server_status</a> = g_hash_table_new_full(</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; g_str_hash,</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; g_str_equal,</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; (GDestroyNotify)g_free,</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; (GDestroyNotify)g_free);</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160;</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="keywordflow">switch</span> (status)</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; {</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="keywordflow">case</span> G_NETWORK_CONNECTIVITY_LOCAL:</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; REMMINA_DEBUG (<span class="stringliteral">&quot;G_NETWORK_CONNECTIVITY_LOCAL&quot;</span>);</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; rm_monitor-&gt;<a class="code" href="struct___remmina_monitor.html#adaa8ac5463302ab18a45171b5e4618f1">connected</a> = FALSE;</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160;</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; <span class="keywordflow">case</span> G_NETWORK_CONNECTIVITY_LIMITED:</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; REMMINA_DEBUG (<span class="stringliteral">&quot;G_NETWORK_CONNECTIVITY_LIMITED&quot;</span>);</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; rm_monitor-&gt;<a class="code" href="struct___remmina_monitor.html#adaa8ac5463302ab18a45171b5e4618f1">connected</a> = FALSE;</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160;</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <span class="keywordflow">case</span> G_NETWORK_CONNECTIVITY_PORTAL:</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; REMMINA_DEBUG (<span class="stringliteral">&quot;G_NETWORK_CONNECTIVITY_PORTAL&quot;</span>);</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; rm_monitor-&gt;<a class="code" href="struct___remmina_monitor.html#adaa8ac5463302ab18a45171b5e4618f1">connected</a> = FALSE;</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160;</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <span class="keywordflow">case</span> G_NETWORK_CONNECTIVITY_FULL:</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; REMMINA_DEBUG (<span class="stringliteral">&quot;G_NETWORK_CONNECTIVITY_FULL&quot;</span>);</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; rm_monitor-&gt;<a class="code" href="struct___remmina_monitor.html#adaa8ac5463302ab18a45171b5e4618f1">connected</a> = TRUE;</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; }</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160;</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <span class="keywordflow">return</span> status;</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160;}</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160;</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160;</div><div class="line"><a name="l00220"></a><span class="lineno"><a class="line" href="remmina__monitor_8h.html#ac37c2579934e206d669c1af9b51f8ef1"> 220</a></span>&#160;<a class="code" href="struct___remmina_monitor.html">RemminaMonitor</a> *<a class="code" href="remmina__monitor_8c.html#ac37c2579934e206d669c1af9b51f8ef1">remmina_network_monitor_new</a> ()</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160;{</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160;</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; rm_monitor = g_new0(<a class="code" href="struct___remmina_monitor.html">RemminaMonitor</a>, 1);</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160;</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; rm_monitor-&gt;<a class="code" href="struct___remmina_monitor.html#a4fe2b4d1448a36e21ab114630bd1d105">netmonitor</a> = g_network_monitor_get_default ();</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160;</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__monitor_8c.html#a6eae21e170328d883ef13f8f71401ffd">rm_monitor</a>;</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160;}</div><div class="ttc" id="remmina__file_8c_html_a8eb1b213d9d08c6ad13683ce05f4355e"><div class="ttname"><a href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a></div><div class="ttdeci">const gchar * remmina_file_get_string(RemminaFile *remminafile, const gchar *setting)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00516">remmina_file.c:516</a></div></div>
<div class="ttc" id="types_8h_html_a112d7cc6c755209cabb68cf2a62ad515"><div class="ttname"><a href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a></div><div class="ttdeci">typedefG_BEGIN_DECLS struct _RemminaFile RemminaFile</div><div class="ttdef"><b>Definition:</b> <a href="types_8h_source.html#l00044">types.h:44</a></div></div>
<div class="ttc" id="struct___remmina_monitor_html_abc732574457c248961a878dd0689dd3a"><div class="ttname"><a href="struct___remmina_monitor.html#abc732574457c248961a878dd0689dd3a">_RemminaMonitor::addr</a></div><div class="ttdeci">GSocketConnectable * addr</div><div class="ttdef"><b>Definition:</b> <a href="remmina__monitor_8h_source.html#l00046">remmina_monitor.h:46</a></div></div>
<div class="ttc" id="struct___remmina_monitor_html"><div class="ttname"><a href="struct___remmina_monitor.html">_RemminaMonitor</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__monitor_8h_source.html#l00043">remmina_monitor.h:43</a></div></div>
@@ -98,7 +98,7 @@ $(document).ready(function(){initNavTree('remmina__monitor_8c_source.html','');}
<div class="ttc" id="remmina__log_8h_html"><div class="ttname"><a href="remmina__log_8h.html">remmina_log.h</a></div></div>
<div class="ttc" id="remmina__monitor_8c_html_ab433d36e6c15de79e0152e2f6ce895ca"><div class="ttname"><a href="remmina__monitor_8c.html#ab433d36e6c15de79e0152e2f6ce895ca">remmina_monitor_can_reach_cb</a></div><div class="ttdeci">static void remmina_monitor_can_reach_cb(GNetworkMonitor *netmonitor, GAsyncResult *result, RemminaMonitor *monitor)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__monitor_8c_source.html#l00043">remmina_monitor.c:43</a></div></div>
<div class="ttc" id="remmina__monitor_8h_html"><div class="ttname"><a href="remmina__monitor_8h.html">remmina_monitor.h</a></div></div>
-<div class="ttc" id="remmina__file_8c_html_a4884356c195dcfb4ceacf641a1e74e66"><div class="ttname"><a href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a></div><div class="ttdeci">gint remmina_file_get_int(RemminaFile *remminafile, const gchar *setting, gint default_value)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00594">remmina_file.c:594</a></div></div>
+<div class="ttc" id="remmina__file_8c_html_a4884356c195dcfb4ceacf641a1e74e66"><div class="ttname"><a href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a></div><div class="ttdeci">gint remmina_file_get_int(RemminaFile *remminafile, const gchar *setting, gint default_value)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00603">remmina_file.c:603</a></div></div>
<div class="ttc" id="remmina__monitor_8c_html_a6eae21e170328d883ef13f8f71401ffd"><div class="ttname"><a href="remmina__monitor_8c.html#a6eae21e170328d883ef13f8f71401ffd">rm_monitor</a></div><div class="ttdeci">RemminaMonitor * rm_monitor</div><div class="ttdef"><b>Definition:</b> <a href="remmina__monitor_8c_source.html#l00041">remmina_monitor.c:41</a></div></div>
<div class="ttc" id="struct___remmina_monitor_html_abfc4878dd55c3b590663ac530ea53be4"><div class="ttname"><a href="struct___remmina_monitor.html#abfc4878dd55c3b590663ac530ea53be4">_RemminaMonitor::server_status</a></div><div class="ttdeci">GHashTable * server_status</div><div class="ttdef"><b>Definition:</b> <a href="remmina__monitor_8h_source.html#l00048">remmina_monitor.h:48</a></div></div>
<div class="ttc" id="struct___remmina_monitor_html_adaa8ac5463302ab18a45171b5e4618f1"><div class="ttname"><a href="struct___remmina_monitor.html#adaa8ac5463302ab18a45171b5e4618f1">_RemminaMonitor::connected</a></div><div class="ttdeci">gboolean connected</div><div class="ttdef"><b>Definition:</b> <a href="remmina__monitor_8h_source.html#l00045">remmina_monitor.h:45</a></div></div>
diff --git a/public/remmina__mpchange_8c_source.html b/public/remmina__mpchange_8c_source.html
index 44100a683..6812f3720 100644
--- a/public/remmina__mpchange_8c_source.html
+++ b/public/remmina__mpchange_8c_source.html
@@ -87,10 +87,10 @@ $(document).ready(function(){initNavTree('remmina__mpchange_8c_source.html','');
</div><!--header-->
<div class="contents">
<a href="remmina__mpchange_8c.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * Remmina - The GTK+ Remote Desktop Client</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> * Copyright (C) 2009-2011 Vic Lee</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> * Copyright (C) 2014-2015 Antenore Gatta, Fabio Castelli, Giovanni Panozzo</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * Copyright (C) 2016-2022 Antenore Gatta, Giovanni Panozzo</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * (at your option) any later version.</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> * along with this program; if not, write to the Free Software</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> * Foundation, Inc., 51 Franklin Street, Fifth Floor,</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> * Boston, MA 02110-1301, USA.</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="comment"> * In addition, as a special exception, the copyright holders give</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment"> * permission to link the code of portions of this program with the</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"> * OpenSSL library under certain conditions as described in each</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> * individual source file, and distribute linked combinations</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> * including the two.</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * You must obey the GNU General Public License in all respects</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> * for all of the code used other than OpenSSL. * If you modify</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment"> * file(s) with this exception, you may extend this exception to your</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="comment"> * version of the file(s), but you are not obligated to do so. * If you</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="comment"> * do not wish to do so, delete this exception statement from your</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="comment"> * version. * If you delete this exception statement from all source</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="comment"> * files in the program, then also delete it here.</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="preprocessor">#include &lt;gtk/gtk.h&gt;</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="preprocessor">#include &lt;glib/gi18n.h&gt;</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="preprocessor">#include &quot;config.h&quot;</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__mpchange_8h.html">remmina_mpchange.h</a>&quot;</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__file_8h.html">remmina_file.h</a>&quot;</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__file__manager_8h.html">remmina_file_manager.h</a>&quot;</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__pref_8h.html">remmina_pref.h</a>&quot;</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__public_8h.html">remmina_public.h</a>&quot;</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__main_8h.html">remmina_main.h</a>&quot;</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__plugin__manager_8h.html">remmina_plugin_manager.h</a>&quot;</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__log_8h.html">remmina_log.h</a>&quot;</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__trace__calls_8h.html">remmina/remmina_trace_calls.h</a>&quot;</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="preprocessor">#define GET_DIALOG_OBJECT(object_name) gtk_builder_get_object(bu, object_name)</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;</div><div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="structmpchanger__params.html"> 52</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structmpchanger__params.html">mpchanger_params</a> {</div><div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="structmpchanger__params.html#a634dd9d08486b2a435fba15119db6742"> 53</a></span>&#160; gchar *<a class="code" href="structmpchanger__params.html#a634dd9d08486b2a435fba15119db6742">username</a>; <span class="comment">// New username</span></div><div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="structmpchanger__params.html#a90af95c96a92c2aff1c2ab4be2e40f5c"> 54</a></span>&#160; gchar *<a class="code" href="structmpchanger__params.html#a90af95c96a92c2aff1c2ab4be2e40f5c">domain</a>; <span class="comment">// New domain</span></div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="structmpchanger__params.html#a41f51745fc0e63d75d15fc80aaa4a29e"> 55</a></span>&#160; gchar *<a class="code" href="structmpchanger__params.html#a41f51745fc0e63d75d15fc80aaa4a29e">password</a>; <span class="comment">// New password</span></div><div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="structmpchanger__params.html#a098952d194a183d4a505aa065797864b"> 56</a></span>&#160; gchar *<a class="code" href="structmpchanger__params.html#a098952d194a183d4a505aa065797864b">group</a>;</div><div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="structmpchanger__params.html#a8e6ebba297a1eaf81a21e0b6d0483659"> 57</a></span>&#160; gchar *<a class="code" href="structmpchanger__params.html#a8e6ebba297a1eaf81a21e0b6d0483659">gatewayusername</a>;</div><div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="structmpchanger__params.html#a00a888f26c1609e064367bb5095c71f4"> 58</a></span>&#160; gchar *<a class="code" href="structmpchanger__params.html#a00a888f26c1609e064367bb5095c71f4">gatewaydomain</a>;</div><div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="structmpchanger__params.html#a59187ffb045f62b334ff972331f960b6"> 59</a></span>&#160; gchar *<a class="code" href="structmpchanger__params.html#a59187ffb045f62b334ff972331f960b6">gatewaypassword</a>;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;</div><div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="structmpchanger__params.html#ace846a15a537aecd0de2a17a1203c809"> 61</a></span>&#160; GtkEntry *<a class="code" href="structmpchanger__params.html#ab39b307ec320e66e34dd5b6a8c56d348">eGroup</a>, *<a class="code" href="structmpchanger__params.html#ace846a15a537aecd0de2a17a1203c809">eUsername</a>, *<a class="code" href="structmpchanger__params.html#ae582e14f2f790ea6bfdf81d5920e51ed">eDomain</a>, *<a class="code" href="structmpchanger__params.html#adc26bfabbc7c02beb1df988801c7972d">ePassword1</a>, *<a class="code" href="structmpchanger__params.html#a5c5b14d537a1b0685027d50d2a4cf9be">ePassword2</a>;</div><div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="structmpchanger__params.html#ab46251204997d3d363681557f99e66ce"> 62</a></span>&#160; GtkEntry *<a class="code" href="structmpchanger__params.html#ab46251204997d3d363681557f99e66ce">eGatewayUsername</a>, *<a class="code" href="structmpchanger__params.html#acd1ad765997b06feec54fa746d5b4d2b">eGatewayDomain</a>, *<a class="code" href="structmpchanger__params.html#a69c2b22c53164a73241573474071df6e">eGatewayPassword1</a>, *<a class="code" href="structmpchanger__params.html#a73f1024c68afe4f35bea5608188c52bc">eGatewayPassword2</a>;</div><div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="structmpchanger__params.html#a3f0a338901d8e6195eb872b0f2098e73"> 63</a></span>&#160; GtkListStore* <a class="code" href="structmpchanger__params.html#a3f0a338901d8e6195eb872b0f2098e73">store</a>;</div><div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="structmpchanger__params.html#adf52357ac6f70f8bead49111deff9568"> 64</a></span>&#160; GtkDialog* <a class="code" href="structmpchanger__params.html#adf52357ac6f70f8bead49111deff9568">dialog</a>;</div><div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="structmpchanger__params.html#a87576a4dfe04c11686cf574669331bb2"> 65</a></span>&#160; GtkTreeView* <a class="code" href="structmpchanger__params.html#a87576a4dfe04c11686cf574669331bb2">table</a>;</div><div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="structmpchanger__params.html#aaccae78b49c585d0a4d34776152ae5a2"> 66</a></span>&#160; GtkButton* <a class="code" href="structmpchanger__params.html#aaccae78b49c585d0a4d34776152ae5a2">btnDoChange</a>;</div><div class="line"><a name="l00067"></a><span class="lineno"><a class="line" href="structmpchanger__params.html#ac9c16b65f1d27a62e2622b79f1aaf7bd"> 67</a></span>&#160; GtkLabel* <a class="code" href="structmpchanger__params.html#ac9c16b65f1d27a62e2622b79f1aaf7bd">statusLabel</a>;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;</div><div class="line"><a name="l00069"></a><span class="lineno"><a class="line" href="structmpchanger__params.html#a3cb4141ca61b0b9a5584239386dbbe46"> 69</a></span>&#160; GtkTreeIter <a class="code" href="structmpchanger__params.html#a3cb4141ca61b0b9a5584239386dbbe46">iter</a>;</div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="structmpchanger__params.html#a44429b8b620590ed1e1e015af6191719"> 70</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="structmpchanger__params.html#a44429b8b620590ed1e1e015af6191719">changed_passwords_count</a>;</div><div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="structmpchanger__params.html#a170ffe7965540ab152a4a95945482c87"> 71</a></span>&#160; guint <a class="code" href="structmpchanger__params.html#a170ffe7965540ab152a4a95945482c87">sid</a>;</div><div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="structmpchanger__params.html#ac8fdacd94418731904020ff679475918"> 72</a></span>&#160; guint <a class="code" href="structmpchanger__params.html#ac8fdacd94418731904020ff679475918">searchentrychange_timeout_source_id</a>;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;};</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;<span class="keyword">enum</span> {</div><div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="remmina__mpchange_8c.html#a5d76b81b0ad4c19007a781d4edb8181faa19a4779198791797a93684c6db7733a"> 76</a></span>&#160; <a class="code" href="remmina__mpchange_8c.html#a5d76b81b0ad4c19007a781d4edb8181faa19a4779198791797a93684c6db7733a">COL_F</a> = 0,</div><div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="remmina__mpchange_8c.html#a5d76b81b0ad4c19007a781d4edb8181fa621a0fec1bcdb27626ca53cd7e8b8f24"> 77</a></span>&#160; <a class="code" href="remmina__mpchange_8c.html#a5d76b81b0ad4c19007a781d4edb8181fa621a0fec1bcdb27626ca53cd7e8b8f24">COL_NAME</a>,</div><div class="line"><a name="l00078"></a><span class="lineno"><a class="line" href="remmina__mpchange_8c.html#a5d76b81b0ad4c19007a781d4edb8181fa0d7f93239dde2b010c5117543a7efcbd"> 78</a></span>&#160; <a class="code" href="remmina__mpchange_8c.html#a5d76b81b0ad4c19007a781d4edb8181fa0d7f93239dde2b010c5117543a7efcbd">COL_GROUP</a>,</div><div class="line"><a name="l00079"></a><span class="lineno"><a class="line" href="remmina__mpchange_8c.html#a5d76b81b0ad4c19007a781d4edb8181fa4c1dc9a16a3183553d83687506a5652e"> 79</a></span>&#160; <a class="code" href="remmina__mpchange_8c.html#a5d76b81b0ad4c19007a781d4edb8181fa4c1dc9a16a3183553d83687506a5652e">COL_USERNAME</a>,</div><div class="line"><a name="l00080"></a><span class="lineno"><a class="line" href="remmina__mpchange_8c.html#a5d76b81b0ad4c19007a781d4edb8181faaf0ccab08a5eb4b0cd87e7f659ef605d"> 80</a></span>&#160; <a class="code" href="remmina__mpchange_8c.html#a5d76b81b0ad4c19007a781d4edb8181faaf0ccab08a5eb4b0cd87e7f659ef605d">COL_GATEWAY_USERNAME</a>,</div><div class="line"><a name="l00081"></a><span class="lineno"><a class="line" href="remmina__mpchange_8c.html#a5d76b81b0ad4c19007a781d4edb8181fadc0807f00f503edcc8e588a3894af0e3"> 81</a></span>&#160; <a class="code" href="remmina__mpchange_8c.html#a5d76b81b0ad4c19007a781d4edb8181fadc0807f00f503edcc8e588a3894af0e3">COL_FILENAME</a>,</div><div class="line"><a name="l00082"></a><span class="lineno"><a class="line" href="remmina__mpchange_8c.html#a5d76b81b0ad4c19007a781d4edb8181fa8843686a2923021b5ded06faeaaf66f1"> 82</a></span>&#160; <a class="code" href="remmina__mpchange_8c.html#a5d76b81b0ad4c19007a781d4edb8181fa8843686a2923021b5ded06faeaaf66f1">NUM_COLS</a></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;};</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;</div><div class="line"><a name="l00085"></a><span class="lineno"><a class="line" href="remmina__mpchange_8c.html#a506370be386145eeb2c59829fe3e8131"> 85</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="remmina__mpchange_8c.html#a506370be386145eeb2c59829fe3e8131">remmina_mpchange_fieldcompare</a>(<span class="keyword">const</span> gchar *needle, <span class="keyword">const</span> gchar *haystack, <span class="keywordtype">int</span> *matchcount)</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;{</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordflow">if</span> (needle[0] == 0) {</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; (*matchcount)++;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; }</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keywordflow">if</span> (strcasecmp(needle, haystack) != 0)</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; (*matchcount)++;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;}</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;</div><div class="line"><a name="l00102"></a><span class="lineno"><a class="line" href="remmina__mpchange_8c.html#a26ac0b33bd0b5ea718e16d04923b5ccd"> 102</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__mpchange_8c.html#a26ac0b33bd0b5ea718e16d04923b5ccd">remmina_mpchange_file_list_callback</a>(<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile, gpointer user_data)</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;{</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; GtkListStore* <a class="code" href="structmpchanger__params.html#a3f0a338901d8e6195eb872b0f2098e73">store</a>;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; GtkTreeIter <a class="code" href="structmpchanger__params.html#a3cb4141ca61b0b9a5584239386dbbe46">iter</a>;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="keywordtype">int</span> matchcount;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="keyword">const</span> gchar *<a class="code" href="structmpchanger__params.html#a634dd9d08486b2a435fba15119db6742">username</a>, *<a class="code" href="structmpchanger__params.html#a90af95c96a92c2aff1c2ab4be2e40f5c">domain</a>, *<a class="code" href="structmpchanger__params.html#a098952d194a183d4a505aa065797864b">group</a>, *<a class="code" href="structmpchanger__params.html#a8e6ebba297a1eaf81a21e0b6d0483659">gatewayusername</a>, *<a class="code" href="structmpchanger__params.html#a00a888f26c1609e064367bb5095c71f4">gatewaydomain</a>;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; gchar* s;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; gchar* t;</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="keyword">struct </span><a class="code" href="structmpchanger__params.html">mpchanger_params</a>* mpcp;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; mpcp = (<span class="keyword">struct </span><a class="code" href="structmpchanger__params.html">mpchanger_params</a>*)user_data;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; store = GTK_LIST_STORE(mpcp-&gt;<a class="code" href="structmpchanger__params.html#a3f0a338901d8e6195eb872b0f2098e73">store</a>);</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; username = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">&quot;username&quot;</span>);</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; domain = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">&quot;domain&quot;</span>);</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; group = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">&quot;group&quot;</span>);</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; gatewayusername = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">&quot;gateway_username&quot;</span>);</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; gatewaydomain = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">&quot;gateway_domain&quot;</span>);</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keywordflow">if</span> (username == NULL)</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; username = <span class="stringliteral">&quot;&quot;</span>;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="keywordflow">if</span> (domain == NULL)</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; domain = <span class="stringliteral">&quot;&quot;</span>;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <span class="keywordflow">if</span> (group == NULL)</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; group = <span class="stringliteral">&quot;&quot;</span>;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="keywordflow">if</span> (gatewayusername == NULL)</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; gatewayusername = <span class="stringliteral">&quot;&quot;</span>;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="keywordflow">if</span> (gatewaydomain == NULL)</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; gatewaydomain = <span class="stringliteral">&quot;&quot;</span>;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; matchcount = 0;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="remmina__mpchange_8c.html#a506370be386145eeb2c59829fe3e8131">remmina_mpchange_fieldcompare</a>(mpcp-&gt;<a class="code" href="structmpchanger__params.html#a634dd9d08486b2a435fba15119db6742">username</a>, username, &amp;matchcount))</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="remmina__mpchange_8c.html#a506370be386145eeb2c59829fe3e8131">remmina_mpchange_fieldcompare</a>(mpcp-&gt;<a class="code" href="structmpchanger__params.html#a90af95c96a92c2aff1c2ab4be2e40f5c">domain</a>, domain, &amp;matchcount))</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="remmina__mpchange_8c.html#a506370be386145eeb2c59829fe3e8131">remmina_mpchange_fieldcompare</a>(mpcp-&gt;<a class="code" href="structmpchanger__params.html#a098952d194a183d4a505aa065797864b">group</a>, group, &amp;matchcount))</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="remmina__mpchange_8c.html#a506370be386145eeb2c59829fe3e8131">remmina_mpchange_fieldcompare</a>(mpcp-&gt;<a class="code" href="structmpchanger__params.html#a8e6ebba297a1eaf81a21e0b6d0483659">gatewayusername</a>, gatewayusername, &amp;matchcount))</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="remmina__mpchange_8c.html#a506370be386145eeb2c59829fe3e8131">remmina_mpchange_fieldcompare</a>(mpcp-&gt;<a class="code" href="structmpchanger__params.html#a00a888f26c1609e064367bb5095c71f4">gatewaydomain</a>, gatewaydomain, &amp;matchcount))</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; gtk_list_store_append(store, &amp;iter);</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; s = g_strdup_printf(<span class="stringliteral">&quot;%s\\%s&quot;</span>, domain, username);</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; t = g_strdup_printf(<span class="stringliteral">&quot;%s\\%s&quot;</span>, gatewaydomain, gatewayusername);</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; gtk_list_store_set(store, &amp;iter,</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <a class="code" href="remmina__mpchange_8c.html#a5d76b81b0ad4c19007a781d4edb8181faa19a4779198791797a93684c6db7733a">COL_F</a>, matchcount &gt;= 5 ? TRUE : FALSE,</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <a class="code" href="remmina__mpchange_8c.html#a5d76b81b0ad4c19007a781d4edb8181fa621a0fec1bcdb27626ca53cd7e8b8f24">COL_NAME</a>, <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">&quot;name&quot;</span>),</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <a class="code" href="remmina__mpchange_8c.html#a5d76b81b0ad4c19007a781d4edb8181fa0d7f93239dde2b010c5117543a7efcbd">COL_GROUP</a>, group,</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <a class="code" href="remmina__mpchange_8c.html#a5d76b81b0ad4c19007a781d4edb8181fa4c1dc9a16a3183553d83687506a5652e">COL_USERNAME</a>, s,</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <a class="code" href="remmina__mpchange_8c.html#a5d76b81b0ad4c19007a781d4edb8181faaf0ccab08a5eb4b0cd87e7f659ef605d">COL_GATEWAY_USERNAME</a>, t,</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <a class="code" href="remmina__mpchange_8c.html#a5d76b81b0ad4c19007a781d4edb8181fadc0807f00f503edcc8e588a3894af0e3">COL_FILENAME</a>, remminafile-&gt;filename,</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; -1);</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; g_free(s);</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; g_free(t);</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;}</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;</div><div class="line"><a name="l00167"></a><span class="lineno"><a class="line" href="remmina__mpchange_8c.html#aa872ba9de3be7ccd116881cee84c8b85"> 167</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__mpchange_8c.html#aa872ba9de3be7ccd116881cee84c8b85">remmina_mpchange_checkbox_toggle</a>(GtkCellRendererToggle *cell, gchar *path_string, gpointer user_data)</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;{</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; GtkTreeIter <a class="code" href="structmpchanger__params.html#a3cb4141ca61b0b9a5584239386dbbe46">iter</a>;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <span class="keyword">struct </span><a class="code" href="structmpchanger__params.html">mpchanger_params</a>* mpcp = (<span class="keyword">struct </span><a class="code" href="structmpchanger__params.html">mpchanger_params</a>*)user_data;</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; GtkTreePath *path;</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; gboolean a = gtk_cell_renderer_toggle_get_active(cell);</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; path = gtk_tree_path_new_from_string(path_string);</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; gtk_tree_model_get_iter(GTK_TREE_MODEL(mpcp-&gt;<a class="code" href="structmpchanger__params.html#a3f0a338901d8e6195eb872b0f2098e73">store</a>), &amp;iter, path);</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; gtk_tree_path_free(path);</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; gtk_list_store_set(mpcp-&gt;<a class="code" href="structmpchanger__params.html#a3f0a338901d8e6195eb872b0f2098e73">store</a>, &amp;iter, <a class="code" href="remmina__mpchange_8c.html#a5d76b81b0ad4c19007a781d4edb8181faa19a4779198791797a93684c6db7733a">COL_F</a>, !a, -1);</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;}</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;</div><div class="line"><a name="l00181"></a><span class="lineno"><a class="line" href="remmina__mpchange_8c.html#a24d0569c79b289b5812c5c3019e5f4dd"> 181</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__mpchange_8c.html#a24d0569c79b289b5812c5c3019e5f4dd">remmina_mpchange_dochange</a>(gchar* fname, <span class="keyword">struct</span> <a class="code" href="structmpchanger__params.html">mpchanger_params</a>* mpcp)</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160;{</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160;</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a>* remminafile;</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160;</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; remminafile = <a class="code" href="remmina__file_8c.html#ac1cc2d7f827f7d64c7fd3edf10e9383e">remmina_file_load</a>(fname);</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <span class="keywordflow">if</span> (remminafile) {</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <span class="keywordflow">if</span>(mpcp-&gt;<a class="code" href="structmpchanger__params.html#a41f51745fc0e63d75d15fc80aaa4a29e">password</a>[0] != 0){</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; <a class="code" href="remmina__file_8c.html#a3be28ff7f5a9b44dc47f92b883a85ac5">remmina_file_store_secret_plugin_password</a>(remminafile, <span class="stringliteral">&quot;password&quot;</span>, mpcp-&gt;<a class="code" href="structmpchanger__params.html#a41f51745fc0e63d75d15fc80aaa4a29e">password</a>);</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; }</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <span class="keywordflow">if</span>(mpcp-&gt;<a class="code" href="structmpchanger__params.html#a59187ffb045f62b334ff972331f960b6">gatewaypassword</a>[0] != 0){</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <a class="code" href="remmina__file_8c.html#a3be28ff7f5a9b44dc47f92b883a85ac5">remmina_file_store_secret_plugin_password</a>(remminafile, <span class="stringliteral">&quot;gateway_password&quot;</span>, mpcp-&gt;<a class="code" href="structmpchanger__params.html#a59187ffb045f62b334ff972331f960b6">gatewaypassword</a>);</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; }</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <a class="code" href="remmina__file_8c.html#abd2f06bf0a5ddcf7156e5ef7d0c8d4d7">remmina_file_free</a>(remminafile);</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; mpcp-&gt;<a class="code" href="structmpchanger__params.html#a44429b8b620590ed1e1e015af6191719">changed_passwords_count</a>++;</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; }</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160;</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160;}</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160;</div><div class="line"><a name="l00201"></a><span class="lineno"><a class="line" href="remmina__mpchange_8c.html#a909daa43f234a03b1ec12a58acc51b15"> 201</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__mpchange_8c.html#a909daa43f234a03b1ec12a58acc51b15">enable_inputs</a>(<span class="keyword">struct</span> <a class="code" href="structmpchanger__params.html">mpchanger_params</a>* mpcp, gboolean ena)</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160;{</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(mpcp-&gt;<a class="code" href="structmpchanger__params.html#ab39b307ec320e66e34dd5b6a8c56d348">eGroup</a>), ena);</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(mpcp-&gt;<a class="code" href="structmpchanger__params.html#ace846a15a537aecd0de2a17a1203c809">eUsername</a>), ena);</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(mpcp-&gt;<a class="code" href="structmpchanger__params.html#ae582e14f2f790ea6bfdf81d5920e51ed">eDomain</a>), ena);</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(mpcp-&gt;<a class="code" href="structmpchanger__params.html#adc26bfabbc7c02beb1df988801c7972d">ePassword1</a>), ena);</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(mpcp-&gt;<a class="code" href="structmpchanger__params.html#a5c5b14d537a1b0685027d50d2a4cf9be">ePassword2</a>), ena);</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(mpcp-&gt;<a class="code" href="structmpchanger__params.html#ab46251204997d3d363681557f99e66ce">eGatewayUsername</a>), ena);</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(mpcp-&gt;<a class="code" href="structmpchanger__params.html#acd1ad765997b06feec54fa746d5b4d2b">eGatewayDomain</a>), ena);</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(mpcp-&gt;<a class="code" href="structmpchanger__params.html#a69c2b22c53164a73241573474071df6e">eGatewayPassword1</a>), ena);</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(mpcp-&gt;<a class="code" href="structmpchanger__params.html#a73f1024c68afe4f35bea5608188c52bc">eGatewayPassword2</a>), ena);</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(mpcp-&gt;<a class="code" href="structmpchanger__params.html#aaccae78b49c585d0a4d34776152ae5a2">btnDoChange</a>), ena);</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(mpcp-&gt;<a class="code" href="structmpchanger__params.html#a87576a4dfe04c11686cf574669331bb2">table</a>), ena);</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160;}</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160;</div><div class="line"><a name="l00216"></a><span class="lineno"><a class="line" href="remmina__mpchange_8c.html#abea63e74b83d3545308d05dfe88e2839"> 216</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="remmina__mpchange_8c.html#abea63e74b83d3545308d05dfe88e2839">changenext</a>(gpointer user_data)</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160;{</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <span class="keyword">struct </span><a class="code" href="structmpchanger__params.html">mpchanger_params</a>* mpcp = (<span class="keyword">struct </span><a class="code" href="structmpchanger__params.html">mpchanger_params</a>*)user_data;</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; gchar* fname;</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; gboolean sel;</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160;</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; gtk_tree_model_get(GTK_TREE_MODEL(mpcp-&gt;<a class="code" href="structmpchanger__params.html#a3f0a338901d8e6195eb872b0f2098e73">store</a>), &amp;mpcp-&gt;<a class="code" href="structmpchanger__params.html#a3cb4141ca61b0b9a5584239386dbbe46">iter</a>, <a class="code" href="remmina__mpchange_8c.html#a5d76b81b0ad4c19007a781d4edb8181faa19a4779198791797a93684c6db7733a">COL_F</a>, &amp;sel, -1);</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; gtk_tree_model_get(GTK_TREE_MODEL(mpcp-&gt;<a class="code" href="structmpchanger__params.html#a3f0a338901d8e6195eb872b0f2098e73">store</a>), &amp;mpcp-&gt;<a class="code" href="structmpchanger__params.html#a3cb4141ca61b0b9a5584239386dbbe46">iter</a>, <a class="code" href="remmina__mpchange_8c.html#a5d76b81b0ad4c19007a781d4edb8181fadc0807f00f503edcc8e588a3894af0e3">COL_FILENAME</a>, &amp;fname, -1);</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <span class="keywordflow">if</span> (sel) {</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <a class="code" href="remmina__mpchange_8c.html#a24d0569c79b289b5812c5c3019e5f4dd">remmina_mpchange_dochange</a>(fname, mpcp);</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; }</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; g_free(fname);</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160;</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <span class="keywordflow">if</span> (gtk_tree_model_iter_next(GTK_TREE_MODEL(mpcp-&gt;<a class="code" href="structmpchanger__params.html#a3f0a338901d8e6195eb872b0f2098e73">store</a>), &amp;mpcp-&gt;<a class="code" href="structmpchanger__params.html#a3cb4141ca61b0b9a5584239386dbbe46">iter</a>)) {</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <span class="keywordflow">return</span> G_SOURCE_CONTINUE;</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; }<span class="keywordflow">else</span> {</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; gtk_dialog_response(mpcp-&gt;<a class="code" href="structmpchanger__params.html#adf52357ac6f70f8bead49111deff9568">dialog</a>, 1);</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; mpcp-&gt;<a class="code" href="structmpchanger__params.html#a170ffe7965540ab152a4a95945482c87">sid</a> = 0;</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; }</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160;}</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160;</div><div class="line"><a name="l00239"></a><span class="lineno"><a class="line" href="remmina__mpchange_8c.html#a07d130893c0487bb873f2b6986e15a1b"> 239</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__mpchange_8c.html#a07d130893c0487bb873f2b6986e15a1b">remmina_mpchange_dochange_clicked</a>(GtkButton *btn, gpointer user_data)</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160;{</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <span class="keyword">struct </span><a class="code" href="structmpchanger__params.html">mpchanger_params</a>* mpcp = (<span class="keyword">struct </span><a class="code" href="structmpchanger__params.html">mpchanger_params</a>*)user_data;</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; <span class="keyword">const</span> gchar *passwd1, *passwd2, *gatewaypasswd1, *gatewaypasswd2;</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160;</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; <span class="keywordflow">if</span> (mpcp-&gt;<a class="code" href="structmpchanger__params.html#ac8fdacd94418731904020ff679475918">searchentrychange_timeout_source_id</a>) {</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; g_source_remove(mpcp-&gt;<a class="code" href="structmpchanger__params.html#ac8fdacd94418731904020ff679475918">searchentrychange_timeout_source_id</a>);</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; mpcp-&gt;<a class="code" href="structmpchanger__params.html#ac8fdacd94418731904020ff679475918">searchentrychange_timeout_source_id</a> = 0;</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; }</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160;</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; <span class="keywordflow">if</span> (!gtk_tree_model_get_iter_first(GTK_TREE_MODEL(mpcp-&gt;<a class="code" href="structmpchanger__params.html#a3f0a338901d8e6195eb872b0f2098e73">store</a>), &amp;mpcp-&gt;<a class="code" href="structmpchanger__params.html#a3cb4141ca61b0b9a5584239386dbbe46">iter</a>))</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160;</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; passwd1 = gtk_entry_get_text(mpcp-&gt;<a class="code" href="structmpchanger__params.html#adc26bfabbc7c02beb1df988801c7972d">ePassword1</a>);</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; passwd2 = gtk_entry_get_text(mpcp-&gt;<a class="code" href="structmpchanger__params.html#a5c5b14d537a1b0685027d50d2a4cf9be">ePassword2</a>);</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160;</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <span class="keywordflow">if</span> (g_strcmp0(passwd1, passwd2) != 0) {</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; GtkWidget *msgDialog;</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; msgDialog = gtk_message_dialog_new(GTK_WINDOW(mpcp-&gt;<a class="code" href="structmpchanger__params.html#adf52357ac6f70f8bead49111deff9568">dialog</a>),</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; GTK_DIALOG_DESTROY_WITH_PARENT,</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; GTK_MESSAGE_ERROR,</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; GTK_BUTTONS_CLOSE,</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; _(<span class="stringliteral">&quot;The passwords do not match&quot;</span>));</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; gtk_dialog_run(GTK_DIALOG(msgDialog));</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; gtk_widget_destroy(msgDialog);</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; }</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; gatewaypasswd1 = gtk_entry_get_text(mpcp-&gt;<a class="code" href="structmpchanger__params.html#a69c2b22c53164a73241573474071df6e">eGatewayPassword1</a>);</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; gatewaypasswd2 = gtk_entry_get_text(mpcp-&gt;<a class="code" href="structmpchanger__params.html#a73f1024c68afe4f35bea5608188c52bc">eGatewayPassword2</a>);</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; <span class="keywordflow">if</span> (g_strcmp0(gatewaypasswd1, gatewaypasswd2) != 0) {</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; GtkWidget *msgDialog;</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; msgDialog = gtk_message_dialog_new(GTK_WINDOW(mpcp-&gt;<a class="code" href="structmpchanger__params.html#adf52357ac6f70f8bead49111deff9568">dialog</a>),</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; GTK_DIALOG_DESTROY_WITH_PARENT,</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; GTK_MESSAGE_ERROR,</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; GTK_BUTTONS_CLOSE,</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; _(<span class="stringliteral">&quot;The Gateway passwords do not match&quot;</span>));</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; gtk_dialog_run(GTK_DIALOG(msgDialog));</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; gtk_widget_destroy(msgDialog);</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; }</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160;</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; g_free(mpcp-&gt;<a class="code" href="structmpchanger__params.html#a41f51745fc0e63d75d15fc80aaa4a29e">password</a>);</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; mpcp-&gt;<a class="code" href="structmpchanger__params.html#a41f51745fc0e63d75d15fc80aaa4a29e">password</a> = g_strdup(passwd1);</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; mpcp-&gt;<a class="code" href="structmpchanger__params.html#a44429b8b620590ed1e1e015af6191719">changed_passwords_count</a> = 0;</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160;</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; g_free(mpcp-&gt;<a class="code" href="structmpchanger__params.html#a59187ffb045f62b334ff972331f960b6">gatewaypassword</a>);</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; mpcp-&gt;<a class="code" href="structmpchanger__params.html#a59187ffb045f62b334ff972331f960b6">gatewaypassword</a> = g_strdup(gatewaypasswd1);</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; mpcp-&gt;<a class="code" href="structmpchanger__params.html#a44429b8b620590ed1e1e015af6191719">changed_passwords_count</a> = 0;</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160;</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; gtk_label_set_text(mpcp-&gt;<a class="code" href="structmpchanger__params.html#ac9c16b65f1d27a62e2622b79f1aaf7bd">statusLabel</a>, _(<span class="stringliteral">&quot;Resetting passwords, please wait…&quot;</span>));</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160;</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <a class="code" href="remmina__mpchange_8c.html#a909daa43f234a03b1ec12a58acc51b15">enable_inputs</a>(mpcp, FALSE);</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; mpcp-&gt;<a class="code" href="structmpchanger__params.html#a170ffe7965540ab152a4a95945482c87">sid</a> = g_idle_add(<a class="code" href="remmina__mpchange_8c.html#abea63e74b83d3545308d05dfe88e2839">changenext</a>, (gpointer)mpcp);</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160;</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160;}</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160;</div><div class="line"><a name="l00296"></a><span class="lineno"><a class="line" href="remmina__mpchange_8c.html#a4bf7e99626c40534641916848253f60f"> 296</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="remmina__mpchange_8c.html#a4bf7e99626c40534641916848253f60f">remmina_mpchange_searchfield_changed_to</a>(gpointer user_data)</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160;{</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <span class="keyword">struct </span><a class="code" href="structmpchanger__params.html">mpchanger_params</a> *mpcp = (<span class="keyword">struct </span><a class="code" href="structmpchanger__params.html">mpchanger_params</a> *)user_data;</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; <span class="keyword">const</span> gchar *s;</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160;</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; <span class="keywordflow">if</span> (mpcp-&gt;<a class="code" href="structmpchanger__params.html#ac8fdacd94418731904020ff679475918">searchentrychange_timeout_source_id</a>) {</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; g_source_remove(mpcp-&gt;<a class="code" href="structmpchanger__params.html#ac8fdacd94418731904020ff679475918">searchentrychange_timeout_source_id</a>);</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; mpcp-&gt;<a class="code" href="structmpchanger__params.html#ac8fdacd94418731904020ff679475918">searchentrychange_timeout_source_id</a> = 0;</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; }</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160;</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; s = gtk_entry_get_text(mpcp-&gt;<a class="code" href="structmpchanger__params.html#ab39b307ec320e66e34dd5b6a8c56d348">eGroup</a>);</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; g_free(mpcp-&gt;<a class="code" href="structmpchanger__params.html#a098952d194a183d4a505aa065797864b">group</a>);</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; mpcp-&gt;<a class="code" href="structmpchanger__params.html#a098952d194a183d4a505aa065797864b">group</a> = g_strdup(s);</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160;</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; s = gtk_entry_get_text(mpcp-&gt;<a class="code" href="structmpchanger__params.html#ae582e14f2f790ea6bfdf81d5920e51ed">eDomain</a>);</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; g_free(mpcp-&gt;<a class="code" href="structmpchanger__params.html#a90af95c96a92c2aff1c2ab4be2e40f5c">domain</a>);</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; mpcp-&gt;<a class="code" href="structmpchanger__params.html#a90af95c96a92c2aff1c2ab4be2e40f5c">domain</a> = g_strdup(s);</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160;</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; s = gtk_entry_get_text(mpcp-&gt;<a class="code" href="structmpchanger__params.html#ace846a15a537aecd0de2a17a1203c809">eUsername</a>);</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; g_free(mpcp-&gt;<a class="code" href="structmpchanger__params.html#a634dd9d08486b2a435fba15119db6742">username</a>);</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; mpcp-&gt;<a class="code" href="structmpchanger__params.html#a634dd9d08486b2a435fba15119db6742">username</a> = g_strdup(s);</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160;</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; s = gtk_entry_get_text(mpcp-&gt;<a class="code" href="structmpchanger__params.html#acd1ad765997b06feec54fa746d5b4d2b">eGatewayDomain</a>);</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; g_free(mpcp-&gt;<a class="code" href="structmpchanger__params.html#a00a888f26c1609e064367bb5095c71f4">gatewaydomain</a>);</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; mpcp-&gt;<a class="code" href="structmpchanger__params.html#a00a888f26c1609e064367bb5095c71f4">gatewaydomain</a> = g_strdup(s);</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160;</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; s = gtk_entry_get_text(mpcp-&gt;<a class="code" href="structmpchanger__params.html#ab46251204997d3d363681557f99e66ce">eGatewayUsername</a>);</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; g_free(mpcp-&gt;<a class="code" href="structmpchanger__params.html#a8e6ebba297a1eaf81a21e0b6d0483659">gatewayusername</a>);</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; mpcp-&gt;<a class="code" href="structmpchanger__params.html#a8e6ebba297a1eaf81a21e0b6d0483659">gatewayusername</a> = g_strdup(s);</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160;</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; <span class="keywordflow">if</span> (mpcp-&gt;<a class="code" href="structmpchanger__params.html#a3f0a338901d8e6195eb872b0f2098e73">store</a> != NULL) {</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; gtk_tree_view_set_model(mpcp-&gt;<a class="code" href="structmpchanger__params.html#a87576a4dfe04c11686cf574669331bb2">table</a>, NULL);</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; }</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; mpcp-&gt;<a class="code" href="structmpchanger__params.html#a3f0a338901d8e6195eb872b0f2098e73">store</a> = gtk_list_store_new(<a class="code" href="remmina__mpchange_8c.html#a5d76b81b0ad4c19007a781d4edb8181fa8843686a2923021b5ded06faeaaf66f1">NUM_COLS</a>, G_TYPE_BOOLEAN, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING);</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160;</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; <span class="keywordflow">if</span> (mpcp-&gt;<a class="code" href="structmpchanger__params.html#a098952d194a183d4a505aa065797864b">group</a>[0] != 0 || mpcp-&gt;<a class="code" href="structmpchanger__params.html#a90af95c96a92c2aff1c2ab4be2e40f5c">domain</a>[0] != 0 || mpcp-&gt;<a class="code" href="structmpchanger__params.html#a634dd9d08486b2a435fba15119db6742">username</a>[0] != 0 || mpcp-&gt;<a class="code" href="structmpchanger__params.html#a8e6ebba297a1eaf81a21e0b6d0483659">gatewayusername</a>[0] != 0 || mpcp-&gt;<a class="code" href="structmpchanger__params.html#a00a888f26c1609e064367bb5095c71f4">gatewaydomain</a>[0] != 0)</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; <a class="code" href="remmina__file__manager_8c.html#a55a717aafc046713380bd2c55f29165a">remmina_file_manager_iterate</a>((GFunc)<a class="code" href="remmina__mpchange_8c.html#a26ac0b33bd0b5ea718e16d04923b5ccd">remmina_mpchange_file_list_callback</a>, (gpointer)mpcp);</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160;</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; gtk_tree_view_set_model(mpcp-&gt;table, GTK_TREE_MODEL(mpcp-&gt;store));</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160;</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; <span class="keywordflow">return</span> G_SOURCE_CONTINUE; <span class="comment">// Source already remove at the beginning</span></div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160;</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160;}</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160;</div><div class="line"><a name="l00341"></a><span class="lineno"><a class="line" href="remmina__mpchange_8c.html#ad063ddefc518c67ed98f4b4bdf87fa8f"> 341</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__mpchange_8c.html#ad063ddefc518c67ed98f4b4bdf87fa8f">remmina_mpchange_searchfield_changed</a>(GtkSearchEntry *se, gpointer user_data)</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160;{</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; <span class="keyword">struct </span><a class="code" href="structmpchanger__params.html">mpchanger_params</a> *mpcp = (<span class="keyword">struct </span><a class="code" href="structmpchanger__params.html">mpchanger_params</a> *)user_data;</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160;</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; <span class="keywordflow">if</span> (mpcp-&gt;<a class="code" href="structmpchanger__params.html#ac8fdacd94418731904020ff679475918">searchentrychange_timeout_source_id</a>) {</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; g_source_remove(mpcp-&gt;<a class="code" href="structmpchanger__params.html#ac8fdacd94418731904020ff679475918">searchentrychange_timeout_source_id</a>);</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; mpcp-&gt;<a class="code" href="structmpchanger__params.html#ac8fdacd94418731904020ff679475918">searchentrychange_timeout_source_id</a> = 0;</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; }</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160;</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; mpcp-&gt;<a class="code" href="structmpchanger__params.html#ac8fdacd94418731904020ff679475918">searchentrychange_timeout_source_id</a> = g_timeout_add(500, <a class="code" href="remmina__mpchange_8c.html#a4bf7e99626c40534641916848253f60f">remmina_mpchange_searchfield_changed_to</a>, user_data);</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160;}</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160;</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160;</div><div class="line"><a name="l00355"></a><span class="lineno"><a class="line" href="remmina__mpchange_8c.html#a1e4f5a537a13face058177dc97e88c8a"> 355</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__mpchange_8c.html#a1e4f5a537a13face058177dc97e88c8a">remmina_mpchange_stopsearch</a>(GtkSearchEntry *entry, gpointer user_data)</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160;{</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; <span class="comment">/* The stop-search signal is emitted when pressing Esc on a GtkSearchEntry. We end the dialog. */</span></div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; <span class="keyword">struct </span><a class="code" href="structmpchanger__params.html">mpchanger_params</a> *mpcp = (<span class="keyword">struct </span><a class="code" href="structmpchanger__params.html">mpchanger_params</a> *)user_data;</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; gtk_dialog_response(mpcp-&gt;<a class="code" href="structmpchanger__params.html#adf52357ac6f70f8bead49111deff9568">dialog</a>, 1);</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160;}</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160;</div><div class="line"><a name="l00363"></a><span class="lineno"><a class="line" href="remmina__mpchange_8c.html#a525273e9a7f849c9d072467d216762b2"> 363</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="remmina__mpchange_8c.html#a525273e9a7f849c9d072467d216762b2">remmina_file_multipasswd_changer_mt</a>(gpointer d)</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160;{</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; <span class="keyword">struct </span><a class="code" href="structmpchanger__params.html">mpchanger_params</a> *mpcp = d;</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; GtkBuilder* bu;</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; GtkDialog* <a class="code" href="structmpchanger__params.html#adf52357ac6f70f8bead49111deff9568">dialog</a>;</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; GtkWindow* mainwindow;</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; GtkCellRendererToggle *toggle;</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; <a class="code" href="struct___remmina_secret_plugin.html">RemminaSecretPlugin</a> *secret_plugin;</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; <span class="keywordtype">char</span> *initerror;</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160;</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; mainwindow = <a class="code" href="remmina__main_8c.html#a7740488de65c0e642895cc9dfba07b6e">remmina_main_get_window</a>();</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160;</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; <span class="comment">/* The multiple password changer works only when a secrecy plugin is available */</span></div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; initerror = NULL;</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; secret_plugin = <a class="code" href="remmina__plugin__manager_8c.html#ad380a98f6624aa8c830015c8b428b7b4">remmina_plugin_manager_get_secret_plugin</a>();</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; <span class="keywordflow">if</span> (secret_plugin == NULL) {</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; initerror = _(<span class="stringliteral">&quot;The multi password changer requires a secrecy plugin.\n&quot;</span>);</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; }<span class="keywordflow">else</span> {</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; <span class="keywordflow">if</span> (!secret_plugin-&gt;<a class="code" href="struct___remmina_secret_plugin.html#a2123e14795b104f5fe8d77a4b7847261">is_service_available</a>(secret_plugin)) {</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; initerror = _(<span class="stringliteral">&quot;The multi password changer requires a secrecy service.\n&quot;</span>);</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; }</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; }</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; <span class="keywordflow">if</span> (initerror) {</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; GtkWidget *msgDialog;</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; msgDialog = gtk_message_dialog_new(mainwindow, GTK_DIALOG_MODAL, GTK_MESSAGE_WARNING, GTK_BUTTONS_OK,</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; <span class="stringliteral">&quot;%s&quot;</span>, initerror);</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; gtk_dialog_run(GTK_DIALOG(msgDialog));</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; gtk_widget_destroy(msgDialog);</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; }</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160;</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160;</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; bu = <a class="code" href="remmina__public_8c.html#a4573e086e1ff8507eb9447b25bf11b92">remmina_public_gtk_builder_new_from_resource</a>(<span class="stringliteral">&quot;/org/remmina/Remmina/src/../data/ui/remmina_mpc.glade&quot;</span>);</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; <span class="keywordflow">if</span> (!bu) {</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Unable to load the multiple password changer Glade file interface\n&quot;</span>);</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; }</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160;</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; dialog = GTK_DIALOG(gtk_builder_get_object(bu, <span class="stringliteral">&quot;MPCDialog&quot;</span>));</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; mpcp-&gt;<a class="code" href="structmpchanger__params.html#adf52357ac6f70f8bead49111deff9568">dialog</a> = <a class="code" href="structmpchanger__params.html#adf52357ac6f70f8bead49111deff9568">dialog</a>;</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; <span class="keywordflow">if</span> (mainwindow)</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; gtk_window_set_transient_for(GTK_WINDOW(dialog), mainwindow);</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160;</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160;</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; mpcp-&gt;<a class="code" href="structmpchanger__params.html#ab39b307ec320e66e34dd5b6a8c56d348">eGroup</a> = GTK_ENTRY(GET_DIALOG_OBJECT(<span class="stringliteral">&quot;groupEntry&quot;</span>));</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; gtk_entry_set_text(mpcp-&gt;<a class="code" href="structmpchanger__params.html#ab39b307ec320e66e34dd5b6a8c56d348">eGroup</a>, mpcp-&gt;<a class="code" href="structmpchanger__params.html#a098952d194a183d4a505aa065797864b">group</a>);</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; g_signal_connect(G_OBJECT(mpcp-&gt;<a class="code" href="structmpchanger__params.html#ab39b307ec320e66e34dd5b6a8c56d348">eGroup</a>), <span class="stringliteral">&quot;changed&quot;</span>, G_CALLBACK(<a class="code" href="remmina__mpchange_8c.html#ad063ddefc518c67ed98f4b4bdf87fa8f">remmina_mpchange_searchfield_changed</a>), (gpointer)mpcp);</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; g_signal_connect(G_OBJECT(mpcp-&gt;eGroup), <span class="stringliteral">&quot;stop-search&quot;</span>, G_CALLBACK(<a class="code" href="remmina__mpchange_8c.html#a1e4f5a537a13face058177dc97e88c8a">remmina_mpchange_stopsearch</a>), (gpointer)mpcp);</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160;</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; mpcp-&gt;eUsername = GTK_ENTRY(GET_DIALOG_OBJECT(<span class="stringliteral">&quot;usernameEntry&quot;</span>));</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; gtk_entry_set_text(mpcp-&gt;eUsername, mpcp-&gt;username);</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; g_signal_connect(G_OBJECT(mpcp-&gt;eUsername), <span class="stringliteral">&quot;changed&quot;</span>, G_CALLBACK(<a class="code" href="remmina__mpchange_8c.html#ad063ddefc518c67ed98f4b4bdf87fa8f">remmina_mpchange_searchfield_changed</a>), (gpointer)mpcp);</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160;</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; mpcp-&gt;eGatewayUsername = GTK_ENTRY(GET_DIALOG_OBJECT(<span class="stringliteral">&quot;gatewayUsernameEntry&quot;</span>));</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; gtk_entry_set_text(mpcp-&gt;eGatewayUsername, mpcp-&gt;gatewayusername);</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; g_signal_connect(G_OBJECT(mpcp-&gt;eGatewayUsername), <span class="stringliteral">&quot;changed&quot;</span>, G_CALLBACK(<a class="code" href="remmina__mpchange_8c.html#ad063ddefc518c67ed98f4b4bdf87fa8f">remmina_mpchange_searchfield_changed</a>), (gpointer)mpcp);</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160;</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; mpcp-&gt;eDomain = GTK_ENTRY(GET_DIALOG_OBJECT(<span class="stringliteral">&quot;domainEntry&quot;</span>));</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; gtk_entry_set_text(mpcp-&gt;eDomain, mpcp-&gt;domain);</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; g_signal_connect(G_OBJECT(mpcp-&gt;eDomain), <span class="stringliteral">&quot;changed&quot;</span>, G_CALLBACK(<a class="code" href="remmina__mpchange_8c.html#ad063ddefc518c67ed98f4b4bdf87fa8f">remmina_mpchange_searchfield_changed</a>), (gpointer)mpcp);</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160;</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; mpcp-&gt;eGatewayDomain = GTK_ENTRY(GET_DIALOG_OBJECT(<span class="stringliteral">&quot;gatewayDomainEntry&quot;</span>));</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; gtk_entry_set_text(mpcp-&gt;eGatewayDomain, mpcp-&gt;gatewaydomain);</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; g_signal_connect(G_OBJECT(mpcp-&gt;eGatewayDomain), <span class="stringliteral">&quot;changed&quot;</span>, G_CALLBACK(<a class="code" href="remmina__mpchange_8c.html#ad063ddefc518c67ed98f4b4bdf87fa8f">remmina_mpchange_searchfield_changed</a>), (gpointer)mpcp);</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160;</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; mpcp-&gt;ePassword1 = GTK_ENTRY(GET_DIALOG_OBJECT(<span class="stringliteral">&quot;password1Entry&quot;</span>));</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; gtk_entry_set_text(mpcp-&gt;ePassword1, mpcp-&gt;password);</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160;</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; mpcp-&gt;eGatewayPassword1 = GTK_ENTRY(GET_DIALOG_OBJECT(<span class="stringliteral">&quot;gatewayPassword1Entry&quot;</span>));</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; gtk_entry_set_text(mpcp-&gt;eGatewayPassword1, mpcp-&gt;gatewaypassword);</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160;</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; mpcp-&gt;ePassword2 = GTK_ENTRY(GET_DIALOG_OBJECT(<span class="stringliteral">&quot;password2Entry&quot;</span>));</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; gtk_entry_set_text(mpcp-&gt;ePassword2, mpcp-&gt;password);</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160;</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; mpcp-&gt;eGatewayPassword2 = GTK_ENTRY(GET_DIALOG_OBJECT(<span class="stringliteral">&quot;gatewayPassword2Entry&quot;</span>));</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; gtk_entry_set_text(mpcp-&gt;eGatewayPassword2, mpcp-&gt;gatewaypassword);</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160;</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; mpcp-&gt;statusLabel = GTK_LABEL(GET_DIALOG_OBJECT(<span class="stringliteral">&quot;statusLabel&quot;</span>));</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; </div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160;</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160;</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160;</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; mpcp-&gt;store = NULL;</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160;</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; mpcp-&gt;table = GTK_TREE_VIEW(GET_DIALOG_OBJECT(<span class="stringliteral">&quot;profchangelist&quot;</span>));</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160;</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; <span class="comment">/* Fire a fake searchfield changed, so a new list store is created */</span></div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; <a class="code" href="remmina__mpchange_8c.html#ad063ddefc518c67ed98f4b4bdf87fa8f">remmina_mpchange_searchfield_changed</a>(NULL, (gpointer)mpcp);</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160;</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; toggle = GTK_CELL_RENDERER_TOGGLE(GET_DIALOG_OBJECT(<span class="stringliteral">&quot;cellrenderertoggle1&quot;</span>));</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; g_signal_connect(G_OBJECT(toggle), <span class="stringliteral">&quot;toggled&quot;</span>, G_CALLBACK(<a class="code" href="remmina__mpchange_8c.html#aa872ba9de3be7ccd116881cee84c8b85">remmina_mpchange_checkbox_toggle</a>), (gpointer)mpcp);</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160;</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; mpcp-&gt;btnDoChange = GTK_BUTTON(GET_DIALOG_OBJECT(<span class="stringliteral">&quot;btnDoChange&quot;</span>));</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; g_signal_connect(mpcp-&gt;btnDoChange, <span class="stringliteral">&quot;clicked&quot;</span>, G_CALLBACK(<a class="code" href="remmina__mpchange_8c.html#a07d130893c0487bb873f2b6986e15a1b">remmina_mpchange_dochange_clicked</a>), (gpointer)mpcp);</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160;</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; gtk_dialog_run(dialog);</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; gtk_widget_destroy(GTK_WIDGET(dialog));</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160;</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; <span class="keywordflow">if</span> (mpcp-&gt;sid) {</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; g_source_remove(mpcp-&gt;sid);</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; mpcp-&gt;sid = 0;</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; }</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160;</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; <span class="keywordflow">if</span> (mpcp-&gt;searchentrychange_timeout_source_id) {</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; g_source_remove(mpcp-&gt;searchentrychange_timeout_source_id);</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; mpcp-&gt;searchentrychange_timeout_source_id = 0;</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; }</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160;</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; <span class="keywordflow">if</span> (mpcp-&gt;changed_passwords_count) {</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; GtkWidget *msgDialog;</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; msgDialog = gtk_message_dialog_new(GTK_WINDOW(mpcp-&gt;dialog),</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; GTK_DIALOG_DESTROY_WITH_PARENT,</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; GTK_MESSAGE_INFO,</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; GTK_BUTTONS_OK,</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; ngettext(<span class="stringliteral">&quot;%d password changed.&quot;</span>, <span class="stringliteral">&quot;%d passwords changed.&quot;</span>, mpcp-&gt;changed_passwords_count), mpcp-&gt;changed_passwords_count);</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; gtk_dialog_run(GTK_DIALOG(msgDialog));</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; gtk_widget_destroy(msgDialog);</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; }</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160;</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; <span class="comment">// Free data</span></div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; g_free(mpcp-&gt;username);</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; g_free(mpcp-&gt;password);</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; g_free(mpcp-&gt;domain);</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; g_free(mpcp-&gt;group);</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; g_free(mpcp-&gt;gatewayusername);</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; g_free(mpcp-&gt;gatewaypassword);</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; g_free(mpcp-&gt;gatewaydomain);</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; g_free(mpcp);</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160;}</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160;</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160;</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160;<span class="keywordtype">void</span></div><div class="line"><a name="l00497"></a><span class="lineno"><a class="line" href="remmina__mpchange_8h.html#ae4647d0f64efaaf6710d3e1b081c2d14"> 497</a></span>&#160;<a class="code" href="remmina__mpchange_8c.html#aa5a382490ca5e92bc4b124f66d83c4ff">remmina_mpchange_schedule</a>(gboolean has_domain, <span class="keyword">const</span> gchar *<a class="code" href="structmpchanger__params.html#a098952d194a183d4a505aa065797864b">group</a>, <span class="keyword">const</span> gchar *<a class="code" href="structmpchanger__params.html#a90af95c96a92c2aff1c2ab4be2e40f5c">domain</a>, <span class="keyword">const</span> gchar *<a class="code" href="structmpchanger__params.html#a634dd9d08486b2a435fba15119db6742">username</a>, <span class="keyword">const</span> gchar *<a class="code" href="structmpchanger__params.html#a41f51745fc0e63d75d15fc80aaa4a29e">password</a>, <span class="keyword">const</span> gchar *<a class="code" href="structmpchanger__params.html#a8e6ebba297a1eaf81a21e0b6d0483659">gatewayusername</a>, <span class="keyword">const</span> gchar *<a class="code" href="structmpchanger__params.html#a00a888f26c1609e064367bb5095c71f4">gatewaydomain</a>, <span class="keyword">const</span> gchar *<a class="code" href="structmpchanger__params.html#a59187ffb045f62b334ff972331f960b6">gatewaypassword</a>)</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160;{</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; <span class="comment">// We could also be called in a subthread after a successful connection</span></div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; <span class="comment">// (not currently implemented)</span></div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; <span class="comment">// So we just schedule the multipassword changer to be executed on</span></div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; <span class="comment">// the main thread</span></div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160;</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; <span class="keyword">struct </span><a class="code" href="structmpchanger__params.html">mpchanger_params</a> *mpcp;</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160;</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; mpcp = g_malloc0(<span class="keyword">sizeof</span>(<span class="keyword">struct</span> <a class="code" href="structmpchanger__params.html">mpchanger_params</a>));</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; mpcp-&gt;<a class="code" href="structmpchanger__params.html#a634dd9d08486b2a435fba15119db6742">username</a> = g_strdup(username);</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; mpcp-&gt;<a class="code" href="structmpchanger__params.html#a41f51745fc0e63d75d15fc80aaa4a29e">password</a> = g_strdup(password);</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; mpcp-&gt;<a class="code" href="structmpchanger__params.html#a90af95c96a92c2aff1c2ab4be2e40f5c">domain</a> = g_strdup(domain);</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; mpcp-&gt;<a class="code" href="structmpchanger__params.html#a098952d194a183d4a505aa065797864b">group</a> = g_strdup(group);</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; mpcp-&gt;<a class="code" href="structmpchanger__params.html#a8e6ebba297a1eaf81a21e0b6d0483659">gatewayusername</a> = g_strdup(gatewayusername);</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; mpcp-&gt;<a class="code" href="structmpchanger__params.html#a59187ffb045f62b334ff972331f960b6">gatewaypassword</a> = g_strdup(gatewaypassword);</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; mpcp-&gt;<a class="code" href="structmpchanger__params.html#a00a888f26c1609e064367bb5095c71f4">gatewaydomain</a> = g_strdup(gatewaydomain);</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; gdk_threads_add_idle(<a class="code" href="remmina__mpchange_8c.html#a525273e9a7f849c9d072467d216762b2">remmina_file_multipasswd_changer_mt</a>, (gpointer)mpcp);</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160;</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160;}</div><div class="ttc" id="structmpchanger__params_html_aaccae78b49c585d0a4d34776152ae5a2"><div class="ttname"><a href="structmpchanger__params.html#aaccae78b49c585d0a4d34776152ae5a2">mpchanger_params::btnDoChange</a></div><div class="ttdeci">GtkButton * btnDoChange</div><div class="ttdef"><b>Definition:</b> <a href="remmina__mpchange_8c_source.html#l00066">remmina_mpchange.c:66</a></div></div>
-<div class="ttc" id="remmina__file_8c_html_ac1cc2d7f827f7d64c7fd3edf10e9383e"><div class="ttname"><a href="remmina__file_8c.html#ac1cc2d7f827f7d64c7fd3edf10e9383e">remmina_file_load</a></div><div class="ttdeci">RemminaFile * remmina_file_load(const gchar *filename)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00346">remmina_file.c:346</a></div></div>
-<div class="ttc" id="remmina__file_8c_html_abd2f06bf0a5ddcf7156e5ef7d0c8d4d7"><div class="ttname"><a href="remmina__file_8c.html#abd2f06bf0a5ddcf7156e5ef7d0c8d4d7">remmina_file_free</a></div><div class="ttdeci">void remmina_file_free(RemminaFile *remminafile)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00700">remmina_file.c:700</a></div></div>
+<div class="ttc" id="remmina__file_8c_html_ac1cc2d7f827f7d64c7fd3edf10e9383e"><div class="ttname"><a href="remmina__file_8c.html#ac1cc2d7f827f7d64c7fd3edf10e9383e">remmina_file_load</a></div><div class="ttdeci">RemminaFile * remmina_file_load(const gchar *filename)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00350">remmina_file.c:350</a></div></div>
+<div class="ttc" id="remmina__file_8c_html_abd2f06bf0a5ddcf7156e5ef7d0c8d4d7"><div class="ttname"><a href="remmina__file_8c.html#abd2f06bf0a5ddcf7156e5ef7d0c8d4d7">remmina_file_free</a></div><div class="ttdeci">void remmina_file_free(RemminaFile *remminafile)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00709">remmina_file.c:709</a></div></div>
<div class="ttc" id="remmina__plugin__manager_8h_html"><div class="ttname"><a href="remmina__plugin__manager_8h.html">remmina_plugin_manager.h</a></div></div>
-<div class="ttc" id="remmina__file_8c_html_a8eb1b213d9d08c6ad13683ce05f4355e"><div class="ttname"><a href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a></div><div class="ttdeci">const gchar * remmina_file_get_string(RemminaFile *remminafile, const gchar *setting)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00507">remmina_file.c:507</a></div></div>
+<div class="ttc" id="remmina__file_8c_html_a8eb1b213d9d08c6ad13683ce05f4355e"><div class="ttname"><a href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a></div><div class="ttdeci">const gchar * remmina_file_get_string(RemminaFile *remminafile, const gchar *setting)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00516">remmina_file.c:516</a></div></div>
<div class="ttc" id="structmpchanger__params_html_ac8fdacd94418731904020ff679475918"><div class="ttname"><a href="structmpchanger__params.html#ac8fdacd94418731904020ff679475918">mpchanger_params::searchentrychange_timeout_source_id</a></div><div class="ttdeci">guint searchentrychange_timeout_source_id</div><div class="ttdef"><b>Definition:</b> <a href="remmina__mpchange_8c_source.html#l00072">remmina_mpchange.c:72</a></div></div>
<div class="ttc" id="remmina__mpchange_8c_html_a1e4f5a537a13face058177dc97e88c8a"><div class="ttname"><a href="remmina__mpchange_8c.html#a1e4f5a537a13face058177dc97e88c8a">remmina_mpchange_stopsearch</a></div><div class="ttdeci">static void remmina_mpchange_stopsearch(GtkSearchEntry *entry, gpointer user_data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__mpchange_8c_source.html#l00355">remmina_mpchange.c:355</a></div></div>
<div class="ttc" id="remmina__main_8c_html_a7740488de65c0e642895cc9dfba07b6e"><div class="ttname"><a href="remmina__main_8c.html#a7740488de65c0e642895cc9dfba07b6e">remmina_main_get_window</a></div><div class="ttdeci">GtkWindow * remmina_main_get_window()</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01645">remmina_main.c:1645</a></div></div>
@@ -132,7 +132,7 @@ $(document).ready(function(){initNavTree('remmina__mpchange_8c_source.html','');
<div class="ttc" id="structmpchanger__params_html_a098952d194a183d4a505aa065797864b"><div class="ttname"><a href="structmpchanger__params.html#a098952d194a183d4a505aa065797864b">mpchanger_params::group</a></div><div class="ttdeci">gchar * group</div><div class="ttdef"><b>Definition:</b> <a href="remmina__mpchange_8c_source.html#l00056">remmina_mpchange.c:56</a></div></div>
<div class="ttc" id="remmina__mpchange_8c_html_a5d76b81b0ad4c19007a781d4edb8181faa19a4779198791797a93684c6db7733a"><div class="ttname"><a href="remmina__mpchange_8c.html#a5d76b81b0ad4c19007a781d4edb8181faa19a4779198791797a93684c6db7733a">COL_F</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__mpchange_8c_source.html#l00076">remmina_mpchange.c:76</a></div></div>
<div class="ttc" id="structmpchanger__params_html_a00a888f26c1609e064367bb5095c71f4"><div class="ttname"><a href="structmpchanger__params.html#a00a888f26c1609e064367bb5095c71f4">mpchanger_params::gatewaydomain</a></div><div class="ttdeci">gchar * gatewaydomain</div><div class="ttdef"><b>Definition:</b> <a href="remmina__mpchange_8c_source.html#l00058">remmina_mpchange.c:58</a></div></div>
-<div class="ttc" id="remmina__file_8c_html_a3be28ff7f5a9b44dc47f92b883a85ac5"><div class="ttname"><a href="remmina__file_8c.html#a3be28ff7f5a9b44dc47f92b883a85ac5">remmina_file_store_secret_plugin_password</a></div><div class="ttdeci">void remmina_file_store_secret_plugin_password(RemminaFile *remminafile, const gchar *key, const gchar *value)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00835">remmina_file.c:835</a></div></div>
+<div class="ttc" id="remmina__file_8c_html_a3be28ff7f5a9b44dc47f92b883a85ac5"><div class="ttname"><a href="remmina__file_8c.html#a3be28ff7f5a9b44dc47f92b883a85ac5">remmina_file_store_secret_plugin_password</a></div><div class="ttdeci">void remmina_file_store_secret_plugin_password(RemminaFile *remminafile, const gchar *key, const gchar *value)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00844">remmina_file.c:844</a></div></div>
<div class="ttc" id="structmpchanger__params_html_a3f0a338901d8e6195eb872b0f2098e73"><div class="ttname"><a href="structmpchanger__params.html#a3f0a338901d8e6195eb872b0f2098e73">mpchanger_params::store</a></div><div class="ttdeci">GtkListStore * store</div><div class="ttdef"><b>Definition:</b> <a href="remmina__mpchange_8c_source.html#l00063">remmina_mpchange.c:63</a></div></div>
<div class="ttc" id="remmina__pref_8h_html"><div class="ttname"><a href="remmina__pref_8h.html">remmina_pref.h</a></div></div>
<div class="ttc" id="remmina__mpchange_8c_html_a07d130893c0487bb873f2b6986e15a1b"><div class="ttname"><a href="remmina__mpchange_8c.html#a07d130893c0487bb873f2b6986e15a1b">remmina_mpchange_dochange_clicked</a></div><div class="ttdeci">static void remmina_mpchange_dochange_clicked(GtkButton *btn, gpointer user_data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__mpchange_8c_source.html#l00239">remmina_mpchange.c:239</a></div></div>
diff --git a/public/remmina__plugin__manager_8c_source.html b/public/remmina__plugin__manager_8c_source.html
index bc1a0c380..f8b9a270b 100644
--- a/public/remmina__plugin__manager_8c_source.html
+++ b/public/remmina__plugin__manager_8c_source.html
@@ -96,7 +96,7 @@ $(document).ready(function(){initNavTree('remmina__plugin__manager_8c_source.htm
<div class="ttc" id="remmina__plugin__manager_8c_html_aef243c58b9e8c778232d5acb32c7729b"><div class="ttname"><a href="remmina__plugin__manager_8c.html#aef243c58b9e8c778232d5acb32c7729b">remmina_plugin_manager_is_encrypted_setting</a></div><div class="ttdeci">gboolean remmina_plugin_manager_is_encrypted_setting(RemminaProtocolPlugin *pp, const char *setting)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__plugin__manager_8c_source.html#l00629">remmina_plugin_manager.c:629</a></div></div>
<div class="ttc" id="remmina__pref_8c_html_a37cd589f00c94cb28eabb1bce4646d0b"><div class="ttname"><a href="remmina__pref_8c.html#a37cd589f00c94cb28eabb1bce4646d0b">remmina_pref_get_scale_quality</a></div><div class="ttdeci">gint remmina_pref_get_scale_quality(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l01090">remmina_pref.c:1090</a></div></div>
<div class="ttc" id="remmina__plugin__manager_8h_html"><div class="ttname"><a href="remmina__plugin__manager_8h.html">remmina_plugin_manager.h</a></div></div>
-<div class="ttc" id="remmina__file_8c_html_a8eb1b213d9d08c6ad13683ce05f4355e"><div class="ttname"><a href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a></div><div class="ttdeci">const gchar * remmina_file_get_string(RemminaFile *remminafile, const gchar *setting)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00507">remmina_file.c:507</a></div></div>
+<div class="ttc" id="remmina__file_8c_html_a8eb1b213d9d08c6ad13683ce05f4355e"><div class="ttname"><a href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a></div><div class="ttdeci">const gchar * remmina_file_get_string(RemminaFile *remminafile, const gchar *setting)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00516">remmina_file.c:516</a></div></div>
<div class="ttc" id="remmina__protocol__widget_8c_html_a8ef0523afadadc9984d53fb02ecc01ad"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a8ef0523afadadc9984d53fb02ecc01ad">remmina_protocol_widget_panel_hide</a></div><div class="ttdeci">void remmina_protocol_widget_panel_hide(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01995">remmina_protocol_widget.c:1995</a></div></div>
<div class="ttc" id="remmina__plugin__manager_8c_html_a7e75f54171749cfec5c0cbbb1095ed86"><div class="ttname"><a href="remmina__plugin__manager_8c.html#a7e75f54171749cfec5c0cbbb1095ed86">htdestroy</a></div><div class="ttdeci">static void htdestroy(gpointer ht)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__plugin__manager_8c_source.html#l00080">remmina_plugin_manager.c:80</a></div></div>
<div class="ttc" id="remmina__protocol__widget_8c_html_a9d55210413d6a313478f81cf76ecf1b7"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a9d55210413d6a313478f81cf76ecf1b7">remmina_protocol_widget_start_direct_tunnel</a></div><div class="ttdeci">gchar * remmina_protocol_widget_start_direct_tunnel(RemminaProtocolWidget *gp, gint default_port, gboolean port_plus)</div><div class="ttdoc">Start an SSH tunnel if possible and return the host:port string. </div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01057">remmina_protocol_widget.c:1057</a></div></div>
@@ -113,7 +113,7 @@ $(document).ready(function(){initNavTree('remmina__plugin__manager_8c_source.htm
<div class="ttc" id="plugin_8h_html_aaf53c620d115a4642130227cff4a624aa93a45ba624f83d17a6d8619933a54b3e"><div class="ttname"><a href="plugin_8h.html#aaf53c620d115a4642130227cff4a624aa93a45ba624f83d17a6d8619933a54b3e">REMMINA_PLUGIN_TYPE_LANGUAGE_WRAPPER</a></div><div class="ttdef"><b>Definition:</b> <a href="plugin_8h_source.html#l00053">plugin.h:53</a></div></div>
<div class="ttc" id="struct___remmina_file_plugin_html"><div class="ttname"><a href="struct___remmina_file_plugin.html">_RemminaFilePlugin</a></div><div class="ttdef"><b>Definition:</b> <a href="plugin_8h_source.html#l00100">plugin.h:100</a></div></div>
<div class="ttc" id="remmina__protocol__widget_8c_html_ab863cc1442a992adfa323bc77ab88504"><div class="ttname"><a href="remmina__protocol__widget_8c.html#ab863cc1442a992adfa323bc77ab88504">remmina_protocol_widget_save_cred</a></div><div class="ttdeci">void remmina_protocol_widget_save_cred(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01885">remmina_protocol_widget.c:1885</a></div></div>
-<div class="ttc" id="remmina__file_8c_html_ad1e4f3a0f64cd98e301044b6c38a1f1d"><div class="ttname"><a href="remmina__file_8c.html#ad1e4f3a0f64cd98e301044b6c38a1f1d">remmina_file_get_filename</a></div><div class="ttdeci">const gchar * remmina_file_get_filename(RemminaFile *remminafile)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00206">remmina_file.c:206</a></div></div>
+<div class="ttc" id="remmina__file_8c_html_ad1e4f3a0f64cd98e301044b6c38a1f1d"><div class="ttname"><a href="remmina__file_8c.html#ad1e4f3a0f64cd98e301044b6c38a1f1d">remmina_file_get_filename</a></div><div class="ttdeci">const gchar * remmina_file_get_filename(RemminaFile *remminafile)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00210">remmina_file.c:210</a></div></div>
<div class="ttc" id="remmina__plugin__manager_8c_html_ac90d2ffe3909722ca3daedac28da76e5"><div class="ttname"><a href="remmina__plugin__manager_8c.html#ac90d2ffe3909722ca3daedac28da76e5">compare_secret_plugin_init_order</a></div><div class="ttdeci">static gint compare_secret_plugin_init_order(gconstpointer a, gconstpointer b)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__plugin__manager_8c_source.html#l00317">remmina_plugin_manager.c:317</a></div></div>
<div class="ttc" id="remmina__protocol__widget_8c_html_a9ed3110b7b030bccd0ff9ed70e86da2d"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a9ed3110b7b030bccd0ff9ed70e86da2d">remmina_protocol_widget_get_savepassword</a></div><div class="ttdeci">gboolean remmina_protocol_widget_get_savepassword(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01843">remmina_protocol_widget.c:1843</a></div></div>
<div class="ttc" id="remmina__protocol__widget_8c_html_a2067c19b160eb43bddda6c6c6e8d6045"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a2067c19b160eb43bddda6c6c6e8d6045">remmina_protocol_widget_gtkviewport</a></div><div class="ttdeci">GtkWidget * remmina_protocol_widget_gtkviewport(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l02082">remmina_protocol_widget.c:2082</a></div></div>
@@ -133,7 +133,7 @@ $(document).ready(function(){initNavTree('remmina__plugin__manager_8c_source.htm
<div class="ttc" id="types_8h_html_aee1a3e130e6991978acd907b52204350ae76d06b6e313971e5f420dd6e7f4c5aa"><div class="ttname"><a href="types_8h.html#aee1a3e130e6991978acd907b52204350ae76d06b6e313971e5f420dd6e7f4c5aa">REMMINA_PROTOCOL_SETTING_TYPE_PASSWORD</a></div><div class="ttdef"><b>Definition:</b> <a href="types_8h_source.html#l00101">types.h:101</a></div></div>
<div class="ttc" id="remmina__widget__pool_8h_html"><div class="ttname"><a href="remmina__widget__pool_8h.html">remmina_widget_pool.h</a></div></div>
<div class="ttc" id="struct___remmina_secret_plugin_html_a0155c6684591e0dd843c7145792fef09"><div class="ttname"><a href="struct___remmina_secret_plugin.html#a0155c6684591e0dd843c7145792fef09">_RemminaSecretPlugin::init_order</a></div><div class="ttdeci">int init_order</div><div class="ttdef"><b>Definition:</b> <a href="plugin_8h_source.html#l00141">plugin.h:141</a></div></div>
-<div class="ttc" id="remmina__file_8c_html_ad514c2523ff0c919ddf535e3dbad9f3a"><div class="ttname"><a href="remmina__file_8c.html#ad514c2523ff0c919ddf535e3dbad9f3a">remmina_file_get_secret</a></div><div class="ttdeci">gchar * remmina_file_get_secret(RemminaFile *remminafile, const gchar *setting)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00542">remmina_file.c:542</a></div></div>
+<div class="ttc" id="remmina__file_8c_html_ad514c2523ff0c919ddf535e3dbad9f3a"><div class="ttname"><a href="remmina__file_8c.html#ad514c2523ff0c919ddf535e3dbad9f3a">remmina_file_get_secret</a></div><div class="ttdeci">gchar * remmina_file_get_secret(RemminaFile *remminafile, const gchar *setting)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00551">remmina_file.c:551</a></div></div>
<div class="ttc" id="remmina__pref_8c_html_a12e52ee4ab89912280605e36ee069267"><div class="ttname"><a href="remmina__pref_8c.html#a12e52ee4ab89912280605e36ee069267">remmina_pref_get_ssh_loglevel</a></div><div class="ttdeci">gint remmina_pref_get_ssh_loglevel(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l01099">remmina_pref.c:1099</a></div></div>
<div class="ttc" id="plugin_8h_html_aaf53c620d115a4642130227cff4a624aa45e094c248384c12cdafd9d088e4aa24"><div class="ttname"><a href="plugin_8h.html#aaf53c620d115a4642130227cff4a624aa45e094c248384c12cdafd9d088e4aa24">REMMINA_PLUGIN_TYPE_PROTOCOL</a></div><div class="ttdef"><b>Definition:</b> <a href="plugin_8h_source.html#l00047">plugin.h:47</a></div></div>
<div class="ttc" id="struct___remmina_protocol_plugin_html_afa1a3a21c504b386cecfb42d1c9e6bff"><div class="ttname"><a href="struct___remmina_protocol_plugin.html#afa1a3a21c504b386cecfb42d1c9e6bff">_RemminaProtocolPlugin::features</a></div><div class="ttdeci">const RemminaProtocolFeature * features</div><div class="ttdef"><b>Definition:</b> <a href="plugin_8h_source.html#l00077">plugin.h:77</a></div></div>
@@ -182,7 +182,7 @@ $(document).ready(function(){initNavTree('remmina__plugin__manager_8c_source.htm
<div class="ttc" id="remmina__protocol__widget_8c_html_acf75fd4bac28a3d53da064b2905f23c1"><div class="ttname"><a href="remmina__protocol__widget_8c.html#acf75fd4bac28a3d53da064b2905f23c1">remmina_protocol_widget_panel_changed_certificate</a></div><div class="ttdeci">gint remmina_protocol_widget_panel_changed_certificate(RemminaProtocolWidget *gp, const gchar *subject, const gchar *issuer, const gchar *new_fingerprint, const gchar *old_fingerprint)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01791">remmina_protocol_widget.c:1791</a></div></div>
<div class="ttc" id="remmina__plugin__manager_8c_html_a1668951fd7067f2c405e001836855080"><div class="ttname"><a href="remmina__plugin__manager_8c.html#a1668951fd7067f2c405e001836855080">remmina_plugin_manager_query_feature_by_type</a></div><div class="ttdeci">gboolean remmina_plugin_manager_query_feature_by_type(RemminaPluginType ptype, const gchar *name, RemminaProtocolFeatureType ftype)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__plugin__manager_8c_source.html#l00610">remmina_plugin_manager.c:610</a></div></div>
<div class="ttc" id="remmina__protocol__widget_8c_html_ab9632c73b32531b7bea976e10204670b"><div class="ttname"><a href="remmina__protocol__widget_8c.html#ab9632c73b32531b7bea976e10204670b">remmina_protocol_widget_get_clientcert</a></div><div class="ttdeci">gchar * remmina_protocol_widget_get_clientcert(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01867">remmina_protocol_widget.c:1867</a></div></div>
-<div class="ttc" id="remmina__file_8c_html_af153b0d289ac93f6ecdaa15d5f3b9b8c"><div class="ttname"><a href="remmina__file_8c.html#af153b0d289ac93f6ecdaa15d5f3b9b8c">remmina_file_set_int</a></div><div class="ttdeci">void remmina_file_set_int(RemminaFile *remminafile, const gchar *setting, gint value)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00576">remmina_file.c:576</a></div></div>
+<div class="ttc" id="remmina__file_8c_html_af153b0d289ac93f6ecdaa15d5f3b9b8c"><div class="ttname"><a href="remmina__file_8c.html#af153b0d289ac93f6ecdaa15d5f3b9b8c">remmina_file_set_int</a></div><div class="ttdeci">void remmina_file_set_int(RemminaFile *remminafile, const gchar *setting, gint value)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00585">remmina_file.c:585</a></div></div>
<div class="ttc" id="remmina__protocol__widget_8c_html_a2551dd6f53480609596d2695040fba5d"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a2551dd6f53480609596d2695040fba5d">remmina_protocol_widget_unlock_dynres</a></div><div class="ttdeci">void remmina_protocol_widget_unlock_dynres(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00440">remmina_protocol_widget.c:440</a></div></div>
<div class="ttc" id="struct___remmina_protocol_feature_html"><div class="ttname"><a href="struct___remmina_protocol_feature.html">_RemminaProtocolFeature</a></div><div class="ttdef"><b>Definition:</b> <a href="types_8h_source.html#l00072">types.h:72</a></div></div>
<div class="ttc" id="remmina__plugin__manager_8c_html_a1ef27b953decb0c707ec9a18da47a38f"><div class="ttname"><a href="remmina__plugin__manager_8c.html#a1ef27b953decb0c707ec9a18da47a38f">remmina_gtksocket_available</a></div><div class="ttdeci">gboolean remmina_gtksocket_available()</div><div class="ttdef"><b>Definition:</b> <a href="remmina__plugin__manager_8c_source.html#l00153">remmina_plugin_manager.c:153</a></div></div>
@@ -207,7 +207,7 @@ $(document).ready(function(){initNavTree('remmina__plugin__manager_8c_source.htm
<div class="ttc" id="remmina__protocol__widget_8c_html_a2830f756dfc3d735b57b0c5753c429e3"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a2830f756dfc3d735b57b0c5753c429e3">remmina_protocol_widget_is_closed</a></div><div class="ttdeci">gboolean remmina_protocol_widget_is_closed(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01465">remmina_protocol_widget.c:1465</a></div></div>
<div class="ttc" id="remmina__protocol__widget_8c_html_a08d312825fc0de9f9286279d99f763a1"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a08d312825fc0de9f9286279d99f763a1">remmina_protocol_widget_get_clientkey</a></div><div class="ttdeci">gchar * remmina_protocol_widget_get_clientkey(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01876">remmina_protocol_widget.c:1876</a></div></div>
<div class="ttc" id="struct___remmina_file_plugin_html_a3ff85e56bf902817630aafea67e3e494"><div class="ttname"><a href="struct___remmina_file_plugin.html#a3ff85e56bf902817630aafea67e3e494">_RemminaFilePlugin::type</a></div><div class="ttdeci">RemminaPluginType type</div><div class="ttdef"><b>Definition:</b> <a href="plugin_8h_source.html#l00101">plugin.h:101</a></div></div>
-<div class="ttc" id="remmina__file_8c_html_a4884356c195dcfb4ceacf641a1e74e66"><div class="ttname"><a href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a></div><div class="ttdeci">gint remmina_file_get_int(RemminaFile *remminafile, const gchar *setting, gint default_value)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00594">remmina_file.c:594</a></div></div>
+<div class="ttc" id="remmina__file_8c_html_a4884356c195dcfb4ceacf641a1e74e66"><div class="ttname"><a href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a></div><div class="ttdeci">gint remmina_file_get_int(RemminaFile *remminafile, const gchar *setting, gint default_value)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00603">remmina_file.c:603</a></div></div>
<div class="ttc" id="remmina__protocol__widget_8c_html_a172fa9cf2ce196c9846a3e47ea9036b4"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a172fa9cf2ce196c9846a3e47ea9036b4">remmina_protocol_widget_start_xport_tunnel</a></div><div class="ttdeci">gboolean remmina_protocol_widget_start_xport_tunnel(RemminaProtocolWidget *gp, RemminaXPortTunnelInitFunc init_func)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01297">remmina_protocol_widget.c:1297</a></div></div>
<div class="ttc" id="struct___remmina_file_plugin_html_a5cbc050a2735ee5d896a110a25e91ca9"><div class="ttname"><a href="struct___remmina_file_plugin.html#a5cbc050a2735ee5d896a110a25e91ca9">_RemminaFilePlugin::import_test_func</a></div><div class="ttdeci">gboolean(* import_test_func)(struct _RemminaFilePlugin *instance, const gchar *from_file)</div><div class="ttdef"><b>Definition:</b> <a href="plugin_8h_source.html#l00107">plugin.h:107</a></div></div>
<div class="ttc" id="remmina__plugin__manager_8c_html_a3872c8656a8a3d5147bcc603471c1932"><div class="ttname"><a href="remmina__plugin__manager_8c.html#a3872c8656a8a3d5147bcc603471c1932">remmina_plugin_manager_get_plugin</a></div><div class="ttdeci">RemminaPlugin * remmina_plugin_manager_get_plugin(RemminaPluginType type, const gchar *name)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__plugin__manager_8c_source.html#l00436">remmina_plugin_manager.c:436</a></div></div>
@@ -226,12 +226,12 @@ $(document).ready(function(){initNavTree('remmina__plugin__manager_8c_source.htm
<div class="ttc" id="remmina__protocol__widget_8c_html_a0b19dbe685e4465e7f06706270e120fa"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a0b19dbe685e4465e7f06706270e120fa">remmina_protocol_widget_set_expand</a></div><div class="ttdeci">void remmina_protocol_widget_set_expand(RemminaProtocolWidget *gp, gboolean expand)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01426">remmina_protocol_widget.c:1426</a></div></div>
<div class="ttc" id="remmina__log_8c_html_ac7848510c1fe1990c992e28cd31af9d8"><div class="ttname"><a href="remmina__log_8c.html#ac7848510c1fe1990c992e28cd31af9d8">remmina_log_printf</a></div><div class="ttdeci">void remmina_log_printf(const gchar *fmt,...)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__log_8c_source.html#l00410">remmina_log.c:410</a></div></div>
<div class="ttc" id="remmina__plugin__manager_8c_html_a3fdc160c477f9f5e1d881c0c054d4b07"><div class="ttname"><a href="remmina__plugin__manager_8c.html#a3fdc160c477f9f5e1d881c0c054d4b07">remmina_plugin_manager_show_for_each_stdout</a></div><div class="ttdeci">static gboolean remmina_plugin_manager_show_for_each_stdout(RemminaPlugin *plugin)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__plugin__manager_8c_source.html#l00485">remmina_plugin_manager.c:485</a></div></div>
-<div class="ttc" id="remmina__file_8c_html_a85ca1ca2d0bf9ef29e490c6f4527a954"><div class="ttname"><a href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a></div><div class="ttdeci">void remmina_file_set_string(RemminaFile *remminafile, const gchar *setting, const gchar *value)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00463">remmina_file.c:463</a></div></div>
+<div class="ttc" id="remmina__file_8c_html_a85ca1ca2d0bf9ef29e490c6f4527a954"><div class="ttname"><a href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a></div><div class="ttdeci">void remmina_file_set_string(RemminaFile *remminafile, const gchar *setting, const gchar *value)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00469">remmina_file.c:469</a></div></div>
<div class="ttc" id="remmina__protocol__widget_8c_html_a9bcd0d356c7215dc0f791c9744360705"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a9bcd0d356c7215dc0f791c9744360705">remmina_protocol_widget_send_keys_signals</a></div><div class="ttdeci">void remmina_protocol_widget_send_keys_signals(GtkWidget *widget, const guint *keyvals, int keyvals_length, GdkEventType action)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l02096">remmina_protocol_widget.c:2096</a></div></div>
<div class="ttc" id="remmina__log_8c_html_aca8f826a273194e22f4467421af9b3aa"><div class="ttname"><a href="remmina__log_8c.html#aca8f826a273194e22f4467421af9b3aa">remmina_log_print</a></div><div class="ttdeci">void remmina_log_print(const gchar *text)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__log_8c_source.html#l00196">remmina_log.c:196</a></div></div>
<div class="ttc" id="remmina__log_8c_html_ae439b5fb61045d22c9474b32d0158185"><div class="ttname"><a href="remmina__log_8c.html#ae439b5fb61045d22c9474b32d0158185">_remmina_message</a></div><div class="ttdeci">void _remmina_message(const gchar *fmt,...)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__log_8c_source.html#l00229">remmina_log.c:229</a></div></div>
<div class="ttc" id="types_8h_html_aee1a3e130e6991978acd907b52204350ad898beb6ae625dee1ae27de75f1ab4e3"><div class="ttname"><a href="types_8h.html#aee1a3e130e6991978acd907b52204350ad898beb6ae625dee1ae27de75f1ab4e3">REMMINA_PROTOCOL_SETTING_TYPE_END</a></div><div class="ttdef"><b>Definition:</b> <a href="types_8h_source.html#l00098">types.h:98</a></div></div>
-<div class="ttc" id="remmina__file_8c_html_a503e53fe49430a5ed310c342c946c014"><div class="ttname"><a href="remmina__file_8c.html#a503e53fe49430a5ed310c342c946c014">remmina_file_unsave_passwords</a></div><div class="ttdeci">void remmina_file_unsave_passwords(RemminaFile *remminafile)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00967">remmina_file.c:967</a></div></div>
+<div class="ttc" id="remmina__file_8c_html_a503e53fe49430a5ed310c342c946c014"><div class="ttname"><a href="remmina__file_8c.html#a503e53fe49430a5ed310c342c946c014">remmina_file_unsave_passwords</a></div><div class="ttdeci">void remmina_file_unsave_passwords(RemminaFile *remminafile)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00976">remmina_file.c:976</a></div></div>
<div class="ttc" id="remmina__protocol__widget_8h_html"><div class="ttname"><a href="remmina__protocol__widget_8h.html">remmina_protocol_widget.h</a></div></div>
<div class="ttc" id="remmina__protocol__widget_8c_html_a4a3a9ba7422fc302b0b412ac771c9953"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a4a3a9ba7422fc302b0b412ac771c9953">remmina_protocol_widget_chat_close</a></div><div class="ttdeci">void remmina_protocol_widget_chat_close(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l02023">remmina_protocol_widget.c:2023</a></div></div>
<div class="ttc" id="remmina__public_8c_html_adc8b77823386e00e610527d6b0b61149"><div class="ttname"><a href="remmina__public_8c.html#adc8b77823386e00e610527d6b0b61149">remmina_public_get_server_port</a></div><div class="ttdeci">void remmina_public_get_server_port(const gchar *server, gint defaultport, gchar **host, gint *port)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__public_8c_source.html#l00420">remmina_public.c:420</a></div></div>
diff --git a/public/remmina__protocol__widget_8c_source.html b/public/remmina__protocol__widget_8c_source.html
index 7b4a49be2..5b34ec8d4 100644
--- a/public/remmina__protocol__widget_8c_source.html
+++ b/public/remmina__protocol__widget_8c_source.html
@@ -104,7 +104,7 @@ $(document).ready(function(){initNavTree('remmina__protocol__widget_8c_source.ht
<div class="ttc" id="remmina__protocol__widget_8c_html_a91d88c61dd84299369fe3c79e19821b1"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a91d88c61dd84299369fe3c79e19821b1">RemminaProtocolWidgetSignalData</a></div><div class="ttdeci">struct _RemminaProtocolWidgetSignalData RemminaProtocolWidgetSignalData</div></div>
<div class="ttc" id="remmina__plugin__manager_8h_html"><div class="ttname"><a href="remmina__plugin__manager_8h.html">remmina_plugin_manager.h</a></div></div>
<div class="ttc" id="remmina__protocol__widget_8c_html_ab2b4a7c615a472ad391d1c06ea1f00cc"><div class="ttname"><a href="remmina__protocol__widget_8c.html#ab2b4a7c615a472ad391d1c06ea1f00cc">lock_dynres</a></div><div class="ttdeci">static gboolean lock_dynres(gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00415">remmina_protocol_widget.c:415</a></div></div>
-<div class="ttc" id="remmina__file_8c_html_a8eb1b213d9d08c6ad13683ce05f4355e"><div class="ttname"><a href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a></div><div class="ttdeci">const gchar * remmina_file_get_string(RemminaFile *remminafile, const gchar *setting)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00507">remmina_file.c:507</a></div></div>
+<div class="ttc" id="remmina__file_8c_html_a8eb1b213d9d08c6ad13683ce05f4355e"><div class="ttname"><a href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a></div><div class="ttdeci">const gchar * remmina_file_get_string(RemminaFile *remminafile, const gchar *setting)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00516">remmina_file.c:516</a></div></div>
<div class="ttc" id="remmina__protocol__widget_8c_html_a8ef0523afadadc9984d53fb02ecc01ad"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a8ef0523afadadc9984d53fb02ecc01ad">remmina_protocol_widget_panel_hide</a></div><div class="ttdeci">void remmina_protocol_widget_panel_hide(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01995">remmina_protocol_widget.c:1995</a></div></div>
<div class="ttc" id="remmina__message__panel_8h_html_aabfcbcb5ac86a1edac4035264bc7d2b8a10531307d859706670fb6ce4aa7308c7"><div class="ttname"><a href="remmina__message__panel_8h.html#aabfcbcb5ac86a1edac4035264bc7d2b8a10531307d859706670fb6ce4aa7308c7">REMMINA_MESSAGE_PANEL_CACERTFILE</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__message__panel_8h_source.html#l00059">remmina_message_panel.h:59</a></div></div>
<div class="ttc" id="remmina__protocol__widget_8c_html_add3775989fb5ed7a7f1f7c9b5980a94e"><div class="ttname"><a href="remmina__protocol__widget_8c.html#add3775989fb5ed7a7f1f7c9b5980a94e">unlock_dynres</a></div><div class="ttdeci">static gboolean unlock_dynres(gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00424">remmina_protocol_widget.c:424</a></div></div>
@@ -130,7 +130,7 @@ $(document).ready(function(){initNavTree('remmina__protocol__widget_8c_source.ht
<div class="ttc" id="remmina__protocol__widget_8c_html_aebc7c7d34c470081a52aa35d998ce868"><div class="ttname"><a href="remmina__protocol__widget_8c.html#aebc7c7d34c470081a52aa35d998ce868">remmina_protocol_widget_panel_auth</a></div><div class="ttdeci">gint remmina_protocol_widget_panel_auth(RemminaProtocolWidget *gp, RemminaMessagePanelFlags pflags, const gchar *title, const gchar *default_username, const gchar *default_password, const gchar *default_domain, const gchar *password_prompt)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01689">remmina_protocol_widget.c:1689</a></div></div>
<div class="ttc" id="struct___remmina_protocol_widget_signal_data_html_a2dfdc85f32d5eeed1d183088ac2a4ada"><div class="ttname"><a href="struct___remmina_protocol_widget_signal_data.html#a2dfdc85f32d5eeed1d183088ac2a4ada">_RemminaProtocolWidgetSignalData::signal_name</a></div><div class="ttdeci">const gchar * signal_name</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00123">remmina_protocol_widget.c:123</a></div></div>
<div class="ttc" id="remmina__protocol__widget_8c_html_ab863cc1442a992adfa323bc77ab88504"><div class="ttname"><a href="remmina__protocol__widget_8c.html#ab863cc1442a992adfa323bc77ab88504">remmina_protocol_widget_save_cred</a></div><div class="ttdeci">void remmina_protocol_widget_save_cred(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01885">remmina_protocol_widget.c:1885</a></div></div>
-<div class="ttc" id="remmina__file_8c_html_ad1e4f3a0f64cd98e301044b6c38a1f1d"><div class="ttname"><a href="remmina__file_8c.html#ad1e4f3a0f64cd98e301044b6c38a1f1d">remmina_file_get_filename</a></div><div class="ttdeci">const gchar * remmina_file_get_filename(RemminaFile *remminafile)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00206">remmina_file.c:206</a></div></div>
+<div class="ttc" id="remmina__file_8c_html_ad1e4f3a0f64cd98e301044b6c38a1f1d"><div class="ttname"><a href="remmina__file_8c.html#ad1e4f3a0f64cd98e301044b6c38a1f1d">remmina_file_get_filename</a></div><div class="ttdeci">const gchar * remmina_file_get_filename(RemminaFile *remminafile)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00210">remmina_file.c:210</a></div></div>
<div class="ttc" id="remmina__protocol__widget_8c_html_adfac12e7a563dc06fb2f0c8307f40fee"><div class="ttname"><a href="remmina__protocol__widget_8c.html#adfac12e7a563dc06fb2f0c8307f40fee">remmina_protocol_widget_xport_tunnel_connect_callback</a></div><div class="ttdeci">static gboolean remmina_protocol_widget_xport_tunnel_connect_callback(RemminaSSHTunnel *tunnel, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01273">remmina_protocol_widget.c:1273</a></div></div>
<div class="ttc" id="remmina__public_8c_html_a893f0cfe2d694ab700975f4f427ee2f6"><div class="ttname"><a href="remmina__public_8c.html#a893f0cfe2d694ab700975f4f427ee2f6">remmina_public_send_notification</a></div><div class="ttdeci">void remmina_public_send_notification(const gchar *notification_id, const gchar *notification_title, const gchar *notification_message)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__public_8c_source.html#l00637">remmina_public.c:637</a></div></div>
<div class="ttc" id="remmina__protocol__widget_8c_html_a9ed3110b7b030bccd0ff9ed70e86da2d"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a9ed3110b7b030bccd0ff9ed70e86da2d">remmina_protocol_widget_get_savepassword</a></div><div class="ttdeci">gboolean remmina_protocol_widget_get_savepassword(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01843">remmina_protocol_widget.c:1843</a></div></div>
@@ -150,7 +150,7 @@ $(document).ready(function(){initNavTree('remmina__protocol__widget_8c_source.ht
<div class="ttc" id="remmina__protocol__widget_8c_html_ac1f95eb1e31c05ae0bc4027496ceafb0"><div class="ttname"><a href="remmina__protocol__widget_8c.html#ac1f95eb1e31c05ae0bc4027496ceafb0">remmina_protocol_widget_on_key_release</a></div><div class="ttdeci">static gboolean remmina_protocol_widget_on_key_release(GtkWidget *widget, GdkEventKey *event, RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00843">remmina_protocol_widget.c:843</a></div></div>
<div class="ttc" id="remmina__protocol__widget_8c_html_a25797eafabe9d6f5729b56145abe1572"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a25797eafabe9d6f5729b56145abe1572">shutdown_loop</a></div><div class="ttdeci">static void shutdown_loop(MpRunInfo *mpri)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01576">remmina_protocol_widget.c:1576</a></div></div>
<div class="ttc" id="struct___remmina_s_s_h_tunnel_html_a33ae9b7cd8cb3dcd85223017dfd13795"><div class="ttname"><a href="struct___remmina_s_s_h_tunnel.html#a33ae9b7cd8cb3dcd85223017dfd13795">_RemminaSSHTunnel::destroy_func_callback_data</a></div><div class="ttdeci">gpointer destroy_func_callback_data</div><div class="ttdef"><b>Definition:</b> <a href="remmina__ssh_8h_source.html#l00181">remmina_ssh.h:181</a></div></div>
-<div class="ttc" id="remmina__file_8c_html_a52a0986eaf54c9e606ce9cdf8bb57e60"><div class="ttname"><a href="remmina__file_8c.html#a52a0986eaf54c9e606ce9cdf8bb57e60">remmina_file_dup_temp_protocol</a></div><div class="ttdeci">RemminaFile * remmina_file_dup_temp_protocol(RemminaFile *remminafile, const gchar *new_protocol)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00888">remmina_file.c:888</a></div></div>
+<div class="ttc" id="remmina__file_8c_html_a52a0986eaf54c9e606ce9cdf8bb57e60"><div class="ttname"><a href="remmina__file_8c.html#a52a0986eaf54c9e606ce9cdf8bb57e60">remmina_file_dup_temp_protocol</a></div><div class="ttdeci">RemminaFile * remmina_file_dup_temp_protocol(RemminaFile *remminafile, const gchar *new_protocol)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00897">remmina_file.c:897</a></div></div>
<div class="ttc" id="rcw_8c_html_ad3c2fe67b137c757bd21b79ad5dcc5ff"><div class="ttname"><a href="rcw_8c.html#ad3c2fe67b137c757bd21b79ad5dcc5ff">rcw_open_from_file_full</a></div><div class="ttdeci">GtkWidget * rcw_open_from_file_full(RemminaFile *remminafile, GCallback disconnect_cb, gpointer data, guint *handler)</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l04476">rcw.c:4476</a></div></div>
<div class="ttc" id="remmina__message__panel_8c_html_ac10f450f856ca7d9c0b6896261e9c407"><div class="ttname"><a href="remmina__message__panel_8c.html#ac10f450f856ca7d9c0b6896261e9c407">remmina_message_panel_setup_auth_x509</a></div><div class="ttdeci">void remmina_message_panel_setup_auth_x509(RemminaMessagePanel *mp, RemminaMessagePanelCallback response_callback, gpointer response_callback_data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__message__panel_8c_source.html#l00480">remmina_message_panel.c:480</a></div></div>
<div class="ttc" id="struct___remmina_protocol_feature_html_a36b55faeba78528ac9708dfa66667e20"><div class="ttname"><a href="struct___remmina_protocol_feature.html#a36b55faeba78528ac9708dfa66667e20">_RemminaProtocolFeature::id</a></div><div class="ttdeci">gint id</div><div class="ttdef"><b>Definition:</b> <a href="types_8h_source.html#l00074">types.h:74</a></div></div>
@@ -319,7 +319,7 @@ $(document).ready(function(){initNavTree('remmina__protocol__widget_8c_source.ht
<div class="ttc" id="struct___remmina_protocol_widget_priv_html_aa37ce53d4329aaaa7c4059c60882a533"><div class="ttname"><a href="struct___remmina_protocol_widget_priv.html#aa37ce53d4329aaaa7c4059c60882a533">_RemminaProtocolWidgetPriv::scalemode</a></div><div class="ttdeci">RemminaScaleMode scalemode</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00067">remmina_protocol_widget.c:67</a></div></div>
<div class="ttc" id="types_8h_html_a341a0a8b6509633809d99348cc3ba486a46ac68f2dea71082d090ae63c5c4505c"><div class="ttname"><a href="types_8h.html#a341a0a8b6509633809d99348cc3ba486a46ac68f2dea71082d090ae63c5c4505c">REMMINA_MESSAGE_PANEL_FLAG_DOMAIN</a></div><div class="ttdef"><b>Definition:</b> <a href="types_8h_source.html#l00158">types.h:158</a></div></div>
<div class="ttc" id="remmina__message__panel_8h_html_aabfcbcb5ac86a1edac4035264bc7d2b8a34c1441f93d50321cbabcfb45918c6e3"><div class="ttname"><a href="remmina__message__panel_8h.html#aabfcbcb5ac86a1edac4035264bc7d2b8a34c1441f93d50321cbabcfb45918c6e3">REMMINA_MESSAGE_PANEL_CLIENTKEYFILE</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__message__panel_8h_source.html#l00062">remmina_message_panel.h:62</a></div></div>
-<div class="ttc" id="remmina__file_8c_html_a4884356c195dcfb4ceacf641a1e74e66"><div class="ttname"><a href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a></div><div class="ttdeci">gint remmina_file_get_int(RemminaFile *remminafile, const gchar *setting, gint default_value)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00594">remmina_file.c:594</a></div></div>
+<div class="ttc" id="remmina__file_8c_html_a4884356c195dcfb4ceacf641a1e74e66"><div class="ttname"><a href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a></div><div class="ttdeci">gint remmina_file_get_int(RemminaFile *remminafile, const gchar *setting, gint default_value)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00603">remmina_file.c:603</a></div></div>
<div class="ttc" id="remmina__protocol__widget_8c_html_a172fa9cf2ce196c9846a3e47ea9036b4"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a172fa9cf2ce196c9846a3e47ea9036b4">remmina_protocol_widget_start_xport_tunnel</a></div><div class="ttdeci">gboolean remmina_protocol_widget_start_xport_tunnel(RemminaProtocolWidget *gp, RemminaXPortTunnelInitFunc init_func)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01297">remmina_protocol_widget.c:1297</a></div></div>
<div class="ttc" id="struct___remmina_protocol_plugin_html_ae0dc6952f8015848cf97950fcc7d9997"><div class="ttname"><a href="struct___remmina_protocol_plugin.html#ae0dc6952f8015848cf97950fcc7d9997">_RemminaProtocolPlugin::map_event</a></div><div class="ttdeci">gboolean(* map_event)(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="plugin_8h_source.html#l00086">plugin.h:86</a></div></div>
<div class="ttc" id="remmina__protocol__widget_8c_html_a605b69a9aa4393024369cc5070488692"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a605b69a9aa4393024369cc5070488692">remmina_protocol_widget_call_feature_by_ref</a></div><div class="ttdeci">void remmina_protocol_widget_call_feature_by_ref(RemminaProtocolWidget *gp, const RemminaProtocolFeature *feature)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00806">remmina_protocol_widget.c:806</a></div></div>
@@ -357,9 +357,9 @@ $(document).ready(function(){initNavTree('remmina__protocol__widget_8c_source.ht
<div class="ttc" id="types_8h_html_ab0b29804e77812ca42752bf4f379a288ab774d380798d305b72f4301143d3f440"><div class="ttname"><a href="types_8h.html#ab0b29804e77812ca42752bf4f379a288ab774d380798d305b72f4301143d3f440">REMMINA_TYPEHINT_UNDEFINED</a></div><div class="ttdef"><b>Definition:</b> <a href="types_8h_source.html#l00069">types.h:69</a></div></div>
<div class="ttc" id="remmina__protocol__widget_8c_html_a0b19dbe685e4465e7f06706270e120fa"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a0b19dbe685e4465e7f06706270e120fa">remmina_protocol_widget_set_expand</a></div><div class="ttdeci">void remmina_protocol_widget_set_expand(RemminaProtocolWidget *gp, gboolean expand)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01426">remmina_protocol_widget.c:1426</a></div></div>
<div class="ttc" id="remmina__message__panel_8c_html_a80bc2fcb39c236da739593c2134c73fa"><div class="ttname"><a href="remmina__message__panel_8c.html#a80bc2fcb39c236da739593c2134c73fa">remmina_message_panel_field_get_switch_state</a></div><div class="ttdeci">gboolean remmina_message_panel_field_get_switch_state(RemminaMessagePanel *mp, int entryid)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__message__panel_8c_source.html#l00739">remmina_message_panel.c:739</a></div></div>
-<div class="ttc" id="remmina__file_8c_html_a85ca1ca2d0bf9ef29e490c6f4527a954"><div class="ttname"><a href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a></div><div class="ttdeci">void remmina_file_set_string(RemminaFile *remminafile, const gchar *setting, const gchar *value)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00463">remmina_file.c:463</a></div></div>
+<div class="ttc" id="remmina__file_8c_html_a85ca1ca2d0bf9ef29e490c6f4527a954"><div class="ttname"><a href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a></div><div class="ttdeci">void remmina_file_set_string(RemminaFile *remminafile, const gchar *setting, const gchar *value)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00469">remmina_file.c:469</a></div></div>
<div class="ttc" id="struct___remmina_protocol_widget_priv_html_a75d5f7d146f04132de722d0b7d09bb7d"><div class="ttname"><a href="struct___remmina_protocol_widget_priv.html#a75d5f7d146f04132de722d0b7d09bb7d">_RemminaProtocolWidgetPriv::has_error</a></div><div class="ttdeci">gboolean has_error</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00070">remmina_protocol_widget.c:70</a></div></div>
-<div class="ttc" id="remmina__file_8c_html_a8c893a5deec9bc446bd89cc9973416c7"><div class="ttname"><a href="remmina__file_8c.html#a8c893a5deec9bc446bd89cc9973416c7">remmina_file_save</a></div><div class="ttdeci">void remmina_file_save(RemminaFile *remminafile)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00719">remmina_file.c:719</a></div></div>
+<div class="ttc" id="remmina__file_8c_html_a8c893a5deec9bc446bd89cc9973416c7"><div class="ttname"><a href="remmina__file_8c.html#a8c893a5deec9bc446bd89cc9973416c7">remmina_file_save</a></div><div class="ttdeci">void remmina_file_save(RemminaFile *remminafile)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00728">remmina_file.c:728</a></div></div>
<div class="ttc" id="remmina__protocol__widget_8c_html_a8c125f58aa4fac0e4c88f293e4d4dd74"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a8c125f58aa4fac0e4c88f293e4d4dd74">remmina_protocol_widget_class_init</a></div><div class="ttdeci">static void remmina_protocol_widget_class_init(RemminaProtocolWidgetClass *klass)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00129">remmina_protocol_widget.c:129</a></div></div>
<div class="ttc" id="rcw_8c_html_aee06df544a91184cba1fe77c6991065a"><div class="ttname"><a href="rcw_8c.html#aee06df544a91184cba1fe77c6991065a">rco_get_monitor_geometry</a></div><div class="ttdeci">void rco_get_monitor_geometry(RemminaConnectionObject *cnnobj, GdkRectangle *sz)</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l01005">rcw.c:1005</a></div></div>
<div class="ttc" id="struct___remmina_protocol_widget_priv_html_ae76f074f8613e3f3b01c26eb3ce194f0"><div class="ttname"><a href="struct___remmina_protocol_widget_priv.html#ae76f074f8613e3f3b01c26eb3ce194f0">_RemminaProtocolWidgetPriv::clientkey</a></div><div class="ttdeci">gchar * clientkey</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00100">remmina_protocol_widget.c:100</a></div></div>
diff --git a/public/remmina__sftp__plugin_8c_source.html b/public/remmina__sftp__plugin_8c_source.html
index 95e452274..c7be82e05 100644
--- a/public/remmina__sftp__plugin_8c_source.html
+++ b/public/remmina__sftp__plugin_8c_source.html
@@ -99,7 +99,7 @@ $(document).ready(function(){initNavTree('remmina__sftp__plugin_8c_source.html',
<div class="ttc" id="struct___remmina_s_s_h_html_a3aaebd7f03b7d8601818fabc46b787ed"><div class="ttname"><a href="struct___remmina_s_s_h.html#a3aaebd7f03b7d8601818fabc46b787ed">_RemminaSSH::error</a></div><div class="ttdeci">gchar * error</div><div class="ttdef"><b>Definition:</b> <a href="remmina__ssh_8h_source.html#l00080">remmina_ssh.h:80</a></div></div>
<div class="ttc" id="types_8h_html_aee1a3e130e6991978acd907b52204350a8be3f210c609fde31f68e607c41de296"><div class="ttname"><a href="types_8h.html#aee1a3e130e6991978acd907b52204350a8be3f210c609fde31f68e607c41de296">REMMINA_PROTOCOL_SETTING_TYPE_TEXT</a></div><div class="ttdef"><b>Definition:</b> <a href="types_8h_source.html#l00105">types.h:105</a></div></div>
<div class="ttc" id="types_8h_html_a112d7cc6c755209cabb68cf2a62ad515"><div class="ttname"><a href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a></div><div class="ttdeci">typedefG_BEGIN_DECLS struct _RemminaFile RemminaFile</div><div class="ttdef"><b>Definition:</b> <a href="types_8h_source.html#l00044">types.h:44</a></div></div>
-<div class="ttc" id="remmina__file_8c_html_a52a0986eaf54c9e606ce9cdf8bb57e60"><div class="ttname"><a href="remmina__file_8c.html#a52a0986eaf54c9e606ce9cdf8bb57e60">remmina_file_dup_temp_protocol</a></div><div class="ttdeci">RemminaFile * remmina_file_dup_temp_protocol(RemminaFile *remminafile, const gchar *new_protocol)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00888">remmina_file.c:888</a></div></div>
+<div class="ttc" id="remmina__file_8c_html_a52a0986eaf54c9e606ce9cdf8bb57e60"><div class="ttname"><a href="remmina__file_8c.html#a52a0986eaf54c9e606ce9cdf8bb57e60">remmina_file_dup_temp_protocol</a></div><div class="ttdeci">RemminaFile * remmina_file_dup_temp_protocol(RemminaFile *remminafile, const gchar *new_protocol)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00897">remmina_file.c:897</a></div></div>
<div class="ttc" id="struct___remmina_s_f_t_p_html"><div class="ttname"><a href="struct___remmina_s_f_t_p.html">_RemminaSFTP</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__ssh_8h_source.html#l00220">remmina_ssh.h:220</a></div></div>
<div class="ttc" id="remmina__sftp__client_8h_html"><div class="ttname"><a href="remmina__sftp__client_8h.html">remmina_sftp_client.h</a></div></div>
<div class="ttc" id="struct___remmina_plugin_service_html_abaf7f57e2336f6e5c257e9c30fedc047"><div class="ttname"><a href="struct___remmina_plugin_service.html#abaf7f57e2336f6e5c257e9c30fedc047">_RemminaPluginService::protocol_plugin_set_width</a></div><div class="ttdeci">void(* protocol_plugin_set_width)(RemminaProtocolWidget *gp, gint width)</div><div class="ttdef"><b>Definition:</b> <a href="plugin_8h_source.html#l00169">plugin.h:169</a></div></div>
@@ -141,7 +141,7 @@ $(document).ready(function(){initNavTree('remmina__sftp__plugin_8c_source.html',
<div class="ttc" id="remmina__ssh_8h_html_a879c265f2e8050e4e72a061ab3747ee1ad56c3878c4a651b51fdb3d0e8b9cebd7"><div class="ttname"><a href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1ad56c3878c4a651b51fdb3d0e8b9cebd7">REMMINA_SSH_AUTH_RECONNECT</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__ssh_8h_source.html#l00115">remmina_ssh.h:115</a></div></div>
<div class="ttc" id="remmina__ftp__client_8c_html_a1ef77e687209d258ec576c31614ea60f"><div class="ttname"><a href="remmina__ftp__client_8c.html#a1ef77e687209d258ec576c31614ea60f">remmina_ftp_client_set_dir</a></div><div class="ttdeci">void remmina_ftp_client_set_dir(RemminaFTPClient *client, const gchar *dir)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__ftp__client_8c_source.html#l01146">remmina_ftp_client.c:1146</a></div></div>
<div class="ttc" id="remmina__sftp__plugin_8c_html_a999de1dbe291169ccc33dffa123a1315"><div class="ttname"><a href="remmina__sftp__plugin_8c.html#a999de1dbe291169ccc33dffa123a1315">remmina_sftp_basic_settings</a></div><div class="ttdeci">static const RemminaProtocolSetting remmina_sftp_basic_settings[]</div><div class="ttdef"><b>Definition:</b> <a href="remmina__sftp__plugin_8c_source.html#l00349">remmina_sftp_plugin.c:349</a></div></div>
-<div class="ttc" id="remmina__file_8c_html_af153b0d289ac93f6ecdaa15d5f3b9b8c"><div class="ttname"><a href="remmina__file_8c.html#af153b0d289ac93f6ecdaa15d5f3b9b8c">remmina_file_set_int</a></div><div class="ttdeci">void remmina_file_set_int(RemminaFile *remminafile, const gchar *setting, gint value)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00576">remmina_file.c:576</a></div></div>
+<div class="ttc" id="remmina__file_8c_html_af153b0d289ac93f6ecdaa15d5f3b9b8c"><div class="ttname"><a href="remmina__file_8c.html#af153b0d289ac93f6ecdaa15d5f3b9b8c">remmina_file_set_int</a></div><div class="ttdeci">void remmina_file_set_int(RemminaFile *remminafile, const gchar *setting, gint value)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00585">remmina_file.c:585</a></div></div>
<div class="ttc" id="struct___remmina_protocol_widget_html"><div class="ttname"><a href="struct___remmina_protocol_widget.html">_RemminaProtocolWidget</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8h_source.html#l00058">remmina_protocol_widget.h:58</a></div></div>
<div class="ttc" id="types_8h_html_aee1a3e130e6991978acd907b52204350a04da01eead7904a55d1c813950609b2d"><div class="ttname"><a href="types_8h.html#aee1a3e130e6991978acd907b52204350a04da01eead7904a55d1c813950609b2d">REMMINA_PROTOCOL_SETTING_TYPE_SELECT</a></div><div class="ttdef"><b>Definition:</b> <a href="types_8h_source.html#l00107">types.h:107</a></div></div>
<div class="ttc" id="struct___remmina_protocol_feature_html"><div class="ttname"><a href="struct___remmina_protocol_feature.html">_RemminaProtocolFeature</a></div><div class="ttdef"><b>Definition:</b> <a href="types_8h_source.html#l00072">types.h:72</a></div></div>
diff --git a/public/remmina__ssh_8c_source.html b/public/remmina__ssh_8c_source.html
index 4e837fa9d..59323bd8d 100644
--- a/public/remmina__ssh_8c_source.html
+++ b/public/remmina__ssh_8c_source.html
@@ -95,7 +95,7 @@ $(document).ready(function(){initNavTree('remmina__ssh_8c_source.html','');});
<div class="ttc" id="remmina__ssh_8h_html_acf69725720378340e1a51c87e7638a7f"><div class="ttname"><a href="remmina__ssh_8h.html#acf69725720378340e1a51c87e7638a7f">remmina_ssh_auth_gui</a></div><div class="ttdeci">enum remmina_ssh_auth_result remmina_ssh_auth_gui(RemminaSSH *ssh, RemminaProtocolWidget *gp, RemminaFile *remminafile)</div></div>
<div class="ttc" id="struct___remmina_pref_html_aac4f34f297a653052752b571777bc001"><div class="ttname"><a href="struct___remmina_pref.html#aac4f34f297a653052752b571777bc001">_RemminaPref::ssh_loglevel</a></div><div class="ttdeci">gint ssh_loglevel</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00165">remmina_pref.h:165</a></div></div>
<div class="ttc" id="structitem_html_adb779965c903bb950d429e90ebce3162"><div class="ttname"><a href="structitem.html#adb779965c903bb950d429e90ebce3162">item::fd_in</a></div><div class="ttdeci">gint fd_in</div><div class="ttdef"><b>Definition:</b> <a href="remmina__ssh_8c_source.html#l00133">remmina_ssh.c:133</a></div></div>
-<div class="ttc" id="remmina__file_8c_html_a8eb1b213d9d08c6ad13683ce05f4355e"><div class="ttname"><a href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a></div><div class="ttdeci">const gchar * remmina_file_get_string(RemminaFile *remminafile, const gchar *setting)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00507">remmina_file.c:507</a></div></div>
+<div class="ttc" id="remmina__file_8c_html_a8eb1b213d9d08c6ad13683ce05f4355e"><div class="ttname"><a href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a></div><div class="ttdeci">const gchar * remmina_file_get_string(RemminaFile *remminafile, const gchar *setting)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00516">remmina_file.c:516</a></div></div>
<div class="ttc" id="struct___remmina_s_s_h_html_ac03e015f09baa46d4a9a118c606736af"><div class="ttname"><a href="struct___remmina_s_s_h.html#ac03e015f09baa46d4a9a118c606736af">_RemminaSSH::proxycommand</a></div><div class="ttdeci">gchar * proxycommand</div><div class="ttdef"><b>Definition:</b> <a href="remmina__ssh_8h_source.html#l00076">remmina_ssh.h:76</a></div></div>
<div class="ttc" id="remmina__ssh_8c_html_aa8aee72091b09cde34c0e0efadde719a"><div class="ttname"><a href="remmina__ssh_8c.html#aa8aee72091b09cde34c0e0efadde719a">remmina_ssh_auth_auto_pubkey</a></div><div class="ttdeci">static enum remmina_ssh_auth_result remmina_ssh_auth_auto_pubkey(RemminaSSH *ssh, RemminaProtocolWidget *gp, RemminaFile *remminafile)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__ssh_8c_source.html#l00938">remmina_ssh.c:938</a></div></div>
<div class="ttc" id="struct___remmina_s_s_h_tunnel_html_af670e0b0960c3e71e9f0b8b797ef9c28"><div class="ttname"><a href="struct___remmina_s_s_h_tunnel.html#af670e0b0960c3e71e9f0b8b797ef9c28">_RemminaSSHTunnel::remotedisplay</a></div><div class="ttdeci">gint remotedisplay</div><div class="ttdef"><b>Definition:</b> <a href="remmina__ssh_8h_source.html#l00171">remmina_ssh.h:171</a></div></div>
@@ -157,7 +157,7 @@ $(document).ready(function(){initNavTree('remmina__ssh_8c_source.html','');});
<div class="ttc" id="remmina__ssh_8h_html_a6815a78f65795cbc6795ca1c59e73102"><div class="ttname"><a href="remmina__ssh_8h.html#a6815a78f65795cbc6795ca1c59e73102">remmina_ssh_init_from_file</a></div><div class="ttdeci">gboolean remmina_ssh_init_from_file(RemminaSSH *ssh, RemminaFile *remminafile, gboolean is_tunnel)</div></div>
<div class="ttc" id="remmina__ssh_8h_html_a879c265f2e8050e4e72a061ab3747ee1"><div class="ttname"><a href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1">remmina_ssh_auth_result</a></div><div class="ttdeci">remmina_ssh_auth_result</div><div class="ttdef"><b>Definition:</b> <a href="remmina__ssh_8h_source.html#l00107">remmina_ssh.h:107</a></div></div>
<div class="ttc" id="remmina__log_8c_html_a96f5bb72acbdcbf8793b4a5f4a6132b5"><div class="ttname"><a href="remmina__log_8c.html#a96f5bb72acbdcbf8793b4a5f4a6132b5">remmina_log_running</a></div><div class="ttdeci">gboolean remmina_log_running(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__log_8c_source.html#l00161">remmina_log.c:161</a></div></div>
-<div class="ttc" id="remmina__file_8c_html_afd8b12f3d84b4e201b9f465d5b8e0d03"><div class="ttname"><a href="remmina__file_8c.html#afd8b12f3d84b4e201b9f465d5b8e0d03">remmina_file_format_properties</a></div><div class="ttdeci">gchar * remmina_file_format_properties(RemminaFile *remminafile, const gchar *setting)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00552">remmina_file.c:552</a></div></div>
+<div class="ttc" id="remmina__file_8c_html_afd8b12f3d84b4e201b9f465d5b8e0d03"><div class="ttname"><a href="remmina__file_8c.html#afd8b12f3d84b4e201b9f465d5b8e0d03">remmina_file_format_properties</a></div><div class="ttdeci">gchar * remmina_file_format_properties(RemminaFile *remminafile, const gchar *setting)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00561">remmina_file.c:561</a></div></div>
<div class="ttc" id="remmina__ssh_8c_html_a72a58e416c4eeb9d17eaf76360ebee42"><div class="ttname"><a href="remmina__ssh_8c.html#a72a58e416c4eeb9d17eaf76360ebee42">remmina_ssh_identity_path</a></div><div class="ttdeci">gchar * remmina_ssh_identity_path(const gchar *id)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__ssh_8c_source.html#l00618">remmina_ssh.c:618</a></div></div>
<div class="ttc" id="struct___remmina_s_s_h_html_aa064626a7fd528e7d8c1fc34d1bd8dfc"><div class="ttname"><a href="struct___remmina_s_s_h.html#aa064626a7fd528e7d8c1fc34d1bd8dfc">_RemminaSSH::port</a></div><div class="ttdeci">gint port</div><div class="ttdef"><b>Definition:</b> <a href="remmina__ssh_8h_source.html#l00065">remmina_ssh.h:65</a></div></div>
<div class="ttc" id="remmina__ssh_8h_html_a316f97b879e147ec52967344f6ad1d84"><div class="ttname"><a href="remmina__ssh_8h.html#a316f97b879e147ec52967344f6ad1d84">remmina_ssh_shell_free</a></div><div class="ttdeci">void remmina_ssh_shell_free(RemminaSSHShell *shell)</div></div>
@@ -212,7 +212,7 @@ $(document).ready(function(){initNavTree('remmina__ssh_8c_source.html','');});
<div class="ttc" id="struct___remmina_s_s_h_html_adedb385c39effff9c9dd5767250f8c89"><div class="ttname"><a href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">_RemminaSSH::password</a></div><div class="ttdeci">gchar * password</div><div class="ttdef"><b>Definition:</b> <a href="remmina__ssh_8h_source.html#l00068">remmina_ssh.h:68</a></div></div>
<div class="ttc" id="remmina__ssh_8h_html_a1500d65d1f0751812f237c1cb4d15188"><div class="ttname"><a href="remmina__ssh_8h.html#a1500d65d1f0751812f237c1cb4d15188">remmina_sftp_new_from_ssh</a></div><div class="ttdeci">RemminaSFTP * remmina_sftp_new_from_ssh(RemminaSSH *ssh)</div></div>
<div class="ttc" id="struct___remmina_s_s_h_tunnel_html_aa9ab1684349da8bfd6b84cc135c053b3"><div class="ttname"><a href="struct___remmina_s_s_h_tunnel.html#aa9ab1684349da8bfd6b84cc135c053b3">_RemminaSSHTunnel::sockets</a></div><div class="ttdeci">gint * sockets</div><div class="ttdef"><b>Definition:</b> <a href="remmina__ssh_8h_source.html#l00154">remmina_ssh.h:154</a></div></div>
-<div class="ttc" id="remmina__file_8c_html_a4884356c195dcfb4ceacf641a1e74e66"><div class="ttname"><a href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a></div><div class="ttdeci">gint remmina_file_get_int(RemminaFile *remminafile, const gchar *setting, gint default_value)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00594">remmina_file.c:594</a></div></div>
+<div class="ttc" id="remmina__file_8c_html_a4884356c195dcfb4ceacf641a1e74e66"><div class="ttname"><a href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a></div><div class="ttdeci">gint remmina_file_get_int(RemminaFile *remminafile, const gchar *setting, gint default_value)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00603">remmina_file.c:603</a></div></div>
<div class="ttc" id="remmina__ssh_8c_html_a91225eab16154f145e4d3f30a011d13a"><div class="ttname"><a href="remmina__ssh_8c.html#a91225eab16154f145e4d3f30a011d13a">remmina_ssh_x11_connect_display</a></div><div class="ttdeci">static int remmina_ssh_x11_connect_display()</div><div class="ttdef"><b>Definition:</b> <a href="remmina__ssh_8c_source.html#l00385">remmina_ssh.c:385</a></div></div>
<div class="ttc" id="struct___remmina_s_s_h_html_af9f34b088c5af320708cf02dfc45d59e"><div class="ttname"><a href="struct___remmina_s_s_h.html#af9f34b088c5af320708cf02dfc45d59e">_RemminaSSH::privkeyfile</a></div><div class="ttdeci">gchar * privkeyfile</div><div class="ttdef"><b>Definition:</b> <a href="remmina__ssh_8h_source.html#l00069">remmina_ssh.h:69</a></div></div>
<div class="ttc" id="types_8h_html_a341a0a8b6509633809d99348cc3ba486a9b734c324722cf2982768feaeeb15c7c"><div class="ttname"><a href="types_8h.html#a341a0a8b6509633809d99348cc3ba486a9b734c324722cf2982768feaeeb15c7c">REMMINA_MESSAGE_PANEL_FLAG_SAVEPASSWORD</a></div><div class="ttdef"><b>Definition:</b> <a href="types_8h_source.html#l00159">types.h:159</a></div></div>
@@ -235,7 +235,7 @@ $(document).ready(function(){initNavTree('remmina__ssh_8c_source.html','');});
<div class="ttc" id="remmina__ssh_8h_html_aeb20d31243a4d30e469a34fe01684e38"><div class="ttname"><a href="remmina__ssh_8h.html#aeb20d31243a4d30e469a34fe01684e38">remmina_ssh_tunnel_terminated</a></div><div class="ttdeci">gboolean remmina_ssh_tunnel_terminated(RemminaSSHTunnel *tunnel)</div></div>
<div class="ttc" id="remmina__ssh_8h_html_a879c265f2e8050e4e72a061ab3747ee1af9e9ce1f259cc359c6e5eb0dbaa090da"><div class="ttname"><a href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1af9e9ce1f259cc359c6e5eb0dbaa090da">REMMINA_SSH_AUTH_NULL</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__ssh_8h_source.html#l00108">remmina_ssh.h:108</a></div></div>
<div class="ttc" id="struct___remmina_s_s_h_tunnel_html_abb17dc2972e189660c20eff7ec0fe513"><div class="ttname"><a href="struct___remmina_s_s_h_tunnel.html#abb17dc2972e189660c20eff7ec0fe513">_RemminaSSHTunnel::num_channels</a></div><div class="ttdeci">gint num_channels</div><div class="ttdef"><b>Definition:</b> <a href="remmina__ssh_8h_source.html#l00156">remmina_ssh.h:156</a></div></div>
-<div class="ttc" id="remmina__file_8c_html_a85ca1ca2d0bf9ef29e490c6f4527a954"><div class="ttname"><a href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a></div><div class="ttdeci">void remmina_file_set_string(RemminaFile *remminafile, const gchar *setting, const gchar *value)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00463">remmina_file.c:463</a></div></div>
+<div class="ttc" id="remmina__file_8c_html_a85ca1ca2d0bf9ef29e490c6f4527a954"><div class="ttname"><a href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a></div><div class="ttdeci">void remmina_file_set_string(RemminaFile *remminafile, const gchar *setting, const gchar *value)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00469">remmina_file.c:469</a></div></div>
<div class="ttc" id="remmina__ssh_8h_html_aaaf171c31b73f06f1026239253d9f6b9"><div class="ttname"><a href="remmina__ssh_8h.html#aaaf171c31b73f06f1026239253d9f6b9">remmina_sftp_free</a></div><div class="ttdeci">void remmina_sftp_free(RemminaSFTP *sftp)</div></div>
<div class="ttc" id="remmina__ssh_8h_html_a77867ab4129f63159b37bca3b652a798a78cac65c66c1f72592488c7c5728ea14"><div class="ttname"><a href="remmina__ssh_8h.html#a77867ab4129f63159b37bca3b652a798a78cac65c66c1f72592488c7c5728ea14">REMMINA_SSH_TUNNEL_OPEN</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__ssh_8h_source.html#l00142">remmina_ssh.h:142</a></div></div>
<div class="ttc" id="remmina__ssh_8c_html_a1cffe594c5d4e018e846308a11c8d05f"><div class="ttname"><a href="remmina__ssh_8c.html#a1cffe594c5d4e018e846308a11c8d05f">node_t</a></div><div class="ttdeci">struct item node_t</div></div>
diff --git a/public/remmina__ssh__plugin_8c_source.html b/public/remmina__ssh__plugin_8c_source.html
index 452a80cb7..f06480803 100644
--- a/public/remmina__ssh__plugin_8c_source.html
+++ b/public/remmina__ssh__plugin_8c_source.html
@@ -114,7 +114,7 @@ $(document).ready(function(){initNavTree('remmina__ssh__plugin_8c_source.html','
<div class="ttc" id="remmina__ssh__plugin_8c_html_adbdcef549ad5b294357013e807c69240"><div class="ttname"><a href="remmina__ssh__plugin_8c.html#adbdcef549ad5b294357013e807c69240">remmina_plugin_ssh_vte_decrease_font</a></div><div class="ttdeci">void remmina_plugin_ssh_vte_decrease_font(GtkMenuItem *menuitem, gpointer vte)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__ssh__plugin_8c_source.html#l00506">remmina_ssh_plugin.c:506</a></div></div>
<div class="ttc" id="struct___remmina_color_pref_html"><div class="ttname"><a href="struct___remmina_color_pref.html">_RemminaColorPref</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00105">remmina_pref.h:105</a></div></div>
<div class="ttc" id="struct___remmina_color_pref_html_a2a14fc38e73351f9009fe155dd859808"><div class="ttname"><a href="struct___remmina_color_pref.html#a2a14fc38e73351f9009fe155dd859808">_RemminaColorPref::color0</a></div><div class="ttdeci">gchar * color0</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00114">remmina_pref.h:114</a></div></div>
-<div class="ttc" id="remmina__file_8c_html_a52a0986eaf54c9e606ce9cdf8bb57e60"><div class="ttname"><a href="remmina__file_8c.html#a52a0986eaf54c9e606ce9cdf8bb57e60">remmina_file_dup_temp_protocol</a></div><div class="ttdeci">RemminaFile * remmina_file_dup_temp_protocol(RemminaFile *remminafile, const gchar *new_protocol)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00888">remmina_file.c:888</a></div></div>
+<div class="ttc" id="remmina__file_8c_html_a52a0986eaf54c9e606ce9cdf8bb57e60"><div class="ttname"><a href="remmina__file_8c.html#a52a0986eaf54c9e606ce9cdf8bb57e60">remmina_file_dup_temp_protocol</a></div><div class="ttdeci">RemminaFile * remmina_file_dup_temp_protocol(RemminaFile *remminafile, const gchar *new_protocol)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00897">remmina_file.c:897</a></div></div>
<div class="ttc" id="struct___remmina_plugin_service_html_abaf7f57e2336f6e5c257e9c30fedc047"><div class="ttname"><a href="struct___remmina_plugin_service.html#abaf7f57e2336f6e5c257e9c30fedc047">_RemminaPluginService::protocol_plugin_set_width</a></div><div class="ttdeci">void(* protocol_plugin_set_width)(RemminaProtocolWidget *gp, gint width)</div><div class="ttdef"><b>Definition:</b> <a href="plugin_8h_source.html#l00169">plugin.h:169</a></div></div>
<div class="ttc" id="struct___remmina_ssh_search_html_af30971fb9e025ca075cd2a4a857ad57c"><div class="ttname"><a href="struct___remmina_ssh_search.html#af30971fb9e025ca075cd2a4a857ad57c">_RemminaSshSearch::search_prev_button</a></div><div class="ttdeci">GtkWidget * search_prev_button</div><div class="ttdef"><b>Definition:</b> <a href="remmina__ssh__plugin_8c_source.html#l00210">remmina_ssh_plugin.c:210</a></div></div>
<div class="ttc" id="struct___remmina_color_pref_html_a4ad947d133d2aa2c94756aacb5031e79"><div class="ttname"><a href="struct___remmina_color_pref.html#a4ad947d133d2aa2c94756aacb5031e79">_RemminaColorPref::color14</a></div><div class="ttdeci">gchar * color14</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00128">remmina_pref.h:128</a></div></div>
@@ -162,7 +162,7 @@ $(document).ready(function(){initNavTree('remmina__ssh__plugin_8c_source.html','
<div class="ttc" id="remmina__ssh__plugin_8c_html_a01bb81cfc23add39c9260e888ef1d88f"><div class="ttname"><a href="remmina__ssh__plugin_8c.html#a01bb81cfc23add39c9260e888ef1d88f">remmina_plugin_ssh_open_connection</a></div><div class="ttdeci">static gboolean remmina_plugin_ssh_open_connection(RemminaProtocolWidget *gp)</div><div class="ttdoc">Initialize the main window properties and the pthread. </div><div class="ttdef"><b>Definition:</b> <a href="remmina__ssh__plugin_8c_source.html#l01287">remmina_ssh_plugin.c:1287</a></div></div>
<div class="ttc" id="struct___remmina_plugin_service_html_ab212bed4baf8cba148fadb5773148ad6"><div class="ttname"><a href="struct___remmina_plugin_service.html#ab212bed4baf8cba148fadb5773148ad6">_RemminaPluginService::protocol_plugin_signal_connection_opened</a></div><div class="ttdeci">void(* protocol_plugin_signal_connection_opened)(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="plugin_8h_source.html#l00186">plugin.h:186</a></div></div>
<div class="ttc" id="types_8h_html_a77ae46c4fd739dcd8e819fe9cdae27c5a645d9a32b55325b3672e265a64d0a507"><div class="ttname"><a href="types_8h.html#a77ae46c4fd739dcd8e819fe9cdae27c5a645d9a32b55325b3672e265a64d0a507">REMMINA_PROTOCOL_FEATURE_TYPE_TOOL</a></div><div class="ttdef"><b>Definition:</b> <a href="types_8h_source.html#l00049">types.h:49</a></div></div>
-<div class="ttc" id="remmina__file_8c_html_afd8b12f3d84b4e201b9f465d5b8e0d03"><div class="ttname"><a href="remmina__file_8c.html#afd8b12f3d84b4e201b9f465d5b8e0d03">remmina_file_format_properties</a></div><div class="ttdeci">gchar * remmina_file_format_properties(RemminaFile *remminafile, const gchar *setting)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00552">remmina_file.c:552</a></div></div>
+<div class="ttc" id="remmina__file_8c_html_afd8b12f3d84b4e201b9f465d5b8e0d03"><div class="ttname"><a href="remmina__file_8c.html#afd8b12f3d84b4e201b9f465d5b8e0d03">remmina_file_format_properties</a></div><div class="ttdeci">gchar * remmina_file_format_properties(RemminaFile *remminafile, const gchar *setting)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00561">remmina_file.c:561</a></div></div>
<div class="ttc" id="struct___remmina_color_pref_html_a5ae99dc78a80baa14e0407983077c500"><div class="ttname"><a href="struct___remmina_color_pref.html#a5ae99dc78a80baa14e0407983077c500">_RemminaColorPref::cursor</a></div><div class="ttdeci">gchar * cursor</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00108">remmina_pref.h:108</a></div></div>
<div class="ttc" id="remmina__ssh__plugin_8c_html_ac54051cfe6fedf5d60160f2540917718"><div class="ttname"><a href="remmina__ssh__plugin_8c.html#ac54051cfe6fedf5d60160f2540917718">remmina_plugin_ssh_on_size_allocate</a></div><div class="ttdeci">static gboolean remmina_plugin_ssh_on_size_allocate(GtkWidget *widget, GtkAllocation *alloc, RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__ssh__plugin_8c_source.html#l00448">remmina_ssh_plugin.c:448</a></div></div>
<div class="ttc" id="remmina__ssh_8h_html_a316f97b879e147ec52967344f6ad1d84"><div class="ttname"><a href="remmina__ssh_8h.html#a316f97b879e147ec52967344f6ad1d84">remmina_ssh_shell_free</a></div><div class="ttdeci">void remmina_ssh_shell_free(RemminaSSHShell *shell)</div></div>
@@ -227,7 +227,7 @@ $(document).ready(function(){initNavTree('remmina__ssh__plugin_8c_source.html','
<div class="ttc" id="struct___remmina_ssh_search_html_ab9a8a6aebee01778f250adf601ed385c"><div class="ttname"><a href="struct___remmina_ssh_search.html#ab9a8a6aebee01778f250adf601ed385c">_RemminaSshSearch::parent</a></div><div class="ttdeci">GtkWidget * parent</div><div class="ttdef"><b>Definition:</b> <a href="remmina__ssh__plugin_8c_source.html#l00205">remmina_ssh_plugin.c:205</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_af9c8b60418a9dc795230e4ebb084f850"><div class="ttname"><a href="struct___remmina_pref.html#af9c8b60418a9dc795230e4ebb084f850">_RemminaPref::vte_lines</a></div><div class="ttdeci">gint vte_lines</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00201">remmina_pref.h:201</a></div></div>
<div class="ttc" id="remmina__ssh__plugin_8c_html_a31cf1c896508adf4f8f43f70d8e8f599"><div class="ttname"><a href="remmina__ssh__plugin_8c.html#a31cf1c896508adf4f8f43f70d8e8f599">remmina_plugin_ssh_query_feature</a></div><div class="ttdeci">static gboolean remmina_plugin_ssh_query_feature(RemminaProtocolWidget *gp, const RemminaProtocolFeature *feature)</div><div class="ttdoc">Not used by the plugin. </div><div class="ttdef"><b>Definition:</b> <a href="remmina__ssh__plugin_8c_source.html#l01313">remmina_ssh_plugin.c:1313</a></div></div>
-<div class="ttc" id="remmina__file_8c_html_a4884356c195dcfb4ceacf641a1e74e66"><div class="ttname"><a href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a></div><div class="ttdeci">gint remmina_file_get_int(RemminaFile *remminafile, const gchar *setting, gint default_value)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00594">remmina_file.c:594</a></div></div>
+<div class="ttc" id="remmina__file_8c_html_a4884356c195dcfb4ceacf641a1e74e66"><div class="ttname"><a href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a></div><div class="ttdeci">gint remmina_file_get_int(RemminaFile *remminafile, const gchar *setting, gint default_value)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00603">remmina_file.c:603</a></div></div>
<div class="ttc" id="struct___remmina_ssh_search_html_a9b72b310751ac148d5c55b0f2a04a300"><div class="ttname"><a href="struct___remmina_ssh_search.html#a9b72b310751ac148d5c55b0f2a04a300">_RemminaSshSearch::revealer</a></div><div class="ttdeci">GtkWidget * revealer</div><div class="ttdef"><b>Definition:</b> <a href="remmina__ssh__plugin_8c_source.html#l00218">remmina_ssh_plugin.c:218</a></div></div>
<div class="ttc" id="struct___remmina_color_pref_html_ab2b41853bdaaefa3968017819c19d316"><div class="ttname"><a href="struct___remmina_color_pref.html#ab2b41853bdaaefa3968017819c19d316">_RemminaColorPref::color3</a></div><div class="ttdeci">gchar * color3</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00117">remmina_pref.h:117</a></div></div>
<div class="ttc" id="remmina__ssh__plugin_8c_html_a9cc4363a5dd981de398aca34155b38c0"><div class="ttname"><a href="remmina__ssh__plugin_8c.html#a9cc4363a5dd981de398aca34155b38c0">xterm_palette</a></div><div class="ttdeci">const GdkRGBA xterm_palette[PALETTE_SIZE]</div><div class="ttdef"><b>Definition:</b> <a href="remmina__ssh__plugin_8c_source.html#l00181">remmina_ssh_plugin.c:181</a></div></div>
diff --git a/public/remmina__stats_8c_source.html b/public/remmina__stats_8c_source.html
index 6ac2cb45e..7f0df968d 100644
--- a/public/remmina__stats_8c_source.html
+++ b/public/remmina__stats_8c_source.html
@@ -87,7 +87,7 @@ $(document).ready(function(){initNavTree('remmina__stats_8c_source.html','');});
</div><!--header-->
<div class="contents">
<a href="remmina__stats_8c.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * Remmina - The GTK+ Remote Desktop Client</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> * Copyright (C) 2016-2022 Antenore Gatta, Giovanni Panozzo</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * (at your option) any later version.</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> * along with this program; if not, write to the Free Software</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * Foundation, Inc., 51 Franklin Street, Fifth Floor,</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> * Boston, MA 02110-1301, USA.</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> * In addition, as a special exception, the copyright holders give</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment"> * permission to link the code of portions of this program with the</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="comment"> * OpenSSL library under certain conditions as described in each</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment"> * individual source file, and distribute linked combinations</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"> * including the two.</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> * You must obey the GNU General Public License in all respects</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> * for all of the code used other than OpenSSL. * If you modify</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * file(s) with this exception, you may extend this exception to your</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> * version of the file(s), but you are not obligated to do so. * If you</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment"> * do not wish to do so, delete this exception statement from your</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="comment"> * version. * If you delete this exception statement from all source</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="comment"> * files in the program, then also delete it here.</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;<span class="preprocessor">#include &quot;config.h&quot;</span></div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;<span class="preprocessor">#include &lt;string.h&gt;</span></div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;<span class="preprocessor">#include &lt;sys/utsname.h&gt;</span></div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;<span class="preprocessor">#include &lt;unistd.h&gt;</span></div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;<span class="preprocessor">#include &lt;glib/gi18n.h&gt;</span></div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;<span class="preprocessor">#include &lt;glib/gstdio.h&gt;</span></div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;<span class="preprocessor">#include &lt;gtk/gtk.h&gt;</span></div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina_8h.html">remmina.h</a>&quot;</span></div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__file_8h.html">remmina_file.h</a>&quot;</span></div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__file__manager_8h.html">remmina_file_manager.h</a>&quot;</span></div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__icon_8h.html">remmina_icon.h</a>&quot;</span></div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__log_8h.html">remmina_log.h</a>&quot;</span></div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__pref_8h.html">remmina_pref.h</a>&quot;</span></div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__sysinfo_8h.html">remmina_sysinfo.h</a>&quot;</span></div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__utils_8h.html">remmina_utils.h</a>&quot;</span></div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__trace__calls_8h.html">remmina/remmina_trace_calls.h</a>&quot;</span></div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__plugin__manager_8h.html">remmina_plugin_manager.h</a>&quot;</span></div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;<span class="preprocessor">#ifdef GDK_WINDOWING_WAYLAND</span></div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160;<span class="preprocessor"> #include &lt;gdk/gdkwayland.h&gt;</span></div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;<span class="preprocessor">#ifdef GDK_WINDOWING_X11</span></div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;<span class="preprocessor"> #include &lt;gdk/gdkx.h&gt;</span></div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__stats_8h.html">remmina_stats.h</a>&quot;</span></div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160;</div><div class="line"><a name="l00164"></a><span class="lineno"><a class="line" href="struct_profiles_data.html"> 164</a></span>&#160;<span class="keyword">struct </span><a class="code" href="struct_profiles_data.html">ProfilesData</a> {</div><div class="line"><a name="l00165"></a><span class="lineno"><a class="line" href="struct_profiles_data.html#af82cb4649acce0ce21aefca9eb6430ef"> 165</a></span>&#160; GHashTable *<a class="code" href="struct_profiles_data.html#af82cb4649acce0ce21aefca9eb6430ef">proto_count</a>;</div><div class="line"><a name="l00166"></a><span class="lineno"><a class="line" href="struct_profiles_data.html#a010a740c75d19daf63572f87565ae956"> 166</a></span>&#160; GHashTable *<a class="code" href="struct_profiles_data.html#a010a740c75d19daf63572f87565ae956">proto_date</a>;</div><div class="line"><a name="l00167"></a><span class="lineno"><a class="line" href="struct_profiles_data.html#a7d3134f43d61603be7b021e62305633a"> 167</a></span>&#160; <span class="keyword">const</span> gchar *<a class="code" href="struct_profiles_data.html#a7d3134f43d61603be7b021e62305633a">protocol</a>; </div><div class="line"><a name="l00168"></a><span class="lineno"><a class="line" href="struct_profiles_data.html#a1078e772be8dfc9aad54d3f14efd96c4"> 168</a></span>&#160; <span class="keyword">const</span> gchar *<a class="code" href="struct_profiles_data.html#a1078e772be8dfc9aad54d3f14efd96c4">pdatestr</a>; </div><div class="line"><a name="l00169"></a><span class="lineno"><a class="line" href="struct_profiles_data.html#afc9e80a1835d8ec7e84ee74b82a0d680"> 169</a></span>&#160; gint <a class="code" href="struct_profiles_data.html#afc9e80a1835d8ec7e84ee74b82a0d680">pcount</a>;</div><div class="line"><a name="l00170"></a><span class="lineno"><a class="line" href="struct_profiles_data.html#a16267e0d71d796422278afdeba50c13b"> 170</a></span>&#160; gchar <a class="code" href="struct_profiles_data.html#a16267e0d71d796422278afdeba50c13b">datestr</a>;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;};</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;</div><div class="line"><a name="l00173"></a><span class="lineno"><a class="line" href="remmina__stats_8c.html#a43133d5e00f481d315ef0d58cb52e70a"> 173</a></span>&#160;JsonNode *<a class="code" href="remmina__stats_8c.html#a43133d5e00f481d315ef0d58cb52e70a">remmina_stats_get_os_info</a>()</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160;{</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; JsonBuilder *b;</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; JsonNode *r;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; gchar *kernel_name;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; gchar *kernel_release;</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; gchar *kernel_arch;</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; gchar *id;</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; gchar *description;</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; GHashTable *etc_release;</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; gchar *release;</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; gchar *codename;</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; GHashTableIter iter;</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; gchar *key, *value;</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160;</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; b = json_builder_new();</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; json_builder_begin_object(b);</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160;</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; json_builder_set_member_name(b, <span class="stringliteral">&quot;kernel_name&quot;</span>);</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; kernel_name = g_strdup_printf(<span class="stringliteral">&quot;%s&quot;</span>, <a class="code" href="remmina__utils_8c.html#abfc722d07d9936711794411bfbed0522">remmina_utils_get_kernel_name</a>());</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <span class="keywordflow">if</span> (!kernel_name || kernel_name[0] == <span class="charliteral">&#39;\0&#39;</span>) {</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; json_builder_add_null_value(b);</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; }<span class="keywordflow">else</span> {</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; json_builder_add_string_value(b, kernel_name);</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; }</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; g_free(kernel_name);</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160;</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; json_builder_set_member_name(b, <span class="stringliteral">&quot;kernel_release&quot;</span>);</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; kernel_release = g_strdup_printf(<span class="stringliteral">&quot;%s&quot;</span>, <a class="code" href="remmina__utils_8c.html#a57603aa88df56e77e1a6de0f215f21aa">remmina_utils_get_kernel_release</a>());</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <span class="keywordflow">if</span> (!kernel_release || kernel_release[0] == <span class="charliteral">&#39;\0&#39;</span>) {</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; json_builder_add_null_value(b);</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; }<span class="keywordflow">else</span> {</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; json_builder_add_string_value(b, kernel_release);</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; }</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; g_free(kernel_release);</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160;</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; json_builder_set_member_name(b, <span class="stringliteral">&quot;kernel_arch&quot;</span>);</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; kernel_arch = g_strdup_printf(<span class="stringliteral">&quot;%s&quot;</span>, <a class="code" href="remmina__utils_8c.html#a116e7cd4565386fe531d3a6d1a3d3730">remmina_utils_get_kernel_arch</a>());</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <span class="keywordflow">if</span> (!kernel_arch || kernel_arch[0] == <span class="charliteral">&#39;\0&#39;</span>) {</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; json_builder_add_null_value(b);</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; }<span class="keywordflow">else</span> {</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; json_builder_add_string_value(b, kernel_arch);</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; }</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; g_free(kernel_arch);</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160;</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; json_builder_set_member_name(b, <span class="stringliteral">&quot;lsb_distributor&quot;</span>);</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <span class="keywordtype">id</span> = <a class="code" href="remmina__utils_8c.html#aa768b6fe171695d212da4c6eaf74cf22">remmina_utils_get_lsb_id</a>();</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <span class="keywordflow">if</span> (!<span class="keywordtype">id</span> || <span class="keywordtype">id</span>[0] == <span class="charliteral">&#39;\0&#39;</span>) {</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; json_builder_add_null_value(b);</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; }<span class="keywordflow">else</span> {</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; json_builder_add_string_value(b, <span class="keywordtype">id</span>);</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; }</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; g_free(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160;</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; json_builder_set_member_name(b, <span class="stringliteral">&quot;lsb_distro_description&quot;</span>);</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; description = <a class="code" href="remmina__utils_8c.html#ac00cb21c5cb5efcf7afc6eeae2147a75">remmina_utils_get_lsb_description</a>();</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <span class="keywordflow">if</span> (!description || description[0] == <span class="charliteral">&#39;\0&#39;</span>) {</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; json_builder_add_null_value(b);</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; }<span class="keywordflow">else</span> {</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; json_builder_add_string_value(b, description);</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; }</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; g_free(description);</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160;</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; json_builder_set_member_name(b, <span class="stringliteral">&quot;lsb_distro_release&quot;</span>);</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; release = <a class="code" href="remmina__utils_8c.html#a5ee50df5d7585d229a154a712c9161ca">remmina_utils_get_lsb_release</a>();</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; <span class="keywordflow">if</span> (!release || release[0] == <span class="charliteral">&#39;\0&#39;</span>) {</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; json_builder_add_null_value(b);</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; }<span class="keywordflow">else</span> {</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; json_builder_add_string_value(b, release);</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; }</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; g_free(release);</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160;</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; json_builder_set_member_name(b, <span class="stringliteral">&quot;lsb_distro_codename&quot;</span>);</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; codename = <a class="code" href="remmina__utils_8c.html#a2b4dbb0da7c8ba4bd86877097b85d10c">remmina_utils_get_lsb_codename</a>();</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <span class="keywordflow">if</span> (!codename || codename[0] == <span class="charliteral">&#39;\0&#39;</span>) {</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; json_builder_add_null_value(b);</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; }<span class="keywordflow">else</span> {</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; json_builder_add_string_value(b, codename);</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; }</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; g_free(codename);</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160;</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; etc_release = <a class="code" href="remmina__utils_8c.html#a54cee350c4ecc6e77af835c4ba90df4c">remmina_utils_get_etc_release</a>();</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; json_builder_set_member_name(b, <span class="stringliteral">&quot;etc_release&quot;</span>);</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; <span class="keywordflow">if</span> (etc_release) {</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; json_builder_begin_object(b);</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; g_hash_table_iter_init (&amp;iter, etc_release);</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <span class="keywordflow">while</span> (g_hash_table_iter_next (&amp;iter, (gpointer)&amp;key, (gpointer)&amp;value)) {</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; json_builder_set_member_name(b, key);</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; json_builder_add_string_value(b, value);</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; }</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; json_builder_end_object(b);</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; g_hash_table_remove_all(etc_release);</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; g_hash_table_unref(etc_release);</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; }<span class="keywordflow">else</span> {</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; json_builder_add_null_value(b);</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; }</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160;</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; json_builder_end_object(b);</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; r = json_builder_get_root(b);</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; g_object_unref(b);</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <span class="keywordflow">return</span> r;</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160;}</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160;</div><div class="line"><a name="l00291"></a><span class="lineno"><a class="line" href="remmina__stats_8c.html#a42f0554bf8eacb253a023d601cd59648"> 291</a></span>&#160;JsonNode *<a class="code" href="remmina__stats_8c.html#a42f0554bf8eacb253a023d601cd59648">remmina_stats_get_user_env</a>()</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160;{</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; JsonBuilder *b;</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; JsonNode *r;</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160;</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; gchar *language;</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160;</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; language = <a class="code" href="remmina__utils_8c.html#a0f10e190a6dd212fcb0cf36ce81c8324">remmina_utils_get_lang</a>();</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160;</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; b = json_builder_new();</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; json_builder_begin_object(b);</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; json_builder_set_member_name(b, <span class="stringliteral">&quot;language&quot;</span>);</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160;</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; json_builder_add_string_value(b, language);</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160;</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; json_builder_end_object(b);</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; r = json_builder_get_root(b);</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; g_object_unref(b);</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; <span class="keywordflow">return</span> r;</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160;</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160;}</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160;</div><div class="line"><a name="l00314"></a><span class="lineno"><a class="line" href="remmina__stats_8c.html#ab248458a3face2634bab909ffeb8291e"> 314</a></span>&#160;JsonNode *<a class="code" href="remmina__stats_8c.html#ab248458a3face2634bab909ffeb8291e">remmina_stats_get_version</a>()</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160;{</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; JsonBuilder *b;</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; JsonNode *r;</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; gchar *flatpak_info;</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160;</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; b = json_builder_new();</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; json_builder_begin_object(b);</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; json_builder_set_member_name(b, <span class="stringliteral">&quot;version&quot;</span>);</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; json_builder_add_string_value(b, VERSION);</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; json_builder_set_member_name(b, <span class="stringliteral">&quot;git_revision&quot;</span>);</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; json_builder_add_string_value(b, REMMINA_GIT_REVISION);</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; json_builder_set_member_name(b, <span class="stringliteral">&quot;snap_build&quot;</span>);</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160;<span class="preprocessor">#ifdef SNAP_BUILD</span></div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; json_builder_add_int_value(b, 1);</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; json_builder_add_int_value(b, 0);</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160;</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; json_builder_set_member_name(b, <span class="stringliteral">&quot;flatpak_build&quot;</span>);</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; <span class="comment">/* Flatpak sandbox should contain the file ${XDG_RUNTIME_DIR}/flatpak-info */</span></div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; flatpak_info = g_build_filename(g_get_user_runtime_dir(), <span class="stringliteral">&quot;flatpak-info&quot;</span>, NULL);</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; <span class="keywordflow">if</span> (g_file_test(flatpak_info, G_FILE_TEST_EXISTS)) {</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; json_builder_add_int_value(b, 1);</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; json_builder_add_int_value(b, 0);</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; }</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; g_free(flatpak_info);</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160;</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; json_builder_end_object(b);</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; r = json_builder_get_root(b);</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; g_object_unref(b);</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; <span class="keywordflow">return</span> r;</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160;}</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160;</div><div class="line"><a name="l00356"></a><span class="lineno"><a class="line" href="remmina__stats_8c.html#aed3a8dd3e01a05d96d6cf3625bb28731"> 356</a></span>&#160;JsonNode *<a class="code" href="remmina__stats_8c.html#aed3a8dd3e01a05d96d6cf3625bb28731">remmina_stats_get_gtk_version</a>()</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160;{</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; JsonBuilder *b;</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; JsonNode *r;</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160;</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; b = json_builder_new();</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; json_builder_begin_object(b);</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; json_builder_set_member_name(b, <span class="stringliteral">&quot;major&quot;</span>);</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; json_builder_add_int_value(b, gtk_get_major_version());</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; json_builder_set_member_name(b, <span class="stringliteral">&quot;minor&quot;</span>);</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; json_builder_add_int_value(b, gtk_get_minor_version());</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; json_builder_set_member_name(b, <span class="stringliteral">&quot;micro&quot;</span>);</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; json_builder_add_int_value(b, gtk_get_micro_version());</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; json_builder_end_object(b);</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; r = json_builder_get_root(b);</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; g_object_unref(b);</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; <span class="keywordflow">return</span> r;</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160;</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160;}</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160;</div><div class="line"><a name="l00381"></a><span class="lineno"><a class="line" href="remmina__stats_8c.html#a73fbf1064af209f1f7272d737168971c"> 381</a></span>&#160;JsonNode *<a class="code" href="remmina__stats_8c.html#a73fbf1064af209f1f7272d737168971c">remmina_stats_get_gtk_backend</a>()</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160;{</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; JsonNode *r;</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; GdkDisplay *disp;</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; gchar *bkend;</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160;</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; disp = gdk_display_get_default();</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160;</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160;<span class="preprocessor">#ifdef GDK_WINDOWING_WAYLAND</span></div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; <span class="keywordflow">if</span> (GDK_IS_WAYLAND_DISPLAY(disp)) {</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; bkend = <span class="stringliteral">&quot;Wayland&quot;</span>;</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; }<span class="keywordflow">else</span></div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160;<span class="preprocessor">#ifdef GDK_WINDOWING_X11</span></div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; <span class="keywordflow">if</span> (GDK_IS_X11_DISPLAY(disp)) {</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; bkend = <span class="stringliteral">&quot;X11&quot;</span>;</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; } <span class="keywordflow">else</span></div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; bkend = <span class="stringliteral">&quot;n/a&quot;</span>;</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160;</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; r = json_node_alloc();</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; json_node_init_string(r, bkend);</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160;</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; <span class="keywordflow">return</span> r;</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160;</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160;}</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160;</div><div class="line"><a name="l00413"></a><span class="lineno"><a class="line" href="remmina__stats_8c.html#ae596da7901fb3b45b7290a1d70b3ea3a"> 413</a></span>&#160;JsonNode *<a class="code" href="remmina__stats_8c.html#ae596da7901fb3b45b7290a1d70b3ea3a">remmina_stats_get_wm_name</a>()</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160;{</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; JsonBuilder *b;</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; JsonNode *r;</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; gchar *wmver;</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; gchar *wmname;</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160;</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; b = json_builder_new();</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; json_builder_begin_object(b);</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160;</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; json_builder_set_member_name(b, <span class="stringliteral">&quot;window_manager&quot;</span>);</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160;</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; wmver = <a class="code" href="remmina__sysinfo_8c.html#a79fd36823613c320001f0cdd2a97490f">remmina_sysinfo_get_gnome_shell_version</a>();</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; <span class="keywordflow">if</span> (!wmver || wmver[0] == <span class="charliteral">&#39;\0&#39;</span>) {</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;GNOME Shell not found&quot;</span>);</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; }<span class="keywordflow">else</span> {</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;GNOME Shell version: %s\n&quot;</span>, wmver);</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; json_builder_add_string_value(b, <span class="stringliteral">&quot;GNOME Shell&quot;</span>);</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; json_builder_set_member_name(b, <span class="stringliteral">&quot;gnome_shell_ver&quot;</span>);</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; json_builder_add_string_value(b, wmver);</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; <span class="keywordflow">goto</span> end;</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; }</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; g_free(wmver);</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160;</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; wmname = <a class="code" href="remmina__sysinfo_8c.html#ae4441d62bb4075d1618b5750fea064b4">remmina_sysinfo_get_wm_name</a>();</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; <span class="keywordflow">if</span> (!wmname || wmname[0] == <span class="charliteral">&#39;\0&#39;</span>) {</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Cannot determine the window manger name&quot;</span>);</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; json_builder_add_string_value(b, <span class="stringliteral">&quot;n/a&quot;</span>);</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; }<span class="keywordflow">else</span> {</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Window manger names %s&quot;</span>, wmname);</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; json_builder_add_string_value(b, wmname);</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; }</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; g_free(wmname);</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160;</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; end:</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; json_builder_end_object(b);</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; r = json_builder_get_root(b);</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; g_object_unref(b);</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; <span class="keywordflow">return</span> r;</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160;}</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160;</div><div class="line"><a name="l00457"></a><span class="lineno"><a class="line" href="remmina__stats_8c.html#aee2ea5acceb2fbc3aa4ff21d136c5734"> 457</a></span>&#160;JsonNode *<a class="code" href="remmina__stats_8c.html#aee2ea5acceb2fbc3aa4ff21d136c5734">remmina_stats_get_indicator</a>()</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160;{</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; JsonBuilder *b;</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; JsonNode *r;</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; gboolean sni; </div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; b = json_builder_new();</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; json_builder_begin_object(b);</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160;</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; json_builder_set_member_name(b, <span class="stringliteral">&quot;appindicator_supported&quot;</span>);</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; sni = <a class="code" href="remmina__sysinfo_8c.html#ae6ecf91edb905f3b2b39e33e05325590">remmina_sysinfo_is_appindicator_available</a>();</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; <span class="keywordflow">if</span> (sni) {</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; json_builder_add_int_value(b, 1);</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; json_builder_set_member_name(b, <span class="stringliteral">&quot;appindicator_compiled&quot;</span>);</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160;<span class="preprocessor">#ifdef HAVE_LIBAPPINDICATOR</span></div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160;</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; json_builder_add_int_value(b, 1);</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160;</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; json_builder_add_int_value(b, 0);</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; }</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; json_builder_add_int_value(b, 0);</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; json_builder_set_member_name(b, <span class="stringliteral">&quot;icon_is_active&quot;</span>);</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="remmina__icon_8c.html#a42f087b679b43b8a1d36cd9e9781a8b6">remmina_icon_is_available</a>()) {</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; json_builder_add_int_value(b, 1);</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; json_builder_set_member_name(b, <span class="stringliteral">&quot;appindicator_type&quot;</span>);</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160;<span class="preprocessor">#ifdef HAVE_LIBAPPINDICATOR</span></div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160;</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; json_builder_add_string_value(b, <span class="stringliteral">&quot;AppIndicator on GtkStatusIcon/xembed&quot;</span>);</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160;</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; json_builder_add_string_value(b, <span class="stringliteral">&quot;Remmina icon on GtkStatusIcon/xembed&quot;</span>);</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; }<span class="keywordflow">else</span> {</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; json_builder_add_int_value(b, 0);</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; }</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; json_builder_end_object(b);</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; r = json_builder_get_root(b);</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; g_object_unref(b);</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; <span class="keywordflow">return</span> r;</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160;}</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160;</div><div class="line"><a name="l00511"></a><span class="lineno"><a class="line" href="remmina__stats_8c.html#a1dff2b06d5acefc9bd2f25508ab45328"> 511</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__stats_8c.html#a1dff2b06d5acefc9bd2f25508ab45328">remmina_profiles_get_data</a>(<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile, gpointer user_data)</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160;{</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160;</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; gint count = 0;</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; gpointer <a class="code" href="struct_profiles_data.html#afc9e80a1835d8ec7e84ee74b82a0d680">pcount</a>, kpo;</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; gpointer pdate;</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; gchar *hday, *hmonth, *hyear;</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; gchar *pday, *pmonth, *pyear;</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160;</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; GDateTime *prof_gdate; </div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; GDateTime *pdata_gdate; </div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; <span class="keyword">struct </span><a class="code" href="struct_profiles_data.html">ProfilesData</a>* pdata;</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; pdata = (<span class="keyword">struct </span><a class="code" href="struct_profiles_data.html">ProfilesData</a>*)user_data;</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160;</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; pdata-&gt;<a class="code" href="struct_profiles_data.html#a7d3134f43d61603be7b021e62305633a">protocol</a> = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">&quot;protocol&quot;</span>);</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; <span class="comment">//pdata-&gt;pdatestr = remmina_file_get_string(remminafile, &quot;last_success&quot;);</span></div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; <span class="keyword">const</span> gchar *last_success = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">&quot;last_success&quot;</span>);</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; g_debug(<span class="stringliteral">&quot;%s date %s&quot;</span>, pdata-&gt;<a class="code" href="struct_profiles_data.html#a7d3134f43d61603be7b021e62305633a">protocol</a>, last_success);</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160;</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; prof_gdate = pdata_gdate = NULL;</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; <span class="keywordflow">if</span> (last_success &amp;&amp; last_success[0] != <span class="charliteral">&#39;\0&#39;</span> &amp;&amp; strlen(last_success) &gt;= 6) {</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; pyear = g_strdup_printf(<span class="stringliteral">&quot;%.4s&quot;</span>, last_success);</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; pmonth = g_strdup_printf(<span class="stringliteral">&quot;%.2s&quot;</span>, last_success + 4);</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; pday = g_strdup_printf(<span class="stringliteral">&quot;%.2s&quot;</span>, last_success + 6);</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; prof_gdate = g_date_time_new_local(</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; atoi(pyear),</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; atoi(pmonth),</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; atoi(pday), 0, 0, 0);</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; g_free(pyear);</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; g_free(pmonth);</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; g_free(pday);</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; }</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160;</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160;</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; <span class="keywordflow">if</span> (pdata-&gt;<a class="code" href="struct_profiles_data.html#a7d3134f43d61603be7b021e62305633a">protocol</a> &amp;&amp; pdata-&gt;<a class="code" href="struct_profiles_data.html#a7d3134f43d61603be7b021e62305633a">protocol</a>[0] != <span class="charliteral">&#39;\0&#39;</span>) {</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; <span class="keywordflow">if</span> (g_hash_table_lookup_extended(pdata-&gt;<a class="code" href="struct_profiles_data.html#af82cb4649acce0ce21aefca9eb6430ef">proto_count</a>, pdata-&gt;<a class="code" href="struct_profiles_data.html#a7d3134f43d61603be7b021e62305633a">protocol</a>, &amp;kpo, &amp;pcount)) {</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; count = GPOINTER_TO_INT(pcount) + 1;</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; }<span class="keywordflow">else</span> {</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; count = 1;</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; g_hash_table_insert(pdata-&gt;<a class="code" href="struct_profiles_data.html#af82cb4649acce0ce21aefca9eb6430ef">proto_count</a>, g_strdup(pdata-&gt;<a class="code" href="struct_profiles_data.html#a7d3134f43d61603be7b021e62305633a">protocol</a>), GINT_TO_POINTER(count));</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; }</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; g_hash_table_replace(pdata-&gt;<a class="code" href="struct_profiles_data.html#af82cb4649acce0ce21aefca9eb6430ef">proto_count</a>, g_strdup(pdata-&gt;<a class="code" href="struct_profiles_data.html#a7d3134f43d61603be7b021e62305633a">protocol</a>), GINT_TO_POINTER(count));</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; pdate = NULL;</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; <span class="keywordflow">if</span> (g_hash_table_lookup_extended(pdata-&gt;<a class="code" href="struct_profiles_data.html#a010a740c75d19daf63572f87565ae956">proto_date</a>, pdata-&gt;<a class="code" href="struct_profiles_data.html#a7d3134f43d61603be7b021e62305633a">protocol</a>, NULL, &amp;pdate)) {</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160;</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; pdata_gdate = NULL;</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; <span class="keywordflow">if</span> (pdate &amp;&amp; strlen(pdate) &gt;= 6) {</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; pdata-&gt;<a class="code" href="struct_profiles_data.html#a1078e772be8dfc9aad54d3f14efd96c4">pdatestr</a> = g_strdup(pdate);</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; hyear = g_strdup_printf(<span class="stringliteral">&quot;%.4s&quot;</span>, (<span class="keywordtype">char</span>*)pdate);</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; hmonth = g_strdup_printf(<span class="stringliteral">&quot;%.2s&quot;</span>, (<span class="keywordtype">char</span>*)pdate + 4);</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; hday = g_strdup_printf(<span class="stringliteral">&quot;%.2s&quot;</span>, (<span class="keywordtype">char</span>*)pdate + 6);</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; pdata_gdate = g_date_time_new_local(</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; atoi(hyear),</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; atoi(hmonth),</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; atoi(hday), 0, 0, 0);</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; g_free(hyear);</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; g_free(hmonth);</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; g_free(hday);</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; }</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160;</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; <span class="keywordflow">if</span> (prof_gdate != NULL &amp;&amp; pdata_gdate != NULL ) {</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; g_debug(<span class="stringliteral">&quot;Comparing dates&quot;</span>);</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; gint res = g_date_time_compare( pdata_gdate, prof_gdate );</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; <span class="keywordflow">if</span> (res &lt; 0 ) {</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; g_debug(<span class="stringliteral">&quot;hash date is less than profile date. Replacing date in the hashtable&quot;</span>);</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; g_hash_table_replace(pdata-&gt;<a class="code" href="struct_profiles_data.html#a010a740c75d19daf63572f87565ae956">proto_date</a>, g_strdup(pdata-&gt;<a class="code" href="struct_profiles_data.html#a7d3134f43d61603be7b021e62305633a">protocol</a>), g_strdup(last_success));</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; g_debug(<span class="stringliteral">&quot;profile date is less than hash date. Replacing date in the hashtable&quot;</span>);</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; g_hash_table_replace(pdata-&gt;<a class="code" href="struct_profiles_data.html#a010a740c75d19daf63572f87565ae956">proto_date</a>, g_strdup(pdata-&gt;<a class="code" href="struct_profiles_data.html#a7d3134f43d61603be7b021e62305633a">protocol</a>), g_strdup(pdata-&gt;<a class="code" href="struct_profiles_data.html#a1078e772be8dfc9aad54d3f14efd96c4">pdatestr</a>));</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; }</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160;</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; }</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; <span class="keywordflow">if</span> (prof_gdate == NULL &amp;&amp; pdata_gdate != NULL) {</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; g_debug(<span class="stringliteral">&quot;prof_gdate is NULL, replacing date in the hashtable&quot;</span>);</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; g_hash_table_replace(pdata-&gt;<a class="code" href="struct_profiles_data.html#a010a740c75d19daf63572f87565ae956">proto_date</a>, g_strdup(pdata-&gt;<a class="code" href="struct_profiles_data.html#a7d3134f43d61603be7b021e62305633a">protocol</a>), g_strdup(pdata-&gt;<a class="code" href="struct_profiles_data.html#a1078e772be8dfc9aad54d3f14efd96c4">pdatestr</a>));</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; }</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160;</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; <span class="keywordflow">if</span> (prof_gdate != NULL &amp;&amp; pdata_gdate == NULL) {</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; g_debug(<span class="stringliteral">&quot;pdata_gdate is NULL, replacing date in the hashtable&quot;</span>);</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; g_hash_table_replace(pdata-&gt;<a class="code" href="struct_profiles_data.html#a010a740c75d19daf63572f87565ae956">proto_date</a>, g_strdup(pdata-&gt;<a class="code" href="struct_profiles_data.html#a7d3134f43d61603be7b021e62305633a">protocol</a>), g_strdup(last_success));</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; }</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; <span class="keywordflow">if</span> ((prof_gdate == NULL &amp;&amp; pdata_gdate == NULL) &amp;&amp; pdata-&gt;<a class="code" href="struct_profiles_data.html#a1078e772be8dfc9aad54d3f14efd96c4">pdatestr</a>) {</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; g_debug(<span class="stringliteral">&quot;All dates are NULL, replacing date in the hashtable&quot;</span>);</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; g_hash_table_replace(pdata-&gt;<a class="code" href="struct_profiles_data.html#a010a740c75d19daf63572f87565ae956">proto_date</a>, g_strdup(pdata-&gt;<a class="code" href="struct_profiles_data.html#a7d3134f43d61603be7b021e62305633a">protocol</a>), NULL);</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; }</div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; <span class="keywordflow">if</span> (pdata-&gt;<a class="code" href="struct_profiles_data.html#a1078e772be8dfc9aad54d3f14efd96c4">pdatestr</a>) {</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; g_hash_table_replace(pdata-&gt;<a class="code" href="struct_profiles_data.html#a010a740c75d19daf63572f87565ae956">proto_date</a>, g_strdup(pdata-&gt;<a class="code" href="struct_profiles_data.html#a7d3134f43d61603be7b021e62305633a">protocol</a>), g_strdup(pdata-&gt;<a class="code" href="struct_profiles_data.html#a1078e772be8dfc9aad54d3f14efd96c4">pdatestr</a>));</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; }<span class="keywordflow">else</span> {</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; g_hash_table_replace(pdata-&gt;<a class="code" href="struct_profiles_data.html#a010a740c75d19daf63572f87565ae956">proto_date</a>, g_strdup(pdata-&gt;<a class="code" href="struct_profiles_data.html#a7d3134f43d61603be7b021e62305633a">protocol</a>), NULL);</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; }</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; }</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; }</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; g_debug(<span class="stringliteral">&quot;pdata set to %s protocol with last_success to %s&quot;</span>, pdata-&gt;<a class="code" href="struct_profiles_data.html#a7d3134f43d61603be7b021e62305633a">protocol</a>, pdata-&gt;<a class="code" href="struct_profiles_data.html#a1078e772be8dfc9aad54d3f14efd96c4">pdatestr</a>);</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; <span class="keywordflow">if</span> (pdata_gdate)</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; g_date_time_unref(pdata_gdate);</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; <span class="keywordflow">if</span> (prof_gdate)</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; g_date_time_unref(prof_gdate);</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160;}</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160;</div><div class="line"><a name="l00644"></a><span class="lineno"><a class="line" href="remmina__stats_8c.html#a65500d6b5d93cc7e3fc3d72329ff3847"> 644</a></span>&#160;JsonNode *<a class="code" href="remmina__stats_8c.html#a65500d6b5d93cc7e3fc3d72329ff3847">remmina_stats_get_profiles</a>()</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160;{</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160;</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160; JsonBuilder *b;</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160; JsonNode *r;</div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160; gchar *s;</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160;</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; gint profiles_count;</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; GHashTableIter pcountiter, pdateiter;</div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; gpointer pcountkey, pcountvalue;</div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160; gpointer pdatekey, pdatevalue;</div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160;</div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; <span class="keyword">struct </span><a class="code" href="struct_profiles_data.html">ProfilesData</a> *pdata;</div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160; pdata = g_malloc0(<span class="keyword">sizeof</span>(<span class="keyword">struct</span> <a class="code" href="struct_profiles_data.html">ProfilesData</a>));</div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160;</div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160; b = json_builder_new();</div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; json_builder_begin_object(b);</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160;</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; json_builder_set_member_name(b, <span class="stringliteral">&quot;profile_count&quot;</span>);</div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160;</div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160; pdata-&gt;<a class="code" href="struct_profiles_data.html#a010a740c75d19daf63572f87565ae956">proto_date</a> = g_hash_table_new_full(g_str_hash, g_str_equal,</div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160; (GDestroyNotify)g_free, (GDestroyNotify)g_free);</div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160; pdata-&gt;<a class="code" href="struct_profiles_data.html#af82cb4649acce0ce21aefca9eb6430ef">proto_count</a> = g_hash_table_new_full(g_str_hash, g_str_equal,</div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160; (GDestroyNotify)g_free, NULL);</div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160;</div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160; profiles_count = <a class="code" href="remmina__file__manager_8c.html#a55a717aafc046713380bd2c55f29165a">remmina_file_manager_iterate</a>(</div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160; (GFunc)<a class="code" href="remmina__stats_8c.html#a1dff2b06d5acefc9bd2f25508ab45328">remmina_profiles_get_data</a>,</div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160; (gpointer)pdata);</div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160; g_debug(<span class="stringliteral">&quot;Number of profiles: %d&quot;</span>, profiles_count);</div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160;</div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160; json_builder_add_int_value(b, profiles_count);</div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160;</div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160; g_hash_table_iter_init(&amp;pcountiter, pdata-&gt;proto_count);</div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160; <span class="keywordflow">while</span> (g_hash_table_iter_next(&amp;pcountiter, &amp;pcountkey, &amp;pcountvalue)) {</div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160; json_builder_set_member_name(b, (gchar*)pcountkey);</div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160; json_builder_add_int_value(b, GPOINTER_TO_INT(pcountvalue));</div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160; }</div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160;</div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160; g_hash_table_iter_init(&amp;pdateiter, pdata-&gt;proto_date);</div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160; <span class="keywordflow">while</span> (g_hash_table_iter_next(&amp;pdateiter, &amp;pdatekey, &amp;pdatevalue)) {</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160; s = g_strdup_printf(<span class="stringliteral">&quot;DATE_%s&quot;</span>, (gchar*)pdatekey);</div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160; g_debug(<span class="stringliteral">&quot;Protocol date label: %s&quot;</span>, s);</div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160; json_builder_set_member_name(b, s);</div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160; g_free(s);</div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160; json_builder_add_string_value(b, (gchar*)pdatevalue);</div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160; g_debug(<span class="stringliteral">&quot;Protocol date: %s&quot;</span>, (gchar*)pdatevalue);</div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160; }</div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160;</div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160; json_builder_end_object(b);</div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160; r = json_builder_get_root(b);</div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160; g_object_unref(b);</div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160;</div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160; g_hash_table_remove_all(pdata-&gt;proto_date);</div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160; g_hash_table_unref(pdata-&gt;proto_date);</div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160; g_hash_table_remove_all(pdata-&gt;proto_count);</div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160; g_hash_table_unref(pdata-&gt;proto_count);</div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160;</div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; g_free(pdata);</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160;</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; <span class="keywordflow">return</span> r;</div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160;}</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160;</div><div class="line"><a name="l00716"></a><span class="lineno"><a class="line" href="remmina__stats_8c.html#afe9ad8b63938e3486cf09ebbbe2e549c"> 716</a></span>&#160;JsonNode *<a class="code" href="remmina__stats_8c.html#afe9ad8b63938e3486cf09ebbbe2e549c">remmina_stats_get_secret_plugin</a>()</div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160;{</div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160;</div><div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160; JsonBuilder *b;</div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160; JsonNode *r;</div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160; <a class="code" href="struct___remmina_secret_plugin.html">RemminaSecretPlugin</a> *secret_plugin;</div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160; secret_plugin = <a class="code" href="remmina__plugin__manager_8c.html#ad380a98f6624aa8c830015c8b428b7b4">remmina_plugin_manager_get_secret_plugin</a>();</div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160;</div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160; b = json_builder_new();</div><div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160; json_builder_begin_object(b);</div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160;</div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160; <span class="keywordflow">if</span> (secret_plugin &amp;&amp; secret_plugin-&gt;<a class="code" href="struct___remmina_secret_plugin.html#a2123e14795b104f5fe8d77a4b7847261">is_service_available</a>) {</div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160; json_builder_set_member_name(b, <span class="stringliteral">&quot;plugin_name&quot;</span>);</div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160; json_builder_add_string_value(b, secret_plugin-&gt;<a class="code" href="struct___remmina_secret_plugin.html#a197b28d8b71ccb0c91ce8bf27690968a">name</a>);</div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160; }</div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160; json_builder_end_object(b);</div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160; r = json_builder_get_root(b);</div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160; g_object_unref(b);</div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160;</div><div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160; <span class="keywordflow">return</span> r;</div><div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160;}</div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160;</div><div class="line"><a name="l00745"></a><span class="lineno"><a class="line" href="remmina__stats_8c.html#af5a6dc18fe855a6c80fe1dea454ef4f6"> 745</a></span>&#160;JsonNode *<a class="code" href="remmina__stats_8c.html#af5a6dc18fe855a6c80fe1dea454ef4f6">remmina_stats_get_primary_password_status</a>()</div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160;{</div><div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00748"></a><span class="lineno"> 748</span>&#160;</div><div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160; JsonBuilder *b;</div><div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160; JsonNode *r;</div><div class="line"><a name="l00751"></a><span class="lineno"> 751</span>&#160;</div><div class="line"><a name="l00752"></a><span class="lineno"> 752</span>&#160; b = json_builder_new();</div><div class="line"><a name="l00753"></a><span class="lineno"> 753</span>&#160; json_builder_begin_object(b);</div><div class="line"><a name="l00754"></a><span class="lineno"> 754</span>&#160;</div><div class="line"><a name="l00755"></a><span class="lineno"> 755</span>&#160; json_builder_set_member_name(b, <span class="stringliteral">&quot;primary_password_status&quot;</span>);</div><div class="line"><a name="l00756"></a><span class="lineno"> 756</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="remmina__pref_8c.html#a9a8d02227eb703bccc3f9296a5d89d6f">remmina_pref_get_boolean</a>(<span class="stringliteral">&quot;use_primary_password&quot;</span>)) {</div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span>&#160; json_builder_add_string_value(b, <span class="stringliteral">&quot;ON&quot;</span>);</div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160; json_builder_add_string_value(b, <span class="stringliteral">&quot;OFF&quot;</span>);</div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160; }</div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160;</div><div class="line"><a name="l00762"></a><span class="lineno"> 762</span>&#160; json_builder_end_object(b);</div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160; r = json_builder_get_root(b);</div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span>&#160; g_object_unref(b);</div><div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160;</div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160; <span class="keywordflow">return</span> r;</div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160;}</div><div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160;</div><div class="line"><a name="l00775"></a><span class="lineno"><a class="line" href="remmina__stats_8c.html#a56956b7db0c631121151b19b920176da"> 775</a></span>&#160;JsonNode *<a class="code" href="remmina__stats_8c.html#a56956b7db0c631121151b19b920176da">remmina_stats_get_kiosk_mode</a>()</div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160;{</div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160;</div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160; JsonBuilder *b;</div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160; JsonNode *r;</div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span>&#160;</div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span>&#160; b = json_builder_new();</div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160; json_builder_begin_object(b);</div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span>&#160;</div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span>&#160; json_builder_set_member_name(b, <span class="stringliteral">&quot;kiosk_status&quot;</span>);</div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="remmina_8c.html#ab4a9a67c5372ff07b71d0558679ab7ae">kioskmode</a> &amp;&amp; <a class="code" href="remmina_8c.html#ab4a9a67c5372ff07b71d0558679ab7ae">kioskmode</a> == FALSE) {</div><div class="line"><a name="l00787"></a><span class="lineno"> 787</span>&#160; json_builder_add_string_value(b, <span class="stringliteral">&quot;OFF&quot;</span>);</div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160; }<span class="keywordflow">else</span> {</div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160; json_builder_add_string_value(b, <span class="stringliteral">&quot;ON&quot;</span>);</div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span>&#160; }</div><div class="line"><a name="l00791"></a><span class="lineno"> 791</span>&#160;</div><div class="line"><a name="l00792"></a><span class="lineno"> 792</span>&#160; json_builder_end_object(b);</div><div class="line"><a name="l00793"></a><span class="lineno"> 793</span>&#160; r = json_builder_get_root(b);</div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160; g_object_unref(b);</div><div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160;</div><div class="line"><a name="l00796"></a><span class="lineno"> 796</span>&#160; <span class="keywordflow">return</span> r;</div><div class="line"><a name="l00797"></a><span class="lineno"> 797</span>&#160;}</div><div class="line"><a name="l00798"></a><span class="lineno"> 798</span>&#160;</div><div class="line"><a name="l00806"></a><span class="lineno"><a class="line" href="remmina__stats_8h.html#a7a1c9ab1abc1fdf78239d11b802843ae"> 806</a></span>&#160;JsonNode *<a class="code" href="remmina__stats_8c.html#a7398b36347e3621772776c466b565641">remmina_stats_get_all</a>()</div><div class="line"><a name="l00807"></a><span class="lineno"> 807</span>&#160;{</div><div class="line"><a name="l00808"></a><span class="lineno"> 808</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00809"></a><span class="lineno"> 809</span>&#160; JsonBuilder *b;</div><div class="line"><a name="l00810"></a><span class="lineno"> 810</span>&#160; JsonNode *n;</div><div class="line"><a name="l00811"></a><span class="lineno"> 811</span>&#160;</div><div class="line"><a name="l00812"></a><span class="lineno"> 812</span>&#160; b = json_builder_new();</div><div class="line"><a name="l00813"></a><span class="lineno"> 813</span>&#160; json_builder_begin_object(b);</div><div class="line"><a name="l00814"></a><span class="lineno"> 814</span>&#160;</div><div class="line"><a name="l00815"></a><span class="lineno"> 815</span>&#160; n = <a class="code" href="remmina__stats_8c.html#ab248458a3face2634bab909ffeb8291e">remmina_stats_get_version</a>();</div><div class="line"><a name="l00816"></a><span class="lineno"> 816</span>&#160; json_builder_set_member_name(b, <span class="stringliteral">&quot;REMMINAVERSION&quot;</span>);</div><div class="line"><a name="l00817"></a><span class="lineno"> 817</span>&#160; json_builder_add_value(b, n);</div><div class="line"><a name="l00818"></a><span class="lineno"> 818</span>&#160;</div><div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160; n = <a class="code" href="remmina__stats_8c.html#a43133d5e00f481d315ef0d58cb52e70a">remmina_stats_get_os_info</a>();</div><div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160; json_builder_set_member_name(b, <span class="stringliteral">&quot;SYSTEM&quot;</span>);</div><div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160; json_builder_add_value(b, n);</div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160;</div><div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160; n = <a class="code" href="remmina__stats_8c.html#a42f0554bf8eacb253a023d601cd59648">remmina_stats_get_user_env</a>();</div><div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160; json_builder_set_member_name(b, <span class="stringliteral">&quot;ENVIRONMENT&quot;</span>);</div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160; json_builder_add_value(b, n);</div><div class="line"><a name="l00830"></a><span class="lineno"> 830</span>&#160;</div><div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160; n = <a class="code" href="remmina__stats_8c.html#aed3a8dd3e01a05d96d6cf3625bb28731">remmina_stats_get_gtk_version</a>();</div><div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160; json_builder_set_member_name(b, <span class="stringliteral">&quot;GTKVERSION&quot;</span>);</div><div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160; json_builder_add_value(b, n);</div><div class="line"><a name="l00834"></a><span class="lineno"> 834</span>&#160;</div><div class="line"><a name="l00835"></a><span class="lineno"> 835</span>&#160; n = <a class="code" href="remmina__stats_8c.html#a73fbf1064af209f1f7272d737168971c">remmina_stats_get_gtk_backend</a>();</div><div class="line"><a name="l00836"></a><span class="lineno"> 836</span>&#160; json_builder_set_member_name(b, <span class="stringliteral">&quot;GTKBACKEND&quot;</span>);</div><div class="line"><a name="l00837"></a><span class="lineno"> 837</span>&#160; json_builder_add_value(b, n);</div><div class="line"><a name="l00838"></a><span class="lineno"> 838</span>&#160;</div><div class="line"><a name="l00839"></a><span class="lineno"> 839</span>&#160; n = <a class="code" href="remmina__stats_8c.html#ae596da7901fb3b45b7290a1d70b3ea3a">remmina_stats_get_wm_name</a>();</div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span>&#160; json_builder_set_member_name(b, <span class="stringliteral">&quot;WINDOWMANAGER&quot;</span>);</div><div class="line"><a name="l00841"></a><span class="lineno"> 841</span>&#160; json_builder_add_value(b, n);</div><div class="line"><a name="l00842"></a><span class="lineno"> 842</span>&#160;</div><div class="line"><a name="l00843"></a><span class="lineno"> 843</span>&#160; n = <a class="code" href="remmina__stats_8c.html#aee2ea5acceb2fbc3aa4ff21d136c5734">remmina_stats_get_indicator</a>();</div><div class="line"><a name="l00844"></a><span class="lineno"> 844</span>&#160; json_builder_set_member_name(b, <span class="stringliteral">&quot;APPINDICATOR&quot;</span>);</div><div class="line"><a name="l00845"></a><span class="lineno"> 845</span>&#160; json_builder_add_value(b, n);</div><div class="line"><a name="l00846"></a><span class="lineno"> 846</span>&#160;</div><div class="line"><a name="l00847"></a><span class="lineno"> 847</span>&#160; n = <a class="code" href="remmina__stats_8c.html#a65500d6b5d93cc7e3fc3d72329ff3847">remmina_stats_get_profiles</a>();</div><div class="line"><a name="l00848"></a><span class="lineno"> 848</span>&#160; json_builder_set_member_name(b, <span class="stringliteral">&quot;PROFILES&quot;</span>);</div><div class="line"><a name="l00849"></a><span class="lineno"> 849</span>&#160; json_builder_add_value(b, n);</div><div class="line"><a name="l00850"></a><span class="lineno"> 850</span>&#160;</div><div class="line"><a name="l00851"></a><span class="lineno"> 851</span>&#160; n = <a class="code" href="remmina__stats_8c.html#afe9ad8b63938e3486cf09ebbbe2e549c">remmina_stats_get_secret_plugin</a>();</div><div class="line"><a name="l00852"></a><span class="lineno"> 852</span>&#160; json_builder_set_member_name(b, <span class="stringliteral">&quot;ACTIVESECRETPLUGIN&quot;</span>);</div><div class="line"><a name="l00853"></a><span class="lineno"> 853</span>&#160; json_builder_add_value(b, n);</div><div class="line"><a name="l00854"></a><span class="lineno"> 854</span>&#160;</div><div class="line"><a name="l00855"></a><span class="lineno"> 855</span>&#160; n = <a class="code" href="remmina__stats_8c.html#af5a6dc18fe855a6c80fe1dea454ef4f6">remmina_stats_get_primary_password_status</a>();</div><div class="line"><a name="l00856"></a><span class="lineno"> 856</span>&#160; json_builder_set_member_name(b, <span class="stringliteral">&quot;HASPRIMARYPASSWORD&quot;</span>);</div><div class="line"><a name="l00857"></a><span class="lineno"> 857</span>&#160; json_builder_add_value(b, n);</div><div class="line"><a name="l00858"></a><span class="lineno"> 858</span>&#160;</div><div class="line"><a name="l00859"></a><span class="lineno"> 859</span>&#160; n = <a class="code" href="remmina__stats_8c.html#a56956b7db0c631121151b19b920176da">remmina_stats_get_kiosk_mode</a>();</div><div class="line"><a name="l00860"></a><span class="lineno"> 860</span>&#160; json_builder_set_member_name(b, <span class="stringliteral">&quot;KIOSK&quot;</span>);</div><div class="line"><a name="l00861"></a><span class="lineno"> 861</span>&#160; json_builder_add_value(b, n);</div><div class="line"><a name="l00862"></a><span class="lineno"> 862</span>&#160;</div><div class="line"><a name="l00863"></a><span class="lineno"> 863</span>&#160;</div><div class="line"><a name="l00864"></a><span class="lineno"> 864</span>&#160; json_builder_end_object(b);</div><div class="line"><a name="l00865"></a><span class="lineno"> 865</span>&#160; n = json_builder_get_root(b);</div><div class="line"><a name="l00866"></a><span class="lineno"> 866</span>&#160; g_object_unref(b);</div><div class="line"><a name="l00867"></a><span class="lineno"> 867</span>&#160;</div><div class="line"><a name="l00868"></a><span class="lineno"> 868</span>&#160; <span class="keywordflow">return</span> n;</div><div class="line"><a name="l00869"></a><span class="lineno"> 869</span>&#160;</div><div class="line"><a name="l00870"></a><span class="lineno"> 870</span>&#160;}</div><div class="ttc" id="remmina__plugin__manager_8h_html"><div class="ttname"><a href="remmina__plugin__manager_8h.html">remmina_plugin_manager.h</a></div></div>
-<div class="ttc" id="remmina__file_8c_html_a8eb1b213d9d08c6ad13683ce05f4355e"><div class="ttname"><a href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a></div><div class="ttdeci">const gchar * remmina_file_get_string(RemminaFile *remminafile, const gchar *setting)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00507">remmina_file.c:507</a></div></div>
+<div class="ttc" id="remmina__file_8c_html_a8eb1b213d9d08c6ad13683ce05f4355e"><div class="ttname"><a href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a></div><div class="ttdeci">const gchar * remmina_file_get_string(RemminaFile *remminafile, const gchar *setting)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00516">remmina_file.c:516</a></div></div>
<div class="ttc" id="struct_profiles_data_html_a7d3134f43d61603be7b021e62305633a"><div class="ttname"><a href="struct_profiles_data.html#a7d3134f43d61603be7b021e62305633a">ProfilesData::protocol</a></div><div class="ttdeci">const gchar * protocol</div><div class="ttdef"><b>Definition:</b> <a href="remmina__stats_8c_source.html#l00167">remmina_stats.c:167</a></div></div>
<div class="ttc" id="remmina__file__manager_8h_html"><div class="ttname"><a href="remmina__file__manager_8h.html">remmina_file_manager.h</a></div></div>
<div class="ttc" id="types_8h_html_a112d7cc6c755209cabb68cf2a62ad515"><div class="ttname"><a href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a></div><div class="ttdeci">typedefG_BEGIN_DECLS struct _RemminaFile RemminaFile</div><div class="ttdef"><b>Definition:</b> <a href="types_8h_source.html#l00044">types.h:44</a></div></div>